小注:曾经有一次,实在不知道如何体现我们软件开发的辛苦,就给甲方要了一笔钱,费用名称就叫 软件工程费。现在,想想也是多年以前的值得会心一笑的事情。后来,买了一些书,实在是看不进去,这不有人专门讲了一下,就非常开心,简单回顾一下。
一、主题
软件工程的敌人就是复杂度
复杂度的一个基本标准就是代码整洁。
所以为了能够控制话题,只说 Clean Code.
二、指导原则
以下多半是口耳相传 多年的经验之谈,自己搬运一下,整理一下,便于自己强化理解和记忆
什么是好代码?
局部干净,核心逻辑清晰
指导原则:
消除重复,分离关注点,统一抽象层次
三、原则分说
分开来说,
1.消除重复
一句话解释:减少心智负担,重复过程中把自己整晕了,因为变化的点藏在云里雾里。
例子:代码重复,结构重复
解决方法:继承体系(有时候也多是使用组合),泛型(比较不错的发明),模板方法(这个快用烂了,mvc思想或者说Template),高阶函数(流水化,毕竟函数式编程还是曾经很流行的)
2.关注分离点
一句话解释:关注点一致的代码,应该高内聚,低耦合,使用空间换取心智思考的时间。那么,关注点不一样的代码,应该互相之间没有任何关联。
议论:就是物以类聚,人以群分,抱成一个团。但是,这是一个方法论,是为了在设计和意识层面对于细节的把握。锻炼自己的抽象能力,并不是为了处处分开。代码是一点点写的,也是总结出来的,如果很多事情直接做好了,那是非常好的,很多时候总是有各种妥协,但是还是可以每次改正一点点。
批注:心有猛虎,细嗅蔷薇。
3.统一抽象层次
一句话解释:同一抽象层次的对象可以直接对话,并且存在着紧密合作。
议论:抽象是人类最伟大的发明,区别与其他智人。
四、附录
这里非常想提一点的就是 命名与注释:
之前总是整不明白为何要有一个领域专家的词。
现在知道了它是为何出现,解决什么问题。
就是一个在实践上面三个原则的过程中,发现,天然有一个职场分工的分包分层。需求,产品,设计,开发,测试.....
例子:大家对于清洗苹果这个业务,其中苹果这个概念可能表达不同:
需求说,一个红色的果子
产品说,吃着不错,还是很健康,这个历史很悠久....
设计不说话,画了一个自己心中的物件
开发不说话,整了一个Apple
测试不说话,TestXxx就结束了
所以,统一术语,应该就是领域专家的核心内容。
这种能够沉淀下来的东西才会成为技术财富。
关于上述三个原则的编程tips,是不讨论的,因为技巧是说不完的,有了深刻的理解,就会源源不断地创造属于自己的技巧和编程习惯。实在需要就可以去看阿里的武侠秘籍,什么黄山版,嵩山版....Tencent也有白皮书...
小结:希望带来一点开心