编程原则

好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系。下面的这些编程原则在过去的这些年里让我成为了一名优秀的程序员,我相信,这些原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强、缺陷更少的程序。

我不要自我重复——这也许是在编程开发这最最基本的一个信条,就是要告诉你不要出现重复的代码。我们很多的编程 结构之所以存在,就是为了帮助我们消除重复(例如,循环语句, 函数,类,等等)。一旦程序里开始有重复现象的出现(例如很长的表达式、一大堆的语句,但 都是为了表达相同的概念),你就需要对代码进行一次新的提炼,抽象。

提炼原则——跟“不要自我重复原则”相关,这一原则是说“程序中任何一段具有功能性的代码在源代码文件中应该唯一的存在。”

保持简单——简单化(避免复杂)永远都应该是你的头等目标。简单的程序让你写起来容易,产生的bug更少,更容易维护修改。

不要开发你目前用不到的功能——除非你真正需要用到它,否则不要轻易加上那些乱七八糟用不到的功能。

用最简单的方法让程序跑起来——在开发时有个非常好的问题你需要问问自己,“怎样才能最简单的让程序跑起来?”这能帮助我们在设计时让程序保持简单。

不要让我动脑子——这实际上是Steve Krug 关于web界面操作的一本书的书名,但也适用于编程。主旨是,程序代码应该让人们花最小的努力就能读懂和理解。如果一段程序对于阅读者来说需要花费太多的努力才能理解,那它很可能需要进一步简化。

开放/封闭原则——程序里的实体项(类,模块,函数等)应该对扩展行为开放,对修改行为关闭。换句话说,不要写允许别人修改的类,应该写能让人们扩展的类。

为维护者写程序——任何值得你编写的程序在将来都是值得你去维护的,也许由你维护,也许由他人。在将来,当你不 得不维护这些程序时,你对这些代码的记忆会基本上跟一个陌生人 一样,所以,你最好还是当成一直在给别人写程序。一个有助于你记住这个原则的办法是“写程 序时时刻记着,这个将来要维护你写的程序的人是一个有严重暴力倾 向,并且知道你住在哪里的精神变态者”。

最少意外原则——最少意外原则通常是使用在用户界面设计上,但这个原则同样适用于编写程序。程序代码应尽可能的不要让阅读者感到意外。也就是说应该遵循编码规范和常见习惯,按照公认的习惯方式进行组织和命名,不符常规的编程动作应该尽可能的避免。

单一职责原则——一个代码组件(例如类或函数)应该只执行单一的预设的任务。

最小化耦合关系——一个代码片段(代码块,函数,类等)应该最小化它对其它代码的依赖。这个目标通过尽可能少的使用共享变量来实现。“低耦合是一个计算机系统结构合理、设计优秀的标志,把它与高聚合特征联合起来,会对可读性和可维护性等重要目标的实现具有重要的意义。”

最大化内聚性——具有相似功能的代码应该放在同一个代码组件里。

隐藏实现细节——隐藏实现细节能最小化你在修改程序组件时产生的对那些使用这个组件的其它程序模块的影响。

笛米特法则(Law of Demeter)——程序组件应该只跟它的直系亲属有关系(例如继承类,内包含的对象,通过参数入口传入的对象等。)

避免过早优化——只有当你的程序没有其它问题,只是比你预期的要慢时,你才能去考虑优化工作。只有当其它工作都 做完后,你才能考虑优化问题,而且你只应该依据经验做法来优 化。“对于小幅度的性能改进都不该考虑,要优化就应该是97%的性能提升:过早优化是一切罪 恶的根源”—Donald Knuth。

代码复用——这不是非常核心的原则,但它跟其它原则一样非常有价值。代码复用能提高程序的可靠性,节省你的开发时间。

职责分离——不同领域的功能应该由完全不同的代码模块来管理,尽量减少这样的模块之间的重叠。

拥抱变化——这是Kent Beck的一本书的副标题,它也是极限编程和敏捷开发方法的基本信条之一。很多的其 它原则都基于此观念:面对变化,欢迎变化。事实上,一些经典的软件工程 原则,例如最小化耦合,就是为了让程序更容易面对变化。不论你是否采用了极限编程 方法,这个原则对你的程序开发都有重要意义。

时间: 2024-10-10 14:52:53

编程原则的相关文章

每个程序员都必须遵守的编程原则

http://www.cocoachina.com/gamedev/misc/2014/0410/8135.html 好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系.下面的这些编程原则在过去的这些年里让我成为了一名优秀的程序员,我相信,这些原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强.缺陷更少的程序. 我不要自我重复 — 这也许是在编程开发这最最基本的一个信条,就是要告诉你不要出现重复的代码.我们很多的编程结构之所以存在,就是为了帮助我们消除重

