良好的编程原则与良好的设计工程原则密切相关。本文总结的这些设计原则,帮助开发者
更有效率的编写代码,并帮助成为一名优秀的程序员。做者Diggins是加拿大一位有25年编程经验的资深技术人员,曾效力于Microsoft和
Autodesk,并创办过两家赢利的互联网公司。程序员
1.避免重复原则(DRY - Don’t repeat yourself)编程
编程的最基本原则是避免重复。在程序代码中总会有不少结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就会很容易造成一个抽象体。ide
2.抽象原则(Abstraction Principle )函数
与DRY原则相关。要记住,程序代码中每个重要的功能,只能出如今源代码的一个位置。优化
3.简单原则(Keep It Simple and Stupid )spa
简单是软件设计的目标,简单的代码占用时间少,漏洞少,而且易于修改。设计
4.避免建立你不要的代码 Avoid Creating a YAGNI (You aren’t going to need it)对象
除非你须要它,不然别建立新功能。继承
5.尽量作可运行的最简单的事(Do the simplest thing that could possibly work)接口
尽量作可运行的最简单的事。在编程中,必定要保持简单原则。做为一名程序员不断的反思“如何在工做中作到简化呢?”这将有助于在设计中保持简单的路径。
6.别让我思考(Don’t make me think )
这是Steve Krug一本书的标题,同时也和编程有关。所编写的代码必定要易于读易于理解,这样别人才会欣赏,也可以给你提出合理化的建议。相反,如果繁杂难解的程序,其余人老是会避而远之的。
7.开闭原则(Open/Closed Principle)
你所编写的软件实体(类、模块、函数等)最好是开源的,这样别人能够拓展开发。不过,对于你的代码,得限定别人不得修改。换句话说,别人能够基于你的代码进行拓展编写,但却不能修改你的代码。
8.代码维护(Write Code for the Maintainer)
一个优秀的代码,应当使本人或是他人在未来都可以对它继续编写或维护。代码维护时,或许本人会比较容易,但对他人却比较麻烦。所以你写的代码要尽量保证他人可以容易维护。用书中原话说“若是一个维护者再也不继续维护你的代码,极可能他就有想杀了你的冲动。”
9.最小惊讶原则(Principle of least astonishment)
最小惊讶原则一般是在用户界面方面引用,但一样适用于编写的代码。代码应该尽量减小让读者惊喜。也就是说,你编写的代码只需按照项目的要求来编写。其余华丽的功能就没必要了,以避免弄巧成拙。
10.单一责任原则(Single Responsibility Principle)
某个代码的功能,应该保证只有单一的明确的执行任务。
11.低耦合原则(Minimize Coupling)
代码的任何一个部分应该减小对其余区域代码的依赖关系。尽可能不要使用共享参数。低耦合每每是完美结构系统和优秀设计的标志。
12.最大限度凝聚原则(Maximize Cohesion)
类似的功能代码应尽可能放在一个部分。
13.隐藏实现细节(Hide Implementation Details)
隐藏实现细节原则,当其余功能部分发生变化时,可以尽量下降对其余组件的影响。
14.迪米特法则又叫做最少知识原则(Law of Demeter)
该代码只和与其有直接关系的部分链接。(好比:该部分继承的类,包含的对象,参数传递的对象等)。
15.避免过早优化(Avoid Premature Optimization)
除非你的代码运行的比你想像中的要慢,不然别去优化。假如你真的想优化,就必须先想好如何用数据证实,它的速度变快了。
“过早的优化是一切罪恶的根源”——Donald Knuth
16.代码重用原则(Code Reuse is Good)
重用代码能提升代码的可读性,缩短开发时间。
17.关注点分离(Separation of Concerns)
不一样领域的功能,应该由不一样的代码和最小重迭的模块组成。
18.拥抱改变(Embrace Change)
这是Kent Beck一本书的标题,同时也被认为是极限编程和敏捷方法的宗旨。
许多其余原则都是基于这个概念的,即你应该积极面对变化。事实上,一些较老的编程原则如最小化耦合原则都是为了使代码可以容易变化。不管你是不是个极限编程者,基于这个原则去编写代码会让你的工做变得更有意义。
优秀程序设计的18大原则,至少要知足SOLID原则IoC 的设计。
SOLID原则 |
||
SRP |
The Single Responsibility Principle |
单一责任原则 |
OCP |
The Open Closed Principle |
开放封闭原则 |
LSP |
The Liskov Substitution Principle |
里氏替换原则 |
DIP |
The Dependency Inversion Principle |
依赖倒置原则 |
ISP |
The Interface Segregation Principle |
接口分离原则 |
此外需掌握原则DRY、KISS、YAGNI |
||
DRY |
Don’t Repeat Yourself |
不要重复本身 |
KISS |
Keep it Simple Stupid |
尽可能简单、一目了然 |
YAGNI |
You Ain’t Gonna Need It |
适可而止(不要试图添加没必要要的功能) |