如何写好函数
6.函数参数
最理想的参数数量是0,即无参数变量,其次是单参数函数,再次是双参数变量,应尽量避免三参数函数,尽量不要使用三个以上参数变量。
7.无副作用
虽然函数只做一件事,但还是会做其他被藏起来的事,尤其是当函数名起的并不合适时,会让我们忽略函数的一些其他作用,大多为副作用。在面向对象中应避免使用输出函数。
8.分隔指令与询问
函数要么做什么事,要么回答什么事,但二者不可得兼。函数应该修改某对象的状态或是返回该对象的有关信息。
9.使用异常替代返回错误码
Try/catch代码块搞乱了代码结构,把错误处理与正常流程混为一谈。最好把try和catch代码块的主体部分抽离出来,另外形成函数。
函数应该只做一件事,错误处理就是一件事,处理错误的函数不应该做其他事。
使用异常替代错误码,新异常就可以从异常类派生出来,无需重新编译或重新部署。
10.别重复自己
重复可能是软件中一切邪恶的根源。许多原则与实践规则都是为控制与消除重复而创建。面向对象是如何将代码集中到基类,从而避免冗余。
11.结构化编程
Edsger Dijkastra的结构化编程规则:每个函数,函数中的每个代码块都应该有一个入口,一个出口。遵循这些规则,意味着在每个函数中只该有一个return语句,循环中不能有break和continue语句,而且永远不能有任何goto语句。对于小函数来说,意义不大,对于大函数来说,遵循这类规则会有明显的好处。
12.如何写出这样的函数
刚开始写函数时,想到什么就写什么,一开始都冗余复杂,肯定有着这样或者那样的弊端,然后打磨这个代码,分解函数,修改名称,消除重复等,最后按照本书列出的规则,组装好这些函数。
13.小结
编程是语言设计的艺术,函数是语言的动词,类是名词。真正的目的在于讲述系统的故事,编写的函数必须干净利落地拼装到一起,形成一种精确而清晰的语句,帮助你讲故事。
网友评论