01. 开篇词 | 这一次,我们从“丑”代码出发.html
02. 课前热身 | 这些需求给到你,你会怎么写代码?.html
03. 01 | 缺乏业务含义的命名:如何精准命名?.html
04. 02 | 乱用英语:站在中国人的视角来看英文命名.html
05. 03 | 重复代码:简单需求到处修改,怎么办?.html
06. 04 | 长函数:为什么你总是不可避免地写出长函数?.html
07. 05 | 大类:如何避免写出难以理解的大类?.html
08. 06 | 长参数列表:如何处理不同类型的长参数?.html
09. 07 | 滥用控制语句:出现控制结构,多半是错误的提示.html
10. 08 | 缺乏封装:如何应对火车代码和基本类型偏执问题?.html
11. 09 | 可变的数据:不要让你的代码“失控”.html
12. 10 | 变量声明与赋值分离:普通的变量声明,怎么也有坏味道?.html
13. 11 | 依赖混乱:你可能还没发现问题,代码就已经无法挽救了.html
14. 12 | 不一致的代码:为什么你的代码总被吐槽难懂?.html
15. 13 | 落后的代码风格:使用“新”的语言特性和程序库升级你的代码.html
16. 14 | 多久进行一次代码评审最合适?.html
17. 15 | 新需求破坏了代码,怎么办?.html
18. 16 | 熊节:什么代码应该被重构?.html
19. 17 | 课前作业点评:发现“你”代码里的坏味道.html
20. 结束语 | 写代码是一件可以一生精进的事.html
21. 结课测试|这些代码坏味道的知识你都掌握了吗?.html
22. 第四季回归 | 通向高质量代码之路.html