如何高效编码? 使用有意义的命名

编码中随处可见命名。我们给变量、函数、参数、类和包命名;我们jar文件命名。我们命名,命名,不断命名,既然有怎么多命名要做,不妨就做好它。

 一、名副其实

名副其实说起来很简单,但我得强调,这很严肃。选个好名字要花时间,但是后面省下来的时间要比花掉得多。

注意命名,而且一旦发现有更好的命名,就换掉旧的。这么做,读你代码的人(包括你自己)都会更开心。

变量、方法、类的命名应该告诉你,它为什么存在,它做什么事,应该怎么用。

如果名称还需要用注释来说明,那就不算名副其实了。

比如下面几个

String s = ""; //要执行的SQL

名称s什么也没说明,为什么不改成String sql = "";呢

Date d; //开始时间

开始时间完全可以叫做startTime

List<Book> list = new ArrayList<>(); //返回的图书集合

它可以叫做books,说明这是一个存book的集合。或者叫做respList,表明他是要返回的集合。

二、避免误导

我们必须避免留下掩藏代码本意的错误线索,避免使用与本意相悖的词。

别用accountList来命名一组账号,除非它真的是List类型。如果它不是一个List类型,就会引起错误的判断,所以我们用accountGroup或者直接用accounts要更好一些。

我们还要提防使用跟其他命名很相似的名称,比如selectProjectForErrorsOfStringByName和selectProjectForNormalsOfStringByName,想区分这两个得花多长时间呢,这两个名字外形太相似了。

还有就是要避免0和O混用,1和l和I混用。

三、做有意义的区分

如果我们只是为满足编译器或IDE的需求而写代码,就会制造麻烦。例如,因为同一作用域内两个变量不能重名,你可能会随手改掉其中一个的名称。有时候干脆用错误的拼写充数,甚至直接在后面加个1。

废话是另一种没意义的区分,假如你有一个ProjectInfo类,又有一个ProjectData类。那这两个虽然名称不同,意思却没什么区别。

废话都是冗余,variable一词永远不应该出现在变量名中,table一词永远不应该出现在表名中。NameString会比Name好吗,难道Name会是一个浮点数?或者说有个名为Student类,又有一个StudentObject类,区别何在?

所以说,如果缺少明确约定,customerInfo与customer没区别,theMessage与message没区别。

四、使用读得出来的名称

有一个生成日期的方法,生成格式是年月日时分秒,叫做genymdhms。很明显这读不出来,除非你按你自己的理解来读,读出来了别人也不一定知道你说的是这个方法。

五、使用可搜索的名称

名称长短应该与其作用域大小相对应,若变量或常量可能在代码中多处使用,就应该赋予其便于搜索的名称。

比如一个只有一两行代码的for循环,就可以直接使用fori

如果是在代码中多处使用的变量或常量,就应该起一个容易发现的名称。这也是为什么常量推荐使用大写用下划线分隔。比如一个表示用户名称错误的字符串,USER_INPUT_ERROR肯定要比uie更容易发现一些。

六、类名使用名词,方法名使用动词

类名和对象名应该是名词或者名词短语,比如Customer、Student、Project、StudentInfo,但是避免使用Data、Info、Detail这样的类名。

方法名应该是动词或动词短语,比如save、findUsers、deletePage等。又或者Javabean里面的getset方法。

七、每个概念对应一个词

给每个概念选一个词,比且一以贯之。用同样的风格来给每个类中的同种方法命名。

比如同一个类中查找数据的方法,find和select和get和query有什么区别。

八、别用双关语

不要把同一单词用于不同目的,同一术语用于不同概念,基本就是双关语了。

比如,在多个类中都有add方法,该方法通过连接两个原值来获得新值。如果现在要写一个新类,类中有一个方法是把单个参数添加到一个集合中,这个方法应该也叫add吗?这样是跟原来的add方法保持一致了,但实际语义却不同。应该用append或者insert之类的来命名。

九、使用解决方案领域的名称

记住,只有程序员才会读你的代码。所以,尽管使用计算机领域的术语来命名。

如果你使用问题所涉及的领域来命名,难道下一个读你代码的人要去跑去问客户每个名称的含义吗?

程序员要做太多技术性的工作,取一个技术性的名称,通常是最靠谱的做法。

如果不能使用我们熟悉的术语来给手头的工作命名,就只能采用所涉问题领域来命名了。与所涉问题领域更贴近的代码,应当使用源自问题领域的名称。

最后,取好名字最难的地方在于需要良好的描述技术和共有文化背景。与其说这是一种技术或管理问题,还不如说是一种教学问题。结果是,这个领域内的许多人都没能学会做得很好。

多数时间我们并不会刻意去记类名和方法名,使用现代IDE都可以对付这些,好让自己集中精力于把代码写的就像词语篇章。

不妨试试上面这些规则,看你的代码可读性是否会有所提升

言到意到,意到言到

おすすめ

転載: blog.csdn.net/qq_41890624/article/details/121313336