程序设计原则

▶1.程序设计的基本原则

程序设计中哪些因素很重要,不同专家有不同看法,专家们都有直己独到的见解。有人认为程序的清晰性很重要;有人认为程序的执行效率要优先考虑;有人认为程序的正确性是头等大事:有些人认为这些都不重要,如果客户不满意,这一切都没有意义。大部分专家认为,程序设计人员做到以下几点非常重要。
(1)阅读和理解代码。程序员都要具备阅读和理解其他人代码的能力。程序员很少完全从零开始写代码,经常需要在现有程序模块中添加功能。因此,阅读和理解代码是程序员的必备技能。例如,为了便于程序的阅读和理解,Python编码规范PEP8(Python增强建议书)推荐,代码中一行不要超过79个字符,这样可以方便查看代码。一个函数不要超过30行代码,即代码可显示在一个屏幕内。一个类不要超过200行代码,不要超过10个方法。一个模块不要超过500行代码。
(2)保持清晰。程序代码不清晰容易产生Bug,会在后续测试中产生很多问题。要避免将表达式写得过于精练,这会给维护人员带来工作量。大多数情况下,清晰的代码和聪明的代码不可兼得。计算机专家爱德华·基尼斯(Edward Guniness)指出:“你的代码是写给小孩看的,还是写给专家看的?答案是:写给你的观众看。程序员的观众是后续的维护人员,如果不知道具体是谁,那代码就要写得尽量清晰。”
(3)简单并不容易。所有问题都能够找到解决方案,最优雅的解决方案往往是最简单的。但是,简单并不容易,达到简单通常需要做很多的工作。所有人都能用复杂的方法解决问题,但是想让解决方案变得简单可靠,这需要花费很大的精力和付出艰辛的劳动。

▶2.程序模块化设计原则

模块化设计原则就是把一个较大的程序划分为若干子程序,每个子程序是一个独立模块;每个模块又可继续划分为更小的子模块(构件);使软件具有一种层次性结构。
在设计好软件的体系结构后,就已经在宏观上明确了各个模块应具有什么功能,应放在体系结构的哪个位置。我们习惯从功能上划分模块,保持“功能独立”是模块化设计的基本原则。“功能独立”的模块可以降低开发、测试、维护等阶段的代价。但是“功能独立”并不意味模块之间保持绝对的孤立。软件要完成某项任务,需要各个模块相互配合才能实现,因此模块之间需要保持信息交流。
进行程序的模块化设计时,要充分考虑以下原则。

(1)模块可分解性。要控制和降低程序的复杂性,就必须有一套相应的将问题分解成子问题的系统化机制,这种机制是形成程序模块化设计的关键。
(2)模块可组装性。充分利用现有构件组装成新的软件系统,尽可能避免一切从头开始的设计方案。
(3)模块可理解性。程序模块应当容易理解,从而使程序模块易于构造和修改。

(4)模块连续性。在对软件系统进行小的修改时,要尽可能只涉及单独模块的修改,而不要涉及整个软件系统,从而保证修改后的副作用最小化。
(5)模块保护。程序模块出现问题时,要将影响尽可能控制在该程序模块的内部,要使错误引起的副作用最小化。

▶3.软件的复用

复用就是利用现有的东西。一个系统中大部分内容都很成熟,只有小部分内容需要创新,大量的工作可以通过复用来快速实现。程序员应该把大部分时间用在小比例的创新工作上,而把小部分时间用在大比例的成熟工作中,这样才能把工作做得又快又好。例如,截止到2015年,Google公司的代码库容量达到了86TB,存有10亿多个文件,其中有900多万个源代码文件,代码行数高达20亿行,并且每天以4万次提交在增长(注:谷歌有超过3万开发人员)。据估计,全球大约有1000多亿行代码,无数功能被重写了成千上万次,这是极大的思维浪费。程序设计专家的口头禅是:“请不要再发明相同的车轮子了。”
构造新软件系统时,不必每次从零做起,直接使用已有的成熟构件,即可组装(或加以合理修改)成新系统。复用合理地简化了软件开发过程,减少了总开发工作量与维护代价,既降低了软件成本又提高了生产率。另一方面,一些基本构件经过反复使用和验证后,具有较高的质量,由这些基本构件组成的新系统也具有较高的质量。

你可能感兴趣的:(学习)