写出整洁代码的原因:第一:你是个程序员;第二:你想成为更好的程序员。
细节之中自有天地,整洁成就卓越代码。
对于代码整洁性缺乏足够重视的开发者,是职业素养与基本功的双重缺陷。
稍后等于永不。
花时间保持代码整洁不但有关效率,还有关生存。
制造混乱无助于赶上期限。混乱只会立刻拖慢你,叫你错过期限。赶上期限的唯一方法---------做得快的唯一方法-----------就是始终尽可能保持代码整洁。
不要重复代码,只做一件事,表达力,小规模抽象。
消除重复和提高表达力让代码更加整洁。
让营地比你来时更干净
一、有意义的命名
1、名副其实
如:int d; //消逝的时间,以日记
应选择指明了计量对象和计量单位的名称
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileaAgeInDays;
2、避免误导
应避免使用与本意相悖的词。如hp,aix等都不应该用作变量名,因为是java平台的专有名称。
3、做有意义的区分
a1、a2,.......aN这样的名称纯属误导------------完全没有提供正确的信息,没有提供导向作者意图的线索。
如果缺少明确的约定,变量moneyAmount与money没区别,customerInfo与customer没区别。要区分名称,就要以读者能鉴别不同之处的方式来区分。
4、使用读得出来的名称
人类长于记忆和使用单词,命名应恰当地使用英语词。
5、使用可搜索的名称。
单字母名称和数字常量有个问题,就是很难在一大篇文字中找出来。长名称胜于短名称,搜得到的名称胜于用自造编码代写的名称。名称长短应与其作用域大小相对应。
6、避免使用编码
把类型和作用域编进名称里面,只是增加了解码的负担。
7、匈牙利语标记法
Fortran语言要求首字母体现出类型,BASIC早期版本只允许使用一个字母加上一位数字。匈牙利标记法将这种态势愈演愈烈。现在编译器记得并强制使用类型,没有必要在名称中加入数据类型。
8、成员前缀
不必用m_前缀来标明成员变量。
9、接口和实现
字母I被用到接口名,就是废话。
10、避免思维映射
不让读者在脑中把你的名称翻译为他们熟知的名称。如循环变量名可以命名为i,j,或k,但是千万别用字母l。聪明程序员与专业程序员之间的区别在于,专业程序员了解,明确是王道。
11、类名
类名和对象名应该是名词或名词短语,如Customer、AddressParser,而不应该是动词。
12、方法名
方法名应当是动词或动词短语。属性访问器、修改器和断言应该根据其值命名,并依javabean标准加上get、set和is前缀。
13、别扮可爱
在代码中经常体现为使用俗语或俚语。如别用whack()来表示kill()。whack:美俚,劈砍。
14、每个概念对应一个词
在多个类中使用fetch、retrieve和get来为同种方法命名,就记分不清是哪个类中的哪个方法。还有,在同一队代码中有controller,又有manager,还有driver就会令人困惑。DeviceManager与ProtocolManager又有什么根本性的区别?为什么不全用controllers或managers?他们都是driver吗?这种名称让人觉得这两个对象是不同类型的,也分属不同的类。
15、别用双关语
同一术语用于不同概念,基本上就是双关语了。如,在多个类中都有add方法,该方法通过增加或连接两个现存值来获得新值。假设写个心累,该类中有一个方法,把单个参数放到群集(collection)中。改把这个方法叫做add吗?这样做貌似和其他add方法保持了一致,但是实际上语义却不同,应该用insert或append之类的词来命名才对。把该方法命名为add,就是双关语了。
16、使用计算机领域名称。
记住只有程序员才会读你的代码。所以尽管用那些计算机科学的术语、算法名、模式名、数学术语吧。依据问题所涉及的领域来命名可不算是聪明的做法。
17、使用源自所涉及问题领域的名称
如果不能用程序员所熟悉的术语来给手头的工作命名,就采用从所涉问题领域而来的名称吧。至少,负责维护代码的程序员就能去请教领域专家了。
18、添加有意义的语境
设想你有名为firstName、lastName、street、houseNumber、city、state和zipcode的变量,搁一块,很明确构成了一个地址。但是如果只是孤零的一个state变量呢?你会理所当然推断那是某个地址的一部分吗?可以添加前缀addrFirstName、addrLastName、addrState等,以此提供语境。
19、不要添加没有用的语境
只要名称足够清楚,就要比长名称好。别给名称添加不必要的语境。如在名为Gas Station Deluxe的应用中,给每个类都添加GSD前缀就不好。搜索时,会显示系统中全部类的列表。