软件架构设计原则之“KISS”的总结使用
今天聊一聊软件架构设计中的 KISS 原则。
对!
就是亲嘴的那个 “KISS”!
一定要多练习。
...
... ...
...
作为一个程序员我是推荐理解为“亲嘴”的,可以很好的解决单身问题,但作为一个架构师在“亲嘴”的同时,希望还能理解它另一层含义。
KISS
KISS = Keep It Simple, Stupid.
它的核心就是把一切事情简单化,用最简单的解决方案来解决问题。
把一个事情搞复杂是一件简单的事,但要把一个复杂的事变简单,这是一件复杂的事。
简单的人生就是幸福。但是这里需要说明的是简单是优秀的,但简单是有底线边界的,超过底线的简单也有变得稚幼。KISS原则来源于《UNIX编程艺术》中总结的。
简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改。
核心:
- 拆分,把复杂的逻辑拆分为一个个单一执行单元。
- 简洁,只允许串型依赖的调用关系。
- 简单,单个执行单元代码量一定要尽可能少。
我们应该如何从KISS原则中获益?
- 你会以更快的速度解决更多的问题
- 你会以很简洁的代码来解决很复杂的问题
- 你能写出高质量的代码
- 你能完成更大的系统并且它很容易维护
- 你所编写的代码会更加灵活,易于扩展、修改或重构
- 你能得到比你原本想象的更多
- 自从你将代码变得 Stupid&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
一路荆棘,一路前行,风雨无阻。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一次杀不死的进程记录
1. 发现问题: 服务器今天发现遭受木马攻击,疑似挖矿程序植入,cpu一路飙升至99%,导致其他程序异常卡顿。 机智的我上来一个top命令让程序现出原形,结果发现一个dvjj的进程耗尽了资源。 2. 解决问题 接着,查看这个命令是从哪里的启动的,发现没有什么有用的信息。 那我换个方式,根据PID查看此进程的详细信息:ll /proc/19718 Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看。 好家伙,看看这个dvjj到底写了些啥:cat /etc/dvjj,一堆火星文字刷屏,吓得我连按几个ctrl+c才退出。 既然看不懂,我就不看嘛,删掉你:rm –rf /etc/dvjj,同时提示我有一封邮件,You have new mail in /var/spool/mail/root,于是查看邮件:cat /var/spool/mail/root,疯狂输出日志,好像是一直在下载什么东西 不管了,先干掉再说吧:kill -9 19718,...
- 下一篇
SpringBoot2.0高级案例(04): 整合sharding-jdbc中间件,实现数据分库分表
一、水平分割 1、水平分库 1)、概念: 以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。 2)、结果 每个库的结构都一样;数据都不一样; 所有库的并集是全量数据; 2、水平分表 1)、概念 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。 2)、结果 每个表的结构都一样;数据都不一样; 所有表的并集是全量数据; 二、Shard-jdbc 中间件 1、架构图 2、特点 1)、Sharding-JDBC直接封装JDBC API,旧代码迁移成本几乎为零。 2)、适用于任何基于Java的ORM框架,如Hibernate、Mybatis等 。 3)、可基于任何第三方的数据库连接池,如DBCP、C3P0、 BoneCP、Druid等。 4)、以jar包形式提供服务,无proxy代理层,无需额外部署,无其他依赖。 5)、分片策略灵活,可支持等号、between、in等多维度分片,也可支持多分片键。 6)、SQL解析功能完善,支持聚合、分组、排序、limit、or等查询。 三、项目演示 1、项目结构 springboot 2.0 版本 druid 1.1.13 版本 shar...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路