优秀程序设计的Kiss原则(keep it simple,stupid)

优秀程序设计的Kiss原则(keep it simple,stupid)

良好的编程原则与良好的设计工程原则密切相关。本文总结的这些设计原则,帮助开发者更有效率的编写代码,并帮助成为一名优秀的程序员。

1.避免重复原则(DRY – Don’t repeat yourself)

编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就会很容易形成一个抽象体。

2.抽象原则(Abstraction Principle )

与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。

3.简单原则(Keep It Simple and Stupid )

简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改。

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一本书的标题,同时也被认为是极限编程和敏捷方法的宗旨。

许多其他原则都是基于这个概念的,即你应该积极面对变化。事实上,一些较老的编程原则如最小化耦合原则都是为了使代码能够容易变化。无论你是否是个极限编程者,基于这个原则去编写代码会让你的工作变得更有意义。

作者简介:Christopher Diggins是加拿大一位有25年编程经验的资深技术人员,曾效力于Microsoft和AutoDesk,并创办过两家赢利的互联网公司。

他是《C++ Cookbook》的作者之一,并自己编写了一门编程语言Heron。

转自  http://blog.sina.com.cn/s/blog_627839ac0100uq6d.html;

时间: 2024-12-06 20:26:59

优秀程序设计的Kiss原则(keep it simple,stupid)的相关文章

优秀程序设计的18大原则

1.避免重复原则(DRY - Don’t repeat yourself) 编程的最基本原则是避免重复.在程序代码中总会有很多结构体,如循环.函数.类等等.一旦你重复某个语句或概念,就会很容易形成一个抽象体. 2.抽象原则(Abstraction Principle ) 与DRY原则相关.要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置. 3.简单原则(Keep It Simple and Stupid ) 简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改. 4.避

优秀程序设计的原则(可以多读读)

1.避免重复原则(DRY - Don’t repeat yourself) 编程的最基本原则是避免重复.在程序代码中总会有很多结构体,如循环.函数.类等等.一旦你重复某个语句或概念,就会很容易形成一个抽象体. 2.抽象原则(Abstraction Principle ) 与DRY原则相关.要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置. 3.简单原则(Keep It Simple and Stupid ) 简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改. 4.避

程序设计六个原则

单一职责原则,SRP(Single Responsibility Principle)里氏替换原则,LSP(Liskov Substitution Principle)开放-关闭原则,OCP(Open-Close Principle)接口隔离原则,ISP(Interface Segregation Principle)依赖倒置原则,DIP(Dependence Inversion Principle)最少知识原则,LKP(Least Knowledge Principle),又称迪米特法则,LO

2017中国大学生程序设计竞赛-哈尔滨站 H - A Simple Stone Game

A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1526    Accepted Submission(s): 346 Problem Description After he has learned how to play Nim game, Bob begins to try another

*javascript开发的设计原则和设计模式

 设计原则(7种):   之所以有这么多的原则来指导我们进行程序的设计和开发,是因为我们的程序存在未知的改变.为了以最低的代价拥抱这种未知的变化,前辈们给我们总结了这么多原则. ①YAGNI原则you aren't gonna need it 不要写不需要的代码 ②KISS原则keep it simple and stupid代码保持简介和具有表现力语义话的标记.注释.变量或者方法的命名.减少嵌套 ③DRY原则Don't Repeat Yourself模块的封装提高代码的复用率 降低测试难度 方

Java系统程序员修炼之道

从2002开始接触Java学会HelloWorld这么经典的程序到如今不知不觉已经十年啦,十年中亲耳听到过不少大牛的演讲,见到过项目中的神人在键盘上运指如飞的编程速度,当时就被震撼了.当编程越来越成体力活,我们还能有自己的思想,还能修炼为Java系统级别的程序员嘛?学习与修炼以下知识与技能,帮你早日达成愿望. 一:Java语言学习 对线程(thread),串行化,反射,网络编程,JNI技术,容器(Map,List, Iterator), 类加载器(ClassLoader),输入输出流,垃圾回收机

[Java Performance] 线程及同步的性能 - 线程池/ThreadPoolExecutors/ForkJoinPool

线程池和ThreadPoolExecutors 虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自客户端的请求.Java中对于线程池的支持,来自ThreadPoolExecutor.一些应用服务器也确实是使用的ThreadPoolExecutor来实现线程池. 对于线程池的性能调优,最重要的参数就是线程池的大小. 对于任何线程池而言,它们的工作方式几乎都是相同的: 任务被投放到一个队列中(队列的

运维85条军规

1) 承载能力优先 ——随后再进行优化 —— 不遵守这条规则必定带来故障停机时间.不要在故障停机时间的压力下进行优化——要先集中精力提高承载能力. 2) 以Postgres为例,一定要确保你的每一个网络都能匹配得上你的WAL文件.Slony复制.快照技术以及基于磁盘的DB版本化(快照的衍生品) 3) 不要把问题‘优化’到你的架构之中.为了解决问题而新加进来的一些东西往往后来都会变成运维沉重的负担. 要确保在运维工程化中开发出来的工具交接完整.过后再回头进行进一步的开发往往不灵.更重要的是,变更请

<zz>运维85条军规

1) 承载能力优先 ——随后再进行优化 —— 不遵守这条规则必定带来故障停机时间.不要在故障停机时间的压力下进行优化——要先集中精力提高承载能力. 2) 以Postgres为例,一定要确保你的每一个网络都能匹配得上你的WAL文件.Slony复制.快照技术以及基于磁盘的DB版本化(快照的衍生品) 3) 不要把问题‘优化’到你的架构之中.为了解决问题而新加进来的一些东西往往后来都会变成运维沉重的负担. 要确保在运维工程化中开发出来的工具交接完整.过后再回头进行进一步的开发往往不灵.更重要的是,变更请