DRY、KISS、YAGNI三原则的理解

软件三原则的我的理解

在软件的设计当中前人已经总结了许多的设计原则和设计模式。例如SOLID,GRASP设计原则,这些原则都是基于面向对象设计总结而来的。而GOF23是基于许多常见的场景总结出了一套设计模式,在咱们遇到相似的场景,均可以套用设计模式。而今天所讲到的软件三原则是适用于在软件设计的各个层面的。它不只适用于面向对象的设计,也适用于面向过程的程序设计;不只适用于类的设计,也适用于模块、子系统的设计。就连在项目架构运维部署中也适用于这一套简单的法则。html

DRY - Don't Repeat Yourself

第一条准则是千万不要重复你自身。尽可能在项目中减小重复的代码行,重复的方法,重复的模块。其实许多设计原则和模式最本质的思想都是在消除重复。咱们常常提起的重用性和可维护性实际上是基于减小重复这一简单的思想。为何如今微服务盛行呢?正是由于将系统中的服务进行抽取的话,便减小了重复。重复冗余在维护代码的时候将是很是困难的。DRY意味着系统内的每个部件都应该是惟一的而且是不模糊的。咱们能够经过应用单一职责接口隔离等原则尽可能拆分系统,模块,类,方法·。使其每个部件都是职责明确的而且可重用的。程序员

KISS - Keep It Simple & Stupid

第二条准则是保持简单易懂。从小到几行代码的写法大到整个系统的架构咱们都应该保持简单易懂。高手高就高在能够将复杂的东西“简单”的实现出来。刚入行的时候,我总喜欢用三目运算符将复杂的逻辑用一句冗长的代码行写出来。后面才发现这是很是愚蠢的。到了重构或者需求变动的时候,连我本身写的代码我都看着很是费劲难如下手。因此咱们应该致力于代码的可理解性。下降复杂度也意味着维护变得简单。Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机能够理解的程序,只有写出人类容易理解的程序才是优秀的程序员。其实不光是程序,这个原则也能够延伸到产品的设计,业务的设计,项目结构的设计上。设计模式

YAGNI - You Ain’t Gonna Need It

第三条准则是你将不会须要它。千万不要进行过分设计。咱们常常会在开发当中尽量的迎合将来可能的需求。而为了迎合某些产生几率极低的需求而设计的成本是很是高的,这种过分设计的收益很是低。可能你深思熟虑的设计花了很多时间成本,却在将来的两三年内这个设计却彻底没有派上用场。一些设计是否必要,更多的应该基于当前的状况。而不是为了应对将来的各类变化,多此一举的设计。若是淘宝一开始就往日均交易上亿的状况进行设计的话,那么可能就不会有今天的淘宝了。由于创业公司的时间是很是宝贵的,比其余公司早一步退出新的服务就能抢占先机。并非说淘宝不须要考虑之后交易量暴增的状况,而是不该该以当前日均交易才几万的状况下去设计编码日均交易上亿的项目。过分设计每每会延缓开发迭代的速度。架构

转自个人我的博客 vc2x.com运维

相关文章
相关标签/搜索