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

(2011-11-02 14:26:49)

转载
标签:

it

 

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

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 needit)

除非你需要它,否则别创建新功能。

5.尽可能做可运行的最简单的事(Do the simplest thing that could possiblywork)

尽可能做可运行的最简单的事。在编程中,一定要保持简单原则。作为一名程序员不断的反思“如何在工作中做到简化呢?”这将有助于在设计中保持简单的路径。

6.别让我思考(Don’t make me think )

这是SteveKrug一本书的标题,同时也和编程有关。所编写的代码一定要易于读易于理解,这样别人才会欣赏,也能够给你提出合理化的建议。相反,若是繁杂难解的程序,其他人总是会避而远之的。

7.开闭原则(Open/Closed Principle)

你所编写的软件实体(类、模块、函数等)最好是开源的,这样别人可以拓展开发。不过,对于你的代码,得限定别人不得修改。换句话说,别人可以基于你的代码进行拓展编写,但却不能修改你的代码。

8.代码维护(Write Code for the Maintainer)

一个优秀的代码,应当使本人或是他人在将来都能够对它继续编写或维护。代码维护时,或许本人会比较容易,但对他人却比较麻烦。因此你写的代码要尽可能保证他人能够容易维护。用书中原话说“如果一个维护者不再继续维护你的代码,很可能他就有想杀了你的冲动。”

9.最小惊讶原则(Principle of least astonishment)

最小惊讶原则通常是在用户界面方面引用,但同样适用于编写的代码。代码应该尽可能减少让读者惊喜。也就是说,你编写的代码只需按照项目的要求来编写。其他华丽的功能就不必了,以免弄巧成拙。

10.单一责任原则(Single ResponsibilityPrinciple) 

某个代码的功能,应该保证只有单一的明确的执行任务。

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

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

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

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

  1. KISS原则(keep it simple and stupid)

    有效地遵循KISS原则(keep it simple and stupid)就是最佳选择, 中文译作"懒汉原则",简单的理解这句话就是,要把一个系统做的连白痴都会用.这就是用户体验 ...

  2. 程序设计的Kiss原则

    简单原则(Keep It Simple and Stupid) 例子1 猜疑返回值,不够明确 if (system("ls")) {// do something } 明确做法 i ...

  3. kiss原则包括什么_求职干货想让HR瞬间对你产生好感?简历做好这三个原则

    国内HR:你的中文简历,很辣眼!您正在收看的是,由MHC CCA 小球纸给大家带来的一大全新栏目--CCA 求职专栏! 还在为难以通过简历和面试表现获得面试官青睐而苦恼吗? 还在为无人解答实习过程中遇 ...

  4. 如何理解“KISS 原则”?

    KISS 原则的英文描述有好几个版本,比如下面这几个. Keep It Simple and Stupid. Keep It Short and Simple. Keep It Simple and ...

  5. 进阶篇:4.1)DFA设计指南:简化产品设计(kiss原则)

    本章目的:理解kiss原则,明确如何简化产品的设计. 1.前言:kiss原则,优化产品的第一原则 如果要作者选出一个优化产品的最好方法,那一定是kiss原则莫属.从产品的整体设计到公差的分析,kiss ...

  6. 设计原则—KISS原则和YAGNI原则

    怎么理解kiss原则中的"简单"两字? 什么样的代码才算简单? 怎样的代码才算复杂? 如何才能写出简单代码? YAGNI原则和KISS原则说的是一回事吗? KISS原则的英文版本描 ...

  7. 软件开发的KISS原则

    KISS原则是软件开发中的最顶层的思想,全称为:Keep It Simple & Stupid.从英文的直译就是追求简单和易用.根据生活的经验:愚蠢的人,总会将简单的问题弄复杂:智慧的人,总是 ...

  8. 【整理】KISS原则介绍

    KISS原则介绍 KISS 原则是用户体验的高层境界,简单地理解这句话,就是要把一个产品做得连白痴都会用,因而也被称为"懒人原则".换句话说来,"简单就是美". ...

  9. KISS原则(Kiss Principle)

    KISS原则(Kiss Principle)是什么 KISS是 Keep It Simple,Stupid. 其核心思想就是"解耦,解耦,再解耦",职责单一化,功能单一化为以后的维 ...

  10. kiss原则包括什么_KISS原则以及介绍

    网页设计的KISS原则 就是"Keep It Simple And Stupid''的缩写,简洁和易于操作是网页设计的最重要的原则.毕竟,网站建设出来是用于普通网民来查阅信息和使用网络服务. ...

最新文章

  1. 汇编程序设计与计算机体系结构软件工程师教程笔记:内联汇编与宏
  2. Buffer Pool--内存总结2
  3. 深入理解JVM虚拟机(六):虚拟机类加载机制
  4. 在VS中建立一个易于管理的C++工程
  5. 企业级 SpringBoot 教程 (十七)上传文件
  6. 谷歌搜索和谷歌站内搜索
  7. ABP VNext 微服务演示,项目状态和路线图
  8. 全面了解 Nginx 到底能做什么
  9. eureka 集群失败的原因_对于注册中心,ZooKeeper、Eureka哪个更合适?
  10. java怎么写自定义布局_java-Android设置自定义首选项布局
  11. 【NOIP初赛】【Luogu1787】普及组2013(洛谷初赛题提交水AC方法了解一下)
  12. EXT Column Tree 的应用
  13. JAVA 如何控制模拟表单提交_java后端模拟表单提交
  14. RFID医疗废物管理系统解决方案-RFID技术的医疗废弃物管理系统
  15. spyder报错汇总
  16. 计算机组成与体系结构(软件设计师考试)
  17. oracle之查询某一列是否含有英文字符
  18. DDoS 受控攻击源地域分布
  19. 淫思奇巧篇 之 Save Actions 替你摆平代码格式问题
  20. 在国内使用Google Voice通话及短信功能

热门文章

  1. 什么是有氧运动?什么是无氧运动?哪个减肥效果更好?
  2. Openwrt 镜像安装
  3. 通过镜像安装torch,torchvision
  4. linux mariadb默认密码,mariadb设置初始密码
  5. 自动驾驶 4-5 自行车模型的横向动力学 Lateral Dynamics of Bicycle Model
  6. js逆向巨潮mcode
  7. 软件测试面试英文自我介绍,软件测试英文面试自我介绍范文
  8. PhalAPI学习笔记 ——— 第三章细致讲解使用PSR-4规范自定义你的命名空间
  9. 【qq机器人】机器人发美女图片
  10. IA-32:Privilege level