欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

clean code 第三章 函数

程序员文章站 2022-06-15 19:36:13
...

3.1 短小

记录:

  1. 每个函数只做一件事,每个函数依序把你带到下一个函数中。
  2. if/else/while这样的语句中,代码块应该只有一行
  3. 函数的缩进不能多于2层

例1:看不懂版
clean code 第三章 函数

例2:能看懂版
clean code 第三章 函数

例3:简洁版
clean code 第三章 函数

3.2 只做一件事
记录

  1. 函数应该只做一件事,且做好这件事。
  2. 判断一个函数只做一件事的方法是:该函数是否可以再差分出其他不同抽象层的函数

3.3 每个函数一个抽象层
一个函数中包含多个抽象层,往往让人迷惑。读者无法判断某个表达式是细节还是基础概念。

3.4 switch语句
switch一般要执行N个任务,和前面说的一个函数只干一件事冲突,代码往往较长,并且switch的可扩展性差,一般用多态来替代。

3.5 使用描述性的的名称
将testableHtml改为SetupTeardownIncluder。
别怕长名称,长而具有描述性的名称,要比短而令人费解的名称好。

3.6 函数参数
函数参数的数量遵循“能少就少,最好没有”的原则。多个参数对于函数的阅读很不便。

3.8 将指令和询问分开
就是遵循函数只干一件事,而指令和询问是两件事情,不能放在一个函数,这样阅读起来会产生歧义。
函数要么做什么事,要么回答什么事,二者不可兼得!
如:定义set函数,功能是判断name是否为张三,不是则将name修改为张三,并返回true;是则返回false。

bool set(string attribute, string value){
	if(attribute == value){
		return false;
	}else{
		attribute = value;
		return true;
	}
}

但是在读代码的时候,这个set的意思并不明确(不能被直接读出来),因为set内部执行了两个任务,一是测试name的值和value是否相等,二是对name进行修改,任务二其实是一个测试的分支

if(set("name", "张三")){

}
相关标签: 代码规范