1. 函数要短小
if,else,while等语句等,其中的代码块应该只有一行:一个调用函数。该函数的名字需要有较强的说明性,从而增加了文档上的价值。
这也意味着函数不应该大到足以容纳嵌套结构。
2. 只做一件事
一个函数只能做一件事情,并做好一件事情。
如果一个函数能够被拆开,那么这个函数就不只做了一件事情。
只做一件事的函数是不能被合理地拆分成多个部分的。
3. 一个函数对应一个抽象级
只做一件事的函数,其中的语句都要在同一抽象层级上。
函数间要形成自顶向下的顺序,我们就能遵从着抽象层级往下读了。
4. 使用有描述性的名称
好的名称应该能够描述这个函数要干什么事情,达到函数目的方式的改变不会导致函数名称的改变。
名称的自描述性省去了注释的必要。
5. 函数参数
理想的参数的数量是0,越少越好。输出参数名要能让人一目了然。
多元函数可以通过结构体或者类将多元转化为一元。
6. 副作用
为了避免因为函数名而被误用,函数名称可以通过动词和参数关键字的配合,更好地解释函数的意图。同时保证一个函数只做一件事。
7. 分隔指令和询问
函数要么做什么事,要么回答什么事;这两件事情应该要分开,防止混淆。
8. 抽离异常控制模块
它会搞乱逻辑,把错误流程和正常流程混为一谈。同时,处理错误就是一件事。
9. 代码不能重复自己
重复是罪恶的根源
10. 结构化编程
一个函数很小的时候,多几个return, break 和continue是没有问题的。
但是一旦函数变大,保持一个出口和一个入口很有必要。
提示:如何写出这样的函数呢?
没有人能一下就安装规则写出这样的函数。
写函数一开始都是冗长而复杂的,通过不断的打磨,安装规则,调整出我们需要的最终的函数。
写程序,就是在讲故事。
网友评论