前言:
Long long ago,my boss 推荐 me a book called 《Unix编程艺术》,本人易脑热,回家就京东了一本,然后简单看了眼目录就放在地板上挂灰了。几个月过去了,看到《功夫》里边老乞丐推荐给少年《如来神掌》这本书我顿时想回来翻着看看。本书第一章讲述了软件设计的17个原则,被我称为程序员的降龙十八掌,少了一掌在哪儿呢?如果你看过星爷的《苏乞儿》你就明白第十八掌是什么了!
降龙第一式:模块
模块,这两个字蕴含着独立的意思,想想我们玩过的积木、拼图,每块木头和小图都是模块,这些模块通过简单的凹槽拼合在一起构成了一个坚固的大厦或者美丽的图画。一个复杂的软件就是一个大厦、一幅图画,而构成复杂软件的元素不应该是杂乱无章的代码,而是高内聚、低耦合的模块!
降龙第二式:清晰
清晰胜于机巧,代码需要让人看懂,这也是高级语言所致力的方向;代码结构应该清晰,不能为了一个“高级”点的算法或者用法牺牲清晰度。《重构》有一个原则对于清晰度比较实用,那就是写小函数(20行以内)然后给小函数起一个一看就知道这个函数是干嘛的那种名字。这样就不会出现你自己写的代码过一段时间之后你就不记得了这种事情了!
降龙第三式:组合
程序之间应该能可靠的彼此通信,同一个程序内的接口应该有统一的API,对于跨设备的通信尽量面向文本流。
降龙第四式:分离
前端后端要各司其职,不同的功能不要写在同一个接口里,保证接口的单一职责。
降龙第五式:简洁
设计要简洁,复杂度能低则低。不能为了技术上的虚荣心理而去做花哨的软件,这种软件复杂度高不利于维护。实际上所有的复杂系统都是一点点成长得那么复杂的,而不是一步到位生下来就那么复杂,没有经历过那么多挫折、没踩过该踩的坑上来就想当一个经验纯属的高手是不可能的。阿里非一日建成!
降龙第六式:吝啬
写小程序不要写大程序,大程序复杂度高,按照《重构》去做吧!
降龙第七式:透明
软件系统的透明性是指你一眼就能看出软件是在做什么和怎么做的,保证透明可以根据《重构》中的接口简洁原则,让输入输出参数尽量少和清晰!
降龙第八式:健壮
这是最简单但也是最难实现的一个原则。程序员最容易犯的错误应该就是边界条件检查NPE问题,另外异常情况的解决办法也是容易出错的痛点。这个就看意识了!
降龙第九式:表示
把信息叠入数据,让代码更朴实,在设计的时候应该将代码复杂度转移到数据中去
降龙第十式:通俗
最易用的程序就是那些用户需要学习最少的程序,接口设计避免标新立异,你是一个厨师那么你就应该专心做饭,而不是偶尔做裁缝。
降龙十一式:缄默
程序应该安静的干活,而不是输出一些别人不需要的冗余输出!保证输出的都是别人需要的,别唠唠叨叨!
降龙十二式:补救
宽容的收,谨慎的发,出现异常马上退出并给出足够的错误信息!
降龙十三式:经济
宁花机器一分,不花程序员一秒。教会机器做一些低层次的编程工作,比如使用mybatisGenerator,各种自动化工具等等!
降龙十四式:生成
避免手工写代码,尽量让程序去生成程序,即准确又可靠还节约时间!
降龙十五式:优化
优化之前应该有原型,而不是上来就写一个完美的最优的代码,没有学会走就要跑肯定是会摔跟头的。用书中的话说就是,还不知道瓶颈在哪就匆忙的优化,牺牲透明性和整洁性而追求速度和性能会让你后续付出惨痛的代价!优化之前先确保能用。《重构》里教我们要先写出代码,边写边重构!
降龙十六式:多样
问题的最优解可能不止一个,不要相信不二法门,广泛采用多种语言、开发的可扩展系统和用户定制机制!
降龙十七式:扩展
面向未来编程,扩展原则可以参考设计模式!
降龙十八式:KISS
Keep It Simple、Stupid!别再追求所谓的高大上了,软件设计的重要思想就实用。
网友评论