这一章作者从命名开始讲起,
首先既然要命名自然就要名副其实。当你为你的函数取名为getThem时,你能指望别人从这个名称中获得什么信息吗?
其次,在命名的过程中,应该尽量避免添加类型变量字符串(即List,String等等),比如当你为包含账号的容器取名为accountList时,最好的是将其改为accountGroup或者是bunchOfAccounts都会比accountList好。
第三,作者认为要为变量做有意义的区分,如果你将你的两个变量分别命名为a1和a2,那么谁能分辨出这两个变量之间有什么区别呢?用作者的话来说就是,如果作为一个程序员,你“只是为满足编译器或解释器的需要而写代码,那么你就会制造麻烦”。
其次,你要为变量命那些你能读得出来的名,打个比方,一家公司写了一个生成日期的函数,并将其命名为genymghms(???黑人问号脸),这也太难懂了一点吧。
第五,虽然在代码中我们一般很少用到单个字母名称和数字常量,但正是因为如此,要从那么多代码中把它们找到并修改就变成了非常困难的一件事情,所以我们可以用一些“可搜索的名称”去代替它们,比如MAX_CLASSES_PER_STUDENT就比7好找多了,正所谓“长名称胜于短名称,搜得到的名称胜于用自造编码代写就的名称”。
接着就是我们是不是喜欢在一些变量名面前加一些前缀,比如m,像是JS中默认会在类的内部函数名称前加一个“_”表示是类自己内部的函数,不作为对象的函数提供给其他类使用。针对这种现象的解决办法就是应当把类和函数做得足够小,消除对成员前缀的需要。
第七,当我们重载构造器的时候,使用描述了参数的静态工厂方法名是更好的做法。即(添加一段代码)。
Complex fulcrumPoint = Complex.FromRealNumber(23.0);
通常好于
Complex fulcrumPoint = new Complex(23.0);
最后的最后,作者认为每个职能/概念就对应一个单词就好了,比如代码中如果既存在Manager又存在Controller就会让人感觉困惑。要记住的是“一以贯之的命名简直就是天降福音”。