代码之丑
郑晔
开源项目 Moco 作者
19833 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 24 讲
代码之丑
15
15
1.0x
00:00/00:00
登录|注册

12 | 不一致的代码:为什么你的代码总被吐槽难懂?

你好,我是郑晔。
上一讲,我们讲了从依赖关系引申出来的坏味道,从代码本身看,这些坏味道并不如之前讲的那些,有非常明显的标识,一眼就能看出问题,但它们都属于问题高发的地带,一不小心就陷入其中,却不知所以。对于这类的问题,我们需要额外打起精神来发现问题。
今天,我们再来看一类需要你打起精神的坏味道,它们的出发点也是来自同一个根源:一致性。
大多数程序员都是在一个团队中工作,对于一个团队而言,一致性是非常重要的一件事。因为不一致会造成认知上的负担,在一个系统中,做类似的事情,却有不同的做法,或者起到类似作用的事物,却有不同的名字,这会让人产生困惑。所以,即便是不甚理想的标准,也比百花齐放要好。
大部分程序员对于一致性本身的重要性是有认知的。但通常来说,大家理解的一致性都表现在比较大的方面,比如,数据库访问是叫 DAO 还是叫 Mapper,抑或是 Repository,在一个团队内,这是有统一标准的,但编码的层面上,要求往往就不是那么细致了。所以,我们才会看到在代码细节上呈现出了各种不一致。我们还是从一段具体的代码来分析问题。

命名中的不一致

有一次,我在代码评审中看到了这样一段代码:
enum DistributionChannel {
WEBSITE,
KINDLE_ONLY,
ALL
}
这段代码使用标记作品的分发渠道,从这段代码的内容上,我们可以看到,目前的分发渠道包括网站(WEBSITE)、只在 Kindle(KINDLE_ONLY),还是全渠道(ALL)。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

团队开发中的代码一致性对于项目的成功至关重要。本文从命名和方案两个方面探讨了代码中的不一致性问题。在命名方面,作者以枚举值命名不一致为例,强调了表示类似含义的代码应该有一致的名字,以避免混淆和困惑。在方案方面,作者以日期时间解决方案的不一致为例,指出项目中出现多个解决方案的原因可能是时间演化或引入不同的程序库。作者强调了项目成员需要遵循统一约定,以确保代码的一致性。文章通过具体案例生动地展示了代码不一致性的问题及解决方法,对于团队开发中的代码规范和一致性具有一定的借鉴意义。文章还强调了分离关注点的重要性,通过提取方法和分层设计来解决代码不一致性问题。总之,保持代码在各个层面上的一致性是至关重要的。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《代码之丑》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • webmin
    把每一件事做细致,做扎实,做到极致,不能有一丝的懈怠,专业力自然就呈现出来了,省力要看长期,当下花的功夫,收益要到需求有变化时才能充分体现出来。

    作者回复: 这种想法我很认同,只是能坚持的人太少了。

    2021-01-26
    3
    16
  • LA
    看了之后反思,再去读原先代码,用新的指导去小规模重构代码,虽然进度会慢些,但是稳。

    作者回复: 加油!

    2021-01-27
    3
  • 曹宇飞
    老师,我一直有个问题,就是函数中存在不同层次代码的时候,如何将不同层次的代码拆分到不同类中,这个类又是怎么分包名的?

    作者回复: 在哪个类里就在相应的包里,比如,是 service 的就是 service,是 resource 的就是 resource。

    2021-06-16
    2
    1
  • Geek2808
    很多程序员纠结的技术问题,其实是一个软件设计问题。好经典的描述
    2021-01-31
    12
  • 小袁
    最近招了一个合作方,从数据库表命名,docker文件的编写,到函数命名都跟项目组的其他人都不一致。几乎把我搞疯了,最后我只能说:你的创新性就体现在这?我只能动用考核成绩来威胁他了。
    2022-05-03
    2
  • aoe
    本以为让代码保持同一层次是最大的收获,没想到:需要测试私有方法是因为没有分离关注点导致的才是!spring test 框架中提供了专门测试私有方法的函数,还以为测试私有方法是一个正常需求。
    2021-12-06
    2
  • 李骏
    我想这就是测试驱动开发的意义所在,可以引导我们写代码的时候思考不同层次的代码应该如何合理安排
    2021-08-19
    2
  • 6点无痛早起学习的和尚
    看了这节,个人能在工作中直接使用起来的一招:代码中保持一致,分层、分离关注点,还有命名中的一致,方案不一致这个不能要求别人。
    2023-11-13归属地:北京
  • Lverse
    理想很美好 为了赶进度 各种风格都有 全是坏代码 太难了
    2023-11-06归属地:广东
  • ifelse
    保持代码在各个层面上的一致性--记下来
    2022-05-31
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部