代码之丑 / 识别坏味道,重构问题代码

郑晔
推文科技技术VP,前火币网首席架构师
  • 课程目录
  • 课程介绍
  • 开篇词 | 这一次,我们从“丑”代码出发

    对代码坏味道的嗅觉,能够识别出坏味道,接下来,你才有机会去重构,把代码一点点打磨成一个整洁的代码。

  • 课前热身 | 这些需求给到你,你会怎么写代码?

    识别坏味道,单纯学理论是不够的,我在课程中加入了大量真实的代码案例,帮助你理解坏味道;此外,你还要有足够多的练习。

  • 01 | 缺乏业务含义的命名:如何精准命名?

    好的命名要体现出这段代码在做的事情,而无需展开代码了解其中的细节,这是最低的要求。

  • 02 | 乱用英语:站在中国人的视角来看英文命名

    命名之所以如此重要,因为它是一切代码的基础。

  • 03 | 重复代码:简单需求到处修改,怎么办?

    只要你看到 if 语句出现,而且 if 和 else 的代码块长得又比较像,多半就是出现了坏味道。

  • 04 | 长函数:为什么你总是不可避免地写出长函数?

    没有人愿意去阅读长函数,但许多人又会不经意间写出长函数。

  • 05 | 大类:如何避免写出难以理解的大类?

    我们需要认识到,模块拆分,本质上是帮助人们降低理解成本的一种方式。

  • 06 | 长参数列表:如何处理不同类型的长参数?

    应对长参数列表主要的方式就是减少参数的数量,一种最直接的方式就是将参数列表封装成一个类。

  • 07 | 滥用控制语句:出现控制结构,多半是错误的提示

    重复的 switch 本质上是缺少了一个模型,可以使用多态取代条件表达式,引入缺少的模型,消除重复的 switch。

  • 08 | 缺乏封装:如何应对火车代码和基本类型偏执问题?

    火车残骸的代码就是连续的函数调用,它反映的问题就是把实现细节暴露了出去,缺乏应有的封装。

  • 09 | 可变的数据:不要让你的代码“失控”

    setter 一方面破坏了封装,另一方面它会带来不可控的修改,给代码增添许多问题。

  • 10 | 变量声明与赋值分离:普通的变量声明,怎么也有坏味道?

    变量的初始化包含变量的声明和赋值两个部分,一个编程的原则是“变量要一次性完成初始化”。

  • 11 | 依赖混乱:你可能还没发现问题,代码就已经无法挽救了

    业务代码中出现具体的实现类,实际上是违反了依赖倒置原则。

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

    类似含义的代码应该有类似的命名,不一致的命名表示不同的含义,需要给出一个有效的解释。

  • 13 | 落后的代码风格:使用“新”的语言特性和程序库升级你的代码

    无论是引入新的语言特性,还是引入新的程序库,都会对代码的编写产生或多或少的影响。

  • 14 | 多久进行一次代码评审最合适?

    代码评审是一个沟通反馈的过程。站在沟通反馈的角度,我们关注的是,尽可能多地暴露问题,尽可能多地做代码评审。

  • 15 | 新需求破坏了代码,怎么办?

    接口和实体,其实也是一个系统对外界产生影响的重要部分,一个是对客户端提供能力,一个是产生持久化信息。

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

    一位“知行合一”的程序员最终会发现,极限编程是唯一合理且有效的软件开发方法。

  • 17 | 课前作业点评:发现“你”代码里的坏味道

    我们来做一次“代码评审”,直接看你代码中存在的问题。

  • 结束语 | 写代码是一件可以一生精进的事

    写代码是一门手艺,需要不断地打磨。

  • 结课测试|这些代码坏味道的知识你都掌握了吗?

    《代码之丑》结课了,来做一下结课测试吧!

【立省 ¥30|今晚 24 点失效】

拼团+口令「Happy2021」立省 ¥30, 原价 ¥99,口令仅限前 100 名

你将获得

  • 一套实用的代码坏味道自查清单
  • 25+真实代码段反面案例
  • 解决坏味道代码的 20+ 重构手法
  • 整洁代码的设计原则

讲师介绍

郑晔,网名dreamhead,推文科技技术VP,极客时间《10x程序员工作法》《软件设计之美》专栏作者。

郑晔是一位有20多年研发经验的技术“老兵”,曾担任火币网首席架构师、ThoughtWorks首席咨询师,对代码整洁之道有深入理解,热衷于不断优化代码质量和编码效率。

课程介绍

我们知道,写代码要具有正确性和可维护性,能把代码写对,是每个程序员的必备技能,但能够把代码写得具有可维护性,这才是一个程序员从业余迈向职业的第一步。

那具体要怎样编写可维护的代码呢?我建议你从“代码的坏味道”入手,为什么?

我们以往学到的知识,大多都会告诉我们应该怎样做、怎样做是好的,但应用这些内容,需要我们对整洁代码有着深厚的理解,而每个人对同一件事的领悟程度是不同的。比如说,我们都知道“命名是要有意义的”,但什么样的命名才算是有意义的呢?有的人只理解到不用 xyz 命名,虽然他起出了自认为“有意义”的名字,但这些名字依然很难懂。

虽然知道正面的代码是什么样子,却不知道反面的代码是什么样子,这会导致很多问题重重的代码就堂而皇之地留在了眼皮底下,为未来的开发埋下了无数的隐患。

因此,坏味道是写出好代码的起点。有对代码坏味道的嗅觉,能够识别出坏味道,接下来,你才有机会去“重构(Refactoring)”,把代码一点点打磨成一个整洁的代码(Clean Code)。

我是郑晔,一个写代码超过二十年的程序员。在这个专栏里,我会把最常见的坏味道直接用代码形式展现出来,给你即学即用的坏味道检查清单。在这个专栏里,我不仅会告诉你典型的坏味道是什么,我还会给你讲支撑这些“坏味道”之所以为“坏味道”的原因,以及应对这些坏味道的重构手法。

让我们一起修炼,打磨好写代码这门手艺!

模块设置

本课程共分为2个模块。

1. 13类典型的坏味道。在这个模块中,我会直接用我们工作中的真实代码作为案例,带你发现潜藏在你的编程中的那些坏味道。同时,帮你深入剖析这些坏味道产生的原因,以及解决这些坏味道的常见重构手法。

2. 加餐。掌握了什么样的代码是坏味道,也就有了具体的评判标准。那么,该如何去运用坏味道这把“尺子”呢?这就不得不说一说Code Review这件事。同时,我也邀请了两版《重构》的译者熊节来到我们的专栏,为你讲解:阅读《重构》这本书以及使用重构这门手艺,最关键的问题是什么。另外,在课程更新之初,我会给你留个需要动手实现的作业,完成四个小的需求。那么在这个模块中,我会选择一些典型的作业进行点评,带着你即学即练。

课程目录

特别放送

订阅须知