代码之丑
郑晔
推文科技技术VP,前火币网首席架构师
新⼈⾸单¥19.9
1394 人已学习
课程目录
已完结 21 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (2讲)
开篇词 | 这一次,我们从“丑”代码出发
免费
课前热身 | 这些需求给到你,你会怎么写代码?
13类典型坏味道 (13讲)
01 | 缺乏业务含义的命名:如何精准命名?
02 | 乱用英语:站在中国人的视角来看英文命名
03 | 重复代码:简单需求到处修改,怎么办?
04 | 长函数:为什么你总是不可避免地写出长函数?
05 | 大类:如何避免写出难以理解的大类?
06 | 长参数列表:如何处理不同类型的长参数?
07 | 滥用控制语句:出现控制结构,多半是错误的提示
08 | 缺乏封装:如何应对火车代码和基本类型偏执问题?
09 | 可变的数据:不要让你的代码“失控”
10 | 变量声明与赋值分离:普通的变量声明,怎么也有坏味道?
11 | 依赖混乱:你可能还没发现问题,代码就已经无法挽救了
12 | 不一致的代码:为什么你的代码总被吐槽难懂?
13 | 落后的代码风格:使用“新”的语言特性和程序库升级你的代码
加餐 (4讲)
14 | 多久进行一次代码评审最合适?
15 | 新需求破坏了代码,怎么办?
16 | 熊节:什么代码应该被重构?
17 | 课前作业点评:发现“你”代码里的坏味道
结束语 (2讲)
结束语 | 写代码是一件可以一生精进的事
结课测试|这些代码坏味道的知识你都掌握了吗?
代码之丑
15
15
1.0x
00:00/00:00
登录|注册

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

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

什么代码应该被重构?

《重构》这本书,以及重构这门手艺,提纲挈领的部分,都在一个关键的问题上:什么代码应该被重构
你可能会说,质量不好的代码需要被重构。没错,可是代码的质量到底应该如何评判呢?
首先我们要明确的是,代码的好与坏不应当用个人好恶、“含混的代码美学”来表达,因为这会带来两个困难:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《代码之丑》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(7)

  • Geek_3b1096
    专栏更贴近真实场景

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

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

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

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

    作者回复: 举个不是特别恰当的例子,这就像现在还在吃糠咽菜,就担心钱多了该怎么花。

    先把函数拆小,能不能复用才能看出来,没有拆,何谈复用。再者,更重要的是,拆出来的目标不一定要复用,而是为了让代码更清晰。

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

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

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

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

    2021-02-04
    2
    1
  • Jxin
    喜欢郑老师的课程。每次都能get到好的新主题,进而课后可以做专项的主题学习。课程内容反而是附赠的。

    本章:
    1.get: 缺乏在受控环境下的刻意练习,很难通过工作中的自然积累提升判断力。
    原本认知: 一直认为对象健身操过于苛刻,不适合在工作中应用,只是理想化的东西。但如果把它做为训练手段,用于提高自己对代码坏味道的觉察心,就直接豁然开朗了。下来可以时常写些小玩意,对照着苛刻下。

    2.get: 《实现模式》

    书已买,拜读下。

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

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

    作者回复: 这是一个有趣的角度,现在大部分人其实用不到复杂的分布式知识,但这东西却成了主流,这与大公司面试方式有关。和当年受微软影响,各公司面试智力题有异曲同工的作用。

    微软后来发现,这种选拔人才的方式有问题,需要改进,估计国内公司也需要经过一个漫长的过程之后,发现他们用这种方式选出来的人,与他们需要的人之间存在差距。

    毕竟,有大量用户规模的事,只有一些大公司的核心团队才会遇到,而大部分人需要的是,写好代码。而大部分人学习分布式只是学习屠龙术,空有一身本事,无处施展。

    2021-02-05
收起评论
7
返回
顶部