阅读笔记07

阅读笔记07--代码整洁之道

1章 整洁代码

我们都写过糟糕的代码,为什么要写糟糕的代码呢?或许是我们想快点完成,或许是我们赶时间。我们可能想着有朝一日再回头清理这些糟糕的代码,但有一个法则叫做:稍后等于永不。

什么是整洁的代码呢?

下面详细介绍Bjarne Stroustrup的描述,其他描述就不一一列出了,在此只记录几个关键点。

我喜欢高效优雅的代码。代码逻辑应当直接了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。

破窗理论

窗户破损了的建筑让人觉得似乎无人照管。于是别人再也不关心。他们放任窗户继续破损。最终自己也参加破坏活动,在外墙上涂鸦,任垃圾堆积。一扇破损的窗户开辟了大厦走向倾颓的道路。

童子军军规

光把代码写好可不够,必须时时保持代码整洁

 

2 有意义的命名

软件中的命名,如变量、函数、参数、类、包、目录和文件名等等,下面介绍简单的几条规则。

1、名副其实,看到名称能很容易理解其用处

2、避免误导,避免留下掩藏代码本意的错误线索,如有些情况下使用字母l数字1,字母o数组0容易混淆

3、做有意义的区分,如下示例复制字符数组,若将参数名改为source和destination就形象很多

public static void copyChars(char a1[], char a2[]) {

    for(int i = 0; i < a1.length; i++) {

        a2[i] = a1[i];

    }

}

4、使用读得出来的名称,如构建数createTree(), 别用一连串的只是自己看起来好像明白的首字母缩写

5、使用可搜索的名称, 名称长短应与其作用域的大小相对应

6、避免使用编码,如匈牙利语标记法、成员前缀(当类足够小时可消除对前缀的需要)

7、避免思维映射, 不应让读者把你的名称翻译为他们熟悉的名称

8、类名和对象名应该是名词或名词短语,方法名应当是动词或动词短语(如属性访问器get、修改器set、断言is)

9、别扮可爱(自己体会)

10、别用双关语

11、添加有意义的语境

 

3 函数

如何写好函数?

3.1 编写技巧

函数要短小,20行封顶最佳,函数要只做一件事

要确保函数只做一件事,函数中的语句都要在同一抽象层级上。通常都是自顶向下读代码:向下规则,如有些函数中引出下一个函数

switch语句选择太多(违反了单一职责原则),可将switch语句封装在抽象工厂底下,不让任何人看到

沃德原则:“如果每个例程都让你感到深合己意,那就是整洁代码”

函数越短小、功能越集中,就越便于取个好名字

3.2 函数参数

最理想的参数数量是零(零参数函数),其次是一(单参数函数),再次是二(双参数函数),应尽量避免三(三参数函数)。有足够特殊的理由才能用三个以上参数

标识参数丑陋不堪。向函数传入布尔值简直就是骇人听闻的做法。

如果函数看来需要两个、三个或三个以上的参数,就说明其中一些参数应该封装为类了

3.3 其他

别重复自己,重复可能是软件中一切邪恶的根源。要高效利用代码,避免代码冗余

结构化编程,每个函数、函数中的每个代码块都应该只有一个入口,一个出口,就是每个函数只该有一个return语句,循环中不能有break或continue语句,而且永永远远不能有任何goto语句。 小函数中结构化规则益处不大,往往在大函数中才会发觉明显的好处

posted @ 2023-12-07 23:17  Men!  阅读(4)  评论(0编辑  收藏  举报