文档章节

KISS(Keep It Simple & Stupid)

精通吹水
 精通吹水
发布于 2016/04/11 10:58
字数 1177
阅读 179
收藏 0

KISS(Keep It Simple & Stupid)

KISS(Keep It Simple & Stupid):保持精简,并且看起来很“愚蠢”。

在软件开发中,一个系统会变得越来越庞大,系统熵(复杂度)会变得越来越大,导致我们越来越难以hold整个系统(智商问题¯_(ツ)_/¯)。所以我们引入了KISS原则来使**系统熵(复杂度)**保持稳定的数值。

统一命名

一个好的统一命名风格,有利于系统的扩展和维护,推荐驼峰命名法。

使用静态语言

静态语言的合理使用,能最大程度的保证代码重构后的影藏问题,在编译期就可以fix。不过有些场合非常却不是这样子,比如说浏览器,Shell等。静态或者动态语言还是需要综合考量。

微服务架构设计

当系统变的越来越大的时候,我们不能简单的通过将单体架构运行在多个PC上做负载均衡来达到性能上的突破,而应该将整个集群看成一个系统,使用微服务的概念优化整体设计。

高内聚低耦合设计

高内聚

高内聚是指对程序中功能相近的点进行独立化, 如果两个模块之间的修改, 互不影响则说明模块之间是高内聚的。

高内聚意味可维护性,可重写性,因为模块对外部的依赖少(功能的完备性)。模块的内聚和其担当的职责成反比,即模块的职责越多,模块的内聚性越低。

如何划分出一个模块, 这就需要关注点分离。

低耦合

耦合是描述模块之间的依赖程度,如果一个模块的修改,都对另一个模块进行修改,则两模块之间是相互依赖耦合的,这种设计不是理想的设计。

低耦合是我们的设计目的,但是不存在没有耦合的程序。耦合是必须的,因为模块之间必须通信交互,不过可以设计出依赖于不变或者不易变的接口, 而不需要关注模块内的实现, 从而实现低耦合。

关注点分离

实现高内聚低耦合行之有效的方式:关注点分离(SOC),将系统在不同层次[水平/垂直]上进行拆分, 形成功能不同没有重叠的模块。

每个功能只关注一个方面(Aspect)保证模块之间功能没有或者尽量少的重复。

模块化内部实现细节隐藏,只暴露必须的接口,使得模块之间依赖于抽象,达到稳定。

分离关注点的思想存在于我们软件设计的各个领域。例如:

  • 面向接口编程: 具体实现类的替换不影响上层业务逻辑
  • 面向AOP编程: 把性能统计的代码都分离出来, 保证高内聚低耦合
  • TCP/IP:TCP/IP是非常明显的水平切分模型,保证了互联网能运行在不同的介质上。IP层对应IP层,TCP层对应TCP层,使得逻辑上非常的清晰。通过这种分层模型,在不修改TCP上层(如HTTP)和下层(如IP)的情况下,非常轻松简洁地实现了NET转换之类的TCP层小技巧
  • 前后端分离:在Web+App编程中,前后端分层是非常明显的垂直切分,两者仅仅通过RESTful API+JSON 交互,利于测试和扩张

通过对程序的关注点分离, 使得程序各个模块之间变得高内聚低耦合.

综合约束

在软件开发设计中, 高内聚低耦合原则的实现是还依赖于综合约束,且贯穿整个软件生命周期, 并且软件开发过程中切忌过度设计

综合约束:业务逻辑, 软件条件, 硬件条件, 性能指标, 语言, 具体编码环境等因素。

面向对象设计

在面向对象的开发过程中,我们有一些软件设计上的原则:

面向对象设计原则

通过这些原则我们可以非常方便的设计出高内聚低耦合的代码结构。

总结

在开发过程中需要遵守KISS原则,使用一些方法/设计来达到降低系统熵,提高系统维护性的目的

参考

© 著作权归作者所有

共有 人打赏支持
精通吹水
粉丝 18
博文 56
码字总数 55035
作品 0
人事招聘
rushmore/zbus-python

/\ /\\\\\ /\ /\ /\ /\\\\\ /\/////\ //\/\ ///////\/ /\\\\ /\ /\ /\////// /\\\\\ //\\ zbus-python-client zbus strives to make Message Queue and Remote Procedure Call fast, light-w......

rushmore
2017/07/09
0
0
rushmore/zbus-cpp

/\ /\\\\\ /\ /\ /\ /\\\\\ /\\\\ /\ /\ ///////\/ /\\\\ /\ /\ /\////// /\////// /\\\\\ /\\\\\ zbus strives to make Message Queue and Remote Procedure Call fast, light-weighted and......

rushmore
2017/07/08
0
0
rushmore/zbus-dotnet

/\ /\\\\\ /\ /\ /\ /\\\\\ /\/\\\ /\\\\ /\\\\\ ///////\/ /\\\\ /\ /\ /\////// /\////\ /\/////\ ////\//// zbus-dotnet zbus strives to make Message Queue and Remote Procedure Call ......

rushmore
2017/07/08
0
0
rushmore/zbus-php

/\ /\ /\\\\\ /\ /\ /\ /\\\\\ /\/////\ /\ /\/////\ ///////\/ /\\\\ /\ /\ /\////// /\\\\\ /\\\\\ /\\\\\ zbus strives to make Message Que...

rushmore
2017/07/09
0
0
和程序员约会的优点和缺点,想清楚再约会

什么?你要和程序员约会去了?!!咋一听到这个消息你会怎么想,是嗤之以鼻还是羡慕嫉妒恨? 下面且听我一一分析与程序员约会的优缺点吧。 优点:他们不会骗人;他们也没有时间去拈花惹草。 ...

oschina
2015/01/24
7.2K
17

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
3
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部