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

你好,我是郑晔。
代码坏味道的说法源自《重构》这本书,坏味道和重构这两个概念几乎是如影随形。提及《重构》这本书,在国内谁还能比《重构》两版的译者熊节更了解它呢?所以,这一讲,我就请来了我的老朋友熊节,谈谈在他眼中看到的重构和坏味道。有请熊节老师!
你好,我是熊节。
自从翻译了《重构》以后,很多公司找我去做重构的培训,光是华为一家,这个主题在各个不同的部门就培训过好些次。每次讲这个主题,我都觉得挺为难的:重构这事有什么可培训的呢,不就是一个无脑模式匹配的事吗!然而跟各家公司的读者们一交流,我就发现事情并没有那么简单。
很多人一说到重构,就聊到虚无缥缈的事上了,像什么架构啦、文化啦,等等。我不得不先把他们拉住仔细问问,他们是怎么读《重构》这本书的?这一问我就发现,原来很多读者(恐怕是绝大多数读者),还没弄明白这本书到底应该怎么读。
什么代码应该被重构?
《重构》这本书,以及重构这门手艺,提纲挈领的部分,都在一个关键的问题上:什么代码应该被重构。
你可能会说,质量不好的代码需要被重构。没错,可是代码的质量到底应该如何评判呢?
首先我们要明确的是,代码的好与坏不应当用个人好恶、“含混的代码美学”来表达,因为这会带来两个困难:
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《代码之丑》,新⼈⾸单¥59
《代码之丑》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(18)
- 最新
- 精选
- Edison Zhou就我经历过的团队(传统企业信息中心)来看,不论是初级还是中级的同事,总是喜欢学习和研究分布式架构相关的知识点,而不喜欢阅读如《重构》、《代码整洁之道》一类的提高程序员最本质的手艺-写代码。然而,分布式的东西对我所经历的团队来说并不重要,因为实际上能用上的并不多。然而,每次Code Review总会有一些让人摸不着头脑要讲半天的代码,虽然也加了静态代码复杂度检查之类的,但是还是层出不穷。或许是这个浮躁的信息爆炸时代让架构师课程随手可得,却让人忘了自己去追求所谓的整洁代码之美,其实个人觉得一堆可维护的代码就是取悦同事取悦领导最佳的方式。作为TL,只能尽可能多培养识别坏味道的嗅觉,帮助团队成员指出坏味道并改正,先独善其身,才能有机会兼济天下,能指导和培养一个是一个。知易行难,学习的最高层次就是输出,找一两个小时,团队坐在一起Code Review也是一个输出和输入的过程,发挥集体智慧,走向重构。
作者回复: 这是一个有趣的角度,现在大部分人其实用不到复杂的分布式知识,但这东西却成了主流,这与大公司面试方式有关。和当年受微软影响,各公司面试智力题有异曲同工的作用。 微软后来发现,这种选拔人才的方式有问题,需要改进,估计国内公司也需要经过一个漫长的过程之后,发现他们用这种方式选出来的人,与他们需要的人之间存在差距。 毕竟,有大量用户规模的事,只有一些大公司的核心团队才会遇到,而大部分人需要的是,写好代码。而大部分人学习分布式只是学习屠龙术,空有一身本事,无处施展。
429 - NiceBen这种极限拆分,对于很多业务代码,拆分成很多方法,更加零散一些,而且有些拆出来的方法几乎不会被复用。这样还有必要拆分么?
作者回复: 举个不是特别恰当的例子,这就像现在还在吃糠咽菜,就担心钱多了该怎么花。 先把函数拆小,能不能复用才能看出来,没有拆,何谈复用。再者,更重要的是,拆出来的目标不一定要复用,而是为了让代码更清晰。
414 - Geek_3b1096专栏更贴近真实场景
作者回复: 这是建议还是评价呢?
27 - adang读书不等于掌握;掌握了不等于正在执行;执行了不等于一直在践行;识别出坏味道并践行重构的能力就像武功一样,不用就会慢慢荒废。难的不是掌握这个能力,最难的是坚持践行合一。
作者回复: 知行合一,谈何容易。
6 - Jxin喜欢郑老师的课程。每次都能get到好的新主题,进而课后可以做专项的主题学习。课程内容反而是附赠的。 本章: 1.get: 缺乏在受控环境下的刻意练习,很难通过工作中的自然积累提升判断力。 原本认知: 一直认为对象健身操过于苛刻,不适合在工作中应用,只是理想化的东西。但如果把它做为训练手段,用于提高自己对代码坏味道的觉察心,就直接豁然开朗了。下来可以时常写些小玩意,对照着苛刻下。 2.get: 《实现模式》 书已买,拜读下。
作者回复: 哈哈,欢迎订阅赠品。
4 - 秋天的透明雨🌧️学习了老师的三个专栏,收获颇多,感谢分享。请问老师,除了专栏中提到的书籍和示例代码等一些代码片段,哪里可以找到更多符合高质量代码标准的完整的工程/代码示例?感觉通过学习了专栏之后,再结合优秀优秀代码会加深理解。目前github上代码太多,没办法逐个甄别,如果老师能够帮忙推荐一些最好了,感激不尽。
作者回复: Google的开源项目代码质量一般都很高,推荐Guava。Spring的也可以看看。
3 - AFlymamba静态代码扫描,其实也不治根,规约然后说了,但是就是存在,还是得从意识上去唤醒这种细节点,毕竟只能要求自己,团队太难驱动
作者回复: 先做好自己,再去影响他人。
3 - 6点无痛早起学习的和尚这个专栏值得反复来阅读,尤其是那些坏味道的代码,值得记住,当自己 coding 的时候就多看看写的代码里是否有这些坏味道的代码
作者回复: 记住多少用多少
1 - topsion读到这章内容才知道原来:熊节是人名。我还以为是表示很厉害的章节
作者回复: 😂
21 - qinsi这种机械和简单的模式匹配最好能交给机器去做
作者回复: 道理上是这样的,问题是,现在这种模式匹配机器暂时还没法识别,也许是一个值得探索的方向。
31
收起评论