谷歌大牛 Rob Pike 的 5 个编程原则

谷歌大牛 Rob Pike 的 5 个编程原则 简介: Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人.他是缔造Go语言和Limbo语言的核心人物.下面是他分享给大家他在贝尔实验室工作的一段经历,这段经历改变了他对bug调试的思想认识. 主要工作经历: 我在贝尔实验室工作了很多年.我在计算机科学研究中心,你会很诧异,这是个很小的实验室,但这里却创造了Unix,我来到这里工作的时候

程序员应该遵守的编程原则

好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系.下面的这些编程原则在过去的这些年里让我成为了一名优秀的程序员,我相信,这些原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强.缺陷更少的程序. 我不要自我重复--这也许是在编程开发这最最基本的一个信条,就是要告诉你不要出现重复的代码.我们很多的编程 结构之所以存在,就是为了帮助我们消除重复(例如,循环语句, 函数,类,等等).一旦程序里开始有重复现象的出现(例如很长的表达式.一大堆的语句,但 都是为了表

Rob Pike 的 5 个编程原则

原则 1. 你没有办法预测每个程序的运行时间,瓶颈会出现在出乎意料的地方,所以在分析瓶颈原因之前,先不要盲目猜测. 原则 2. 测试(measure).在测试之前不要优化程序,即使在测试之后也要慎重,除非一部分代码占据绝对比重的运行时间. 原则 3. 花哨的算法在 n 比较小时效率通常比较糟糕,而 n 通常是比较小的,并且这些算法有一个很大的常数.除非你确定 n 在变大,否则不要用花哨的算法.(即便 n 不变大,也要先遵循第 2 个原则.) 原则 4. 相对于朴素的算法来说,花哨的算法更容易出现

如何解读梯形图编程原则?

如何解读梯形图编程原则?plc程序设计方法又是怎样的?与大家一起学习!! 梯形图编程原则与PLC程序设计方法 (1)  输入/输出继电器.内部辅助继电器.定时器.计数器等器件的触点可以多次重复使用,无需复杂的程序结构来减少触点的使用次数. (2) 梯形图每一行都是从左母线开始,线圈终止于右母线.触点不能放在线圈的右边,如下图所示 (3)除步进程序外,任何线圈.定时器.计数器.高级指令等不能直接与左母线相连. (4)在程序中,不允许同一编号的线圈两次输出(双线圈输出).下面的梯形图是不允许的. (

Js编程原则和良好习惯

1.预留退路:在禁止Js或者Js不被支持的情况下,网页还能正常工作.也就是说,虽然某些功能无法使用,但最基本的操作仍能顺利完成. 案例:点击链接,打开一个新窗口.就如本站的登录(弹出一个模拟窗口),与其让用户在点击链接的时候被带离当前页面,不如让用户仍停留在当前页面,并用一个弹出窗口来显示相关信息,这无疑是一种更好的解决方法.一些错误的写法:伪协议:<a href="javascript:showWindow('login', this.href);" >登录</a&

编程的97件事——2、应用函数式编程原则

Apply Functional Programming Principles Functional programming has recently enjoyed renewed interest from the mainstream programming community. Part of the reason is because emergent properties of the functional paradigm are well positioned to addres

好的编程原则

好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系. 好的编程原则 好的编程原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强.缺陷更少的程序. 不要自我重复 这也许是在编程开发里最最基本的一个信条,就是要告诉你不要出现重复的代码.我们很多的编程结构之所以存在,就是为了帮助我们消除重复(例如,循环语句, 函数,类,等等). 一旦程序里开始有重复现象的出现(例如很长的表达式.一大堆的语句,但都是为了表达相同的概念),你就需要对代码进行一次新的提炼,抽象.

PLC编程编程原则

1)外部输入/输出继电器.内部继电器.定时器.计数器等软元件的触点可重复使用,没有必要特意采用复杂程序结构来减少触点的使用次数. (2)梯形图每一行都是从左母线开始,线圈接在最右边.在继电器控制原理图中,继电器的触点可以放在线圈的右边,但在梯形图中触点不允许放在线圈的右边. (3)线圈不能直接与左母线相连,也就是说线圈输出作为逻辑结果必须有条件.必要时可以使用一个内部继电器的动断触点或内部特殊继电器来实现. (4)同一编号的线圈在一个程序中使用两次以上称为双线圈输出.双线圈输出容易引起误操作,这