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

16 | 熊节:什么代码应该被重构?

你好,我是郑晔。
代码坏味道的说法源自《重构》这本书,坏味道和重构这两个概念几乎是如影随形。提及《重构》这本书,在国内谁还能比《重构》两版的译者熊节更了解它呢?所以,这一讲,我就请来了我的老朋友熊节,谈谈在他眼中看到的重构和坏味道。有请熊节老师!
你好,我是熊节。
自从翻译了《重构》以后,很多公司找我去做重构的培训,光是华为一家,这个主题在各个不同的部门就培训过好些次。每次讲这个主题,我都觉得挺为难的:重构这事有什么可培训的呢,不就是一个无脑模式匹配的事吗!然而跟各家公司的读者们一交流,我就发现事情并没有那么简单。
很多人一说到重构,就聊到虚无缥缈的事上了,像什么架构啦、文化啦,等等。我不得不先把他们拉住仔细问问,他们是怎么读《重构》这本书的?这一问我就发现,原来很多读者(恐怕是绝大多数读者),还没弄明白这本书到底应该怎么读。

什么代码应该被重构?

《重构》这本书,以及重构这门手艺,提纲挈领的部分,都在一个关键的问题上:什么代码应该被重构
你可能会说,质量不好的代码需要被重构。没错,可是代码的质量到底应该如何评判呢?
首先我们要明确的是,代码的好与坏不应当用个人好恶、“含混的代码美学”来表达,因为这会带来两个困难:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了熊节在重构领域的观点和经验。他强调了重构的重要性,指出评判代码质量应该基于明确的症状,而非个人好恶或模糊的代码美学。熊节提到了一些经典的程序设计原则,并解释了如何识别不符合这些原则的代码。他强调了《重构》给出的24项“坏味道”形成了一个明确的代码质量检查清单。文章还提到了对“坏味道”的判断力的培养,以及正确的代码构造的重要性。熊节的分享强调了重构的实用性和操作性,为读者提供了清晰的指导,帮助他们了解何时以及如何进行代码重构。整体而言,本文通过熊节的观点和经验,为读者提供了重构和坏味道的新认识,帮助他们在日常工作中不断锻炼自己的代码嗅觉。

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

全部留言(19)

  • 最新
  • 精选
  • Edison Zhou
    就我经历过的团队(传统企业信息中心)来看,不论是初级还是中级的同事,总是喜欢学习和研究分布式架构相关的知识点,而不喜欢阅读如《重构》、《代码整洁之道》一类的提高程序员最本质的手艺-写代码。然而,分布式的东西对我所经历的团队来说并不重要,因为实际上能用上的并不多。然而,每次Code Review总会有一些让人摸不着头脑要讲半天的代码,虽然也加了静态代码复杂度检查之类的,但是还是层出不穷。或许是这个浮躁的信息爆炸时代让架构师课程随手可得,却让人忘了自己去追求所谓的整洁代码之美,其实个人觉得一堆可维护的代码就是取悦同事取悦领导最佳的方式。作为TL,只能尽可能多培养识别坏味道的嗅觉,帮助团队成员指出坏味道并改正,先独善其身,才能有机会兼济天下,能指导和培养一个是一个。知易行难,学习的最高层次就是输出,找一两个小时,团队坐在一起Code Review也是一个输出和输入的过程,发挥集体智慧,走向重构。

    作者回复: 这是一个有趣的角度,现在大部分人其实用不到复杂的分布式知识,但这东西却成了主流,这与大公司面试方式有关。和当年受微软影响,各公司面试智力题有异曲同工的作用。 微软后来发现,这种选拔人才的方式有问题,需要改进,估计国内公司也需要经过一个漫长的过程之后,发现他们用这种方式选出来的人,与他们需要的人之间存在差距。 毕竟,有大量用户规模的事,只有一些大公司的核心团队才会遇到,而大部分人需要的是,写好代码。而大部分人学习分布式只是学习屠龙术,空有一身本事,无处施展。

    2021-02-05
    4
    29
  • NiceBen
    这种极限拆分,对于很多业务代码,拆分成很多方法,更加零散一些,而且有些拆出来的方法几乎不会被复用。这样还有必要拆分么?

    作者回复: 举个不是特别恰当的例子,这就像现在还在吃糠咽菜,就担心钱多了该怎么花。 先把函数拆小,能不能复用才能看出来,没有拆,何谈复用。再者,更重要的是,拆出来的目标不一定要复用,而是为了让代码更清晰。

    2021-02-04
    4
    14
  • Geek_3b1096
    专栏更贴近真实场景

    作者回复: 这是建议还是评价呢?

    2021-02-05
    2
    7
  • adang
    读书不等于掌握;掌握了不等于正在执行;执行了不等于一直在践行;识别出坏味道并践行重构的能力就像武功一样,不用就会慢慢荒废。难的不是掌握这个能力,最难的是坚持践行合一。

    作者回复: 知行合一,谈何容易。

    2021-02-04
    6
  • Jxin
    喜欢郑老师的课程。每次都能get到好的新主题,进而课后可以做专项的主题学习。课程内容反而是附赠的。 本章: 1.get: 缺乏在受控环境下的刻意练习,很难通过工作中的自然积累提升判断力。 原本认知: 一直认为对象健身操过于苛刻,不适合在工作中应用,只是理想化的东西。但如果把它做为训练手段,用于提高自己对代码坏味道的觉察心,就直接豁然开朗了。下来可以时常写些小玩意,对照着苛刻下。 2.get: 《实现模式》 书已买,拜读下。

    作者回复: 哈哈,欢迎订阅赠品。

    2021-02-05
    4
  • 秋天的透明雨🌧️
    学习了老师的三个专栏,收获颇多,感谢分享。请问老师,除了专栏中提到的书籍和示例代码等一些代码片段,哪里可以找到更多符合高质量代码标准的完整的工程/代码示例?感觉通过学习了专栏之后,再结合优秀优秀代码会加深理解。目前github上代码太多,没办法逐个甄别,如果老师能够帮忙推荐一些最好了,感激不尽。

    作者回复: Google的开源项目代码质量一般都很高,推荐Guava。Spring的也可以看看。

    2021-04-22
    3
  • LA
    静态代码扫描,其实也不治根,规约然后说了,但是就是存在,还是得从意识上去唤醒这种细节点,毕竟只能要求自己,团队太难驱动

    作者回复: 先做好自己,再去影响他人。

    2021-02-04
    3
  • 6点无痛早起学习的和尚
    这个专栏值得反复来阅读,尤其是那些坏味道的代码,值得记住,当自己 coding 的时候就多看看写的代码里是否有这些坏味道的代码

    作者回复: 记住多少用多少

    2021-04-11
    2
  • topsion
    读到这章内容才知道原来:熊节是人名。我还以为是表示很厉害的章节

    作者回复: 😂

    2021-04-07
    2
    2
  • qinsi
    这种机械和简单的模式匹配最好能交给机器去做

    作者回复: 道理上是这样的,问题是,现在这种模式匹配机器暂时还没法识别,也许是一个值得探索的方向。

    2021-02-04
    4
    1
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部