KISS(Keep It Simple & Stupid):保持精简,而且看起来很“愚蠢”。编程
在软件开发中,一个系统会变得愈来愈庞大,系统熵(复杂度)会变得愈来愈大,致使咱们愈来愈难以hold整个系统(智商问题¯_(ツ)_/¯)。因此咱们引入了KISS原则来使**系统熵(复杂度)**保持稳定的数值。后端
一个好的统一命名风格,有利于系统的扩展和维护,推荐驼峰命名法。浏览器
静态语言的合理使用,能最大程度的保证代码重构后的影藏问题,在编译期就能够fix。不过有些场合很是却不是这样子,好比说浏览器,Shell等。静态或者动态语言仍是须要综合考量。架构
当系统变的愈来愈大的时候,咱们不能简单的经过将单体架构运行在多个PC上作负载均衡来达到性能上的突破,而应该将整个集群当作一个系统,使用微服务的概念优化总体设计。负载均衡
高内聚是指对程序中功能相近的点进行独立化, 若是两个模块之间的修改, 互不影响则说明模块之间是高内聚的。前后端分离
高内聚意味可维护性,可重写性,由于模块对外部的依赖少(功能的完备性)。模块的内聚和其担当的职责成反比,即模块的职责越多,模块的内聚性越低。分布式
如何划分出一个模块, 这就须要关注点分离。模块化
耦合是描述模块之间的依赖程度,若是一个模块的修改,都对另外一个模块进行修改,则两模块之间是相互依赖耦合的,这种设计不是理想的设计。微服务
低耦合是咱们的设计目的,可是不存在没有耦合的程序。耦合是必须的,由于模块之间必须通讯交互,不过能够设计出依赖于不变或者不易变的接口, 而不须要关注模块内的实现, 从而实现低耦合。性能
实现高内聚低耦合行之有效的方式:关注点分离(SOC),将系统在不一样层次[水平/垂直]上进行拆分, 造成功能不一样没有重叠的模块。
每一个功能只关注一个方面(Aspect)保证模块之间功能没有或者尽可能少的重复。
模块化内部实现细节隐藏,只暴露必须的接口,使得模块之间依赖于抽象,达到稳定。
分离关注点的思想存在于咱们软件设计的各个领域。例如:
经过对程序的关注点分离, 使得程序各个模块之间变得高内聚低耦合.
在软件开发设计中, 高内聚低耦合原则的实现是还依赖于综合约束,且贯穿整个软件生命周期, 而且软件开发过程当中切忌过分设计。
综合约束:业务逻辑, 软件条件, 硬件条件, 性能指标, 语言, 具体编码环境等因素。
在面向对象的开发过程当中,咱们有一些软件设计上的原则:
经过这些原则咱们能够很是方便的设计出高内聚低耦合的代码结构。
在开发过程当中须要遵照KISS原则,使用一些方法/设计来达到下降系统熵,提升系统维护性的目的。