欢迎来到天天文库
浏览记录
ID:57906957
大小:38.50 KB
页数:5页
时间:2020-09-02
《代码命名规则.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编程初学者总是把大量的时间用在学习编程语言,语法,技巧和编程工具的使用上。他们认为,如果掌握了这些技术技巧,他们就能成为不错的程序员。然而,计算机编程的目的并不是关于精通这些技术、工具的,它是关于针对特定领域里的特定问题创造出相应的解决方案,程序员通过相互合作来实现这些。所以,很重要的一点,你需要能精确的用代码表达出你的思想,让其他人通过代码能明白你的意图。让我们先看看编程大师RobertC.Martin的杰作《CleanCode》里的一句话:“注释的目的是为了弥补代码自身在表达上的不足。”这句话可以简单的理解为如果你的代码需
2、要注释,最有可能是你的代码写的很烂。同样,如果在没有注释的情况下你无法用代码完整的表达你对一个问题或一个算法的思路,那这就是一个失败的信号。最终,这意味着你需要用注释来阐明一部分的思想,而这部分在代码里是看不出来的。好的代码能够让任何人在不需要任何注释的情况下看懂。好的编码风格能将所有有助于理解这个问题的所有信息都蕴含在代码里。在编程理论中,有一个概念叫做“自我描述的源代码”。对于一段代码,一种常见的自我描述机制是遵循某种非严格定义的变量、方法、对象命名规则。这样做的主要作用就是使源代码更易读易懂。所以,也就更容易维护和扩展。
3、这篇文章里,我将举出一些例子,说明什么是“不好的代码”,什么是“清楚的代码”命名要能揭示意图如何命名,在编程中这永远都是个老大难问题。有些程序员喜欢简化、缩短或加密名称,使得只有他们自己能懂。下面让我们看一些例子:不好的代码:intd;//天数intds;intdsm;intfaid;“d”可以表示任何东西。作者使用注释来表明他的意图,却没有选择用代码来表示。而“faid”很容易导致误解为ID。清楚的代码:intelapsedTimeInDays;intdaysSinceCreation;intdaysSinceModific
4、ation;intfileAgeInDays;命名时避免含义引起误解的信息错误的信息比没有信息更糟糕。有些程序员喜欢“隐藏”一些重要信息,有时候他们也会写出一些让人误解的代码。不好的代码:Customer[]customerList;TabletheTable;变量“customerList”其实不是个list。它是一个普通的array(或客户集合)。除此之外,“theTable”是一个Table类型的对象(你可以用IDE容易的发现它的类型),“the”这个词是个不必要的干扰。清楚的代码:Customer[]customers
5、;Tablecustomers;命名要有合适的长度在高级编程语言中,变量名的长度通常不太限制。变量名几乎可以任何长度。虽然如此,这也可能使代码变得闹心。不好的代码:vartheCustomersListWithAllCustomersIncludedWithoutFilter;varlist;好的名称应该只含有必要的词汇来表达一个概念。任何不必要的字词都会使名称变长、难于理解。名称越短越好,前提是能在上下文中表达完整的意思(下订单这个场景中,“customersInOrder”要比“list”好)。清楚的代码:varallCu
6、stomers;varcustomersInOrder;命名时编码规范保持一致,让规范帮助理解代码所有的编程技术(语言)都有自己的“风格”,叫做编码规范。程序员应该在写代码时遵循这些习惯,因为其他的程序员也知道这些,并按这种风格编写。下面我们看一个没有明显规范的不好的代码例子。下面的这段代码没有遵循很好的已知的“编码规范”(比如PascalCase,camelCase,Hungarian规范)。更糟糕的是,这有一个毫无意义的bool变量“change”。这是个动词(用来描述动作),但这里的bool值是来描述一个状态,所以,这里
7、应该用一个形容词更合适。不好的代码:constintmaxcount=1boolchange=truepublicinterfaceRepositoryprivatestringNAMEpublicclasspersonaddressvoidgetallorders()一段代码,只看它的一部分,你就应该直接明白它是什么类型,只需要看它的命名方法。例如:你看到了“_name”,你就能知道它是个私有变量。你应该在任何地方都利用这种表示方法,没有例外情况。清楚的代码:constintMAXCOUNT=1boolisChanged=t
8、ruepublicinterfaceIRepositoryprivatestring_namepublicclassPersonAddressvoidGetAllOrders()命名时相同的概念用相同的词表达定义概念很难。在软件开发过程中,很多时间都花在分析业务场景、思考正确
此文档下载收益归作者所有