第七章 建立高质量子程序算法
A.基本概念函数
子程序:为实现一个特定目的而编写的一个可被调用的方法或者过程。spa
B.内容设计
1.建立子程序的好处:orm
1)下降复杂度 对象
2)引入易懂的抽象,简化复杂的布尔判断接口
经过子程序来隐藏一些信息,就不用去考虑这些信息的细节,例如:对某段只返回布尔类型值得代码进行封装,使其成为一个良好命名的函数或方法,则在须要这段代码的地方直接调用该函数便可,良好的命名可使该子程序的做用一目了然,同时又能够避免去理解代码的细节,而只关心代码的功能。例如:执行一项操做前,须要对用户的合法性进行判断,则能够将该判断代码封装为函数。input
3)避免代码重复it
4)提升可移植性io
程序中可能有多个地方要用到相同的代码段,此时就能够将这些重复出现的代码段封装为子程序,在须要的地方进行调用,同时,若是须要对封装的代码段中的某些数据或者算法进行改变,则只须要在封装的函数体内部进行一次更改便可,而无需在多个地方进行重复更改,作到一改皆改。
在为不一样平台或系统编写代码时,必不可少地会遇到一些平台相关的部分,例如某些组件或API,用子程序来隔离(包裹)这些部分,则能够在未来的移植工做中节省时间。
2.子程序设计原则
通常的原则就是提升子程序的内聚性,目标是一个子程序只把一件事情作好。(功能内聚性)
3.良好的子程序命名原则
良好的命名能够提升程序的可维护性,可以清晰地描述子程序所作的一切
1)命名应当描述子程序所作的全部事情。
2)避免使用无心义的,模糊不清的动词。例如ProcessInput()
3)不要仅经过数字来造成不一样的子程序名称(形如XXX1,XXX2)。
4)函数和过程
函数具备返回值,所以,对于函数的命名,应当可以反映出其返回值,例如cos(),customerID.next()等等
过程一般是针对某个对象进行一种操做,所以对于过程的命名,一般应当是语气强烈的动词+宾语的形式,该命名可以反映出这个过程所作的操做。
5)使用对仗词。 使用对仗的命名使代码具备更好的可读性。例如OpenFile() 和CloseFile()
4.子程序的参数使用
1)按照 输入-修改-输出的顺序排列参数。
排列接口参数时,首先列出仅做为输入用途的参数,而后是即做为输入,又做为输出用途的参数,最后是仅做为输出用途的参数。
2)若是几个子程序使用相似的一些参数,则应该让这些参数的排列顺序在这几个子程序中保持一致。 例如:print($name,$path) ,printf($name,$path,$format)
3)使用全部参数。不传递用不到的参数。
4)把状态和出错变量放在最后。
5)不要把子程序的参数做为工做变量,应该使用局部变量。
将子程序的参数做为工做变量可能会改变该参数的值,例以下面的代码:
function Sample($inputVal)
{
$intputVal = $inputVal * 3;
return $inputVal; //此处的inputVal的值已经改变了
}
好的作法应当是使用临时工做变量:
function Sample($inputVal)
{
$temp = $inputVal;
$temp = $temp * 3;
return $temp;
}
6)把参数个数限定在7个之内。