写点什么

常量之所想

用户头像
顿晓
关注
发布于: 2021 年 05 月 05 日
常量之所想

关于常量定义,仔细发掘一下还是有不少异常情况需要注意,涉及范围包括基本类型及枚举。

先抛些砖,比较容易想到的点有:

使用常量的场景:魔数,错误码

使用枚举的场景:有限值集合/业务建模用

技术功能上要注意的:整型常量声明确定类型大小,浮点型用精度比较大大小


继续扩展一下:

把常量扩展到函数就是纯函数,或常量修饰的函数。在架构上分层后,可以把有副作用的函数限定到特定的层,其它层尤其是业务逻辑所在的核心领域,可以全由纯函数实现。

把常量扩展到变量就是不可变变量。不少语言的变量默认已经是不可变,剩余的语言也建议用常量修饰,除非确定需要可变变量,这样可以在语法上做一定的保证,减少非真实意图修改的 Bug。


关于如何写出纯函数,说白了就是多练习,看能不能抽取出纯函数,然后看看剩余的代码做什么用,如果就剩模板代码了,迟早会被优化掉。

说长远一点,如果框架升级,更换架构,你的纯函数还能用。说好听点就是技术架构和业务架构解耦。


枚举和零值:

当枚举的原型值为整型时,避免从 0 开始,改为从 1 开始。可以减少和外部系统交互时零值定义不一致导致的 Bug。


枚举和 sum type:

函数的输入输出都尽量用 sum type,即可枚举,有限个数。

举个例子,C 语言函数返回喜欢用 int,0 表示成功,负数表示失败,其实返回值是有限个的,就适合改为枚举。

与通用的 int/string 相比,sum type 大大提高了代码到可阅读性和可维护性。

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

顿晓

关注

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

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

评论

发布
暂无评论
常量之所想