文档章节

软件架构设计原则之“KISS”的总结使用

Owen_Jia
 Owen_Jia
发布于 07/17 17:57
字数 1132
阅读 935
收藏 13

今天聊一聊软件架构设计中的 KISS 原则。

对!

就是亲嘴的那个 “KISS”!

一定要多练习。

kiss

...

... ...

...

作为一个程序员我是推荐理解为“亲嘴”的,可以很好的解决单身问题,但作为一个架构师在“亲嘴”的同时,希望还能理解它另一层含义。

KISS

KISS = Keep It Simple, Stupid.

它的核心就是把一切事情简单化,用最简单的解决方案来解决问题。

把一个事情搞复杂是一件简单的事,但要把一个复杂的事变简单,这是一件复杂的事。

简单的人生就是幸福。但是这里需要说明的是简单是优秀的,但简单是有底线边界的,超过底线的简单也有变得稚幼。KISS原则来源于《UNIX编程艺术》中总结的。

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

核心:

  • 拆分,把复杂的逻辑拆分为一个个单一执行单元。
  • 简洁,只允许串型依赖的调用关系。
  • 简单,单个执行单元代码量一定要尽可能少。

我们应该如何从KISS原则中获益?

  • 你会以更快的速度解决更多的问题
  • 你会以很简洁的代码来解决很复杂的问题
  • 你能写出高质量的代码
  • 你能完成更大的系统并且它很容易维护
  • 你所编写的代码会更加灵活,易于扩展、修改或重构
  • 你能得到比你原本想象的更多
  • 自从你将代码变得 Stupid&Simple,你就能有机会在更加庞大的产品团队或者项目团队中工作

simple

如何在工作中实践KISS原则?

1、保持谦虚,第一个容易产生的误区就是总认为自己才是天才。保持谦虚你将最终实现超级天才的状态,反之,没有人会在乎你。尽量保持代码的简洁,否则你只能要求与你工作的都是天才。

2、将你所面临的问题拆分成多个小块,每个问题解决需要的类的个数不应该太多。将任务拆分成完成时间在4-12小时之间的代码量,并让任务的依赖尽可能的是单一的关系。

3、尽量缩短每个方法,每个方法只要负责解决一个问题就足够了,每个方法的代码最多不要超过30-40行。如果在方法中需要兼容很多条件,那么你应该将这些条件拆分为更小粒度的方法。

4、控制你的类不要过大,这种方法学(保持较小)同样也被用在我们之前提到的函数方法(methods)上(Keep your classes small, same methodology applies here as we described for methods)。

5、先去解决问题,再考虑编码。很多开发人员喜欢一边思考一边编码,这么做的确也没什么错。如果你认为自己可以在脑袋中一边将问题拆分的足够小,并且同时动手编码完成这些功能的话,等待你的是今后一遍一遍又一遍 ... 。

6、不要害怕删除代码,重构和重新编码都是非常重要的两个问题。当你遇到不存在的需求 or you weren't aware of when you wrote the code to begin with you might be able to solve the old and the new problems with an even better solution. 如果你遵循上面两个原则那么重写的代码将会变得很少,否则代码也许会大量被重写。

在其它所有情况下,尽量保持代码的简洁,这是才是最难的行为模式,但是一旦你这么做,当你再次回头看时你会说:“我真的不能想象我以前是怎么工作的”。尽量保持简单,听起来很容易,其实它是在说耐心,而更多的是在说你自己。

关注

作者:Owen Jia

作者个人博客:Owen Blog

一路荆棘,一路前行,风雨无阻。

© 著作权归作者所有

Owen_Jia
粉丝 20
博文 30
码字总数 29826
作品 0
浦东
架构师
私信 提问
KISS(Keep It Simple & Stupid)

KISS(Keep It Simple & Stupid) KISS(Keep It Simple & Stupid):保持精简,并且看起来很“愚蠢”。 在软件开发中,一个系统会变得越来越庞大,系统熵(复杂度)会变得越来越大,导致我们越来...

精通吹水
2016/04/11
198
0
阿里架构设计之初体验,送给准备进阶架构的朋友(个人总结)

1 基本概念和目的 架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,然后有有...

Java小铺
2018/09/15
76
0
三条你必须知道的软件开发原则

在本文中将介绍3条重要的软件开发原则,你可能已经知道,也可能只知道其中一条。这些原则看似很简单,但实施起来会很难。无论如何,这些原则提供了一个管理复杂软件项目的强大的途径。当涉及...

郏高阳
2012/06/28
94
0
白话架构设计为你阐述什么是架构设计,架构设计的三大原则是什么

.NET Core实战项目之CMS 第九章 设计篇-白话架构设计 前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了。今天我们就好聊聊架构设计,在开始之前先给大家...

依乐祝
2018/12/06
0
0
软件设计原则

一个好的程序员通常由其操作技能、知识水平,经验层力和能力四个方面组成。在这里想和大家说说设计中的一些原则,我认为这些东西属于长期经验总结出来的知识。这些原则,每一个程序员都应该了...

GeminiLiu
2014/08/07
285
1

没有更多内容

加载失败,请刷新页面

加载更多

spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
8分钟前
0
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部