写点什么

编程规范的意义

用户头像
顿晓
关注
发布于: 2021 年 05 月 06 日
编程规范的意义

编程规范里很多条目都是语言、框架、库设计的问题,为什么不去修复这些 Bug,反而让开发者来遵守这些约束?


其中有一条逻辑是这样的:

在入口处保持简单性,可以让后续的流程都能保持简单。

相反,在源头引入的复杂性,会让后续的每一步都变得复杂。


今天试着串联一下,大家体会表达的意图,表述本身不太准确的地方请多担待。


从常量引出一个软件架构中的顶级原则:只读。

同级别的有高内聚低耦合,开闭原则,最小依赖。


软件栈中的只读/纵向

CPU 指令集只读,指令组合变化

硬件接口只读,模块功能变化

编程语言语法只读,源码组合变化

计算/算法/函数只读,参数变化

os 内核只读,进程变化

协议栈只读,参数 payload 变化

抽象层设计只读,实现变化

图形渲染引擎只读,渲染数据变化

浏览器引擎只读,网页变化

业务核心只读,周边服务变化

电商平台只读,买家卖家变化

需求只读,迭代变化/只能增删不能修改


只读意味着不变,但需求会变化,意味着需求中不变的部分会成为软件的核心,变化的部分是周边模块。


软件开发过程中的只读/横向

用户需求只读,产品服务变化

用户故事只读,验收测试变化

工作流程只读,交付价值变化

sprint 只读,backlog 变化

评估点数只读,迭代速度变化

单元测试只读,业务逻辑变化

输入输出只读,pipeline 变化


线索串联是开放性的,容易主观,有争议,但也容易加深理解,提高认知。


总结:常量,常量修饰,不可变变量。

总体来说是一种简化代码复杂度的方式,大多数语言都是混合支持可变量和不可变量,然后把使用的方式交给程序员。

默认不可变是个好的实践,符合开闭原则,最小依赖原则。


附:代码格式

一些敲代码过程中的洞见。

比如链式调用,写成'.xxx(yyy)'独占一行,除了美观,也方便复制粘贴;

VSCode 里强大的列编辑,也需要代码格式的支持。

在最后留个彩蛋:大家列编辑时很容易使用列粘贴,但有没有用过列拷贝呢?

发布于: 2021 年 05 月 06 日阅读数: 15
用户头像

顿晓

关注

因观黑白愕然悟,顿晓三百六十路。 2017.10.17 加入

视频号「编程日课」 知识星球「俺的死党顶」

评论

发布
暂无评论
编程规范的意义