代码之丑
郑晔
推文科技技术VP,前火币网首席架构师
新⼈⾸单¥19.9
1391 人已学习
课程目录
已完结 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
登录|注册

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

郑晔 2021-02-06
你好,我是郑晔。
在这个专栏刚开始的时候,我给你留了一个课前作业,实现一个待办事项管理的软件。许多同学都利用自己的业余时间完成了这个作业,感谢大家的付出!
学习代码的坏味道,听别人讲是一种方式,但这种方式总会让人有一种隔岸观火的感觉,虽然知道有问题,但感觉并不深刻。最直接受益的方式就是自己写了代码,然后,让别人来点评。其实,这就是某种形式的代码评审。
所以,这一讲,我们就来做一次“代码评审”,直接来看看代码中存在的问题。题目背景我就不再做过多的介绍了,如果没有来得及完成作业的同学,可以先到“课前作业区”回顾一下题目。
既然是指出问题,得罪大家可能就在所难免了,希望你不要介意,毕竟能够发现自己的问题是精进的第一步。好,我们开始!

从已知的坏味道出发

极客双同学的代码仓库里,我在一段代码中看到了之前我们课程中讲过的坏味道:
Item itemNew = new Item(item.getName());
itemNew.setUserIndex(userIndex);
itemNew.setIndex(initUserIndex);
我们的业务需求是添加 TODO 项,这段代码就是在这个过程中创建一个新的 TODO 项对象。那这段代码有什么问题?一方面,这里有 setter,另一方面,这里的 setter 只在初始化的过程中用到。显然,我们可以用一个更完整的构造函数替换掉它。
其实,从这段代码出发,我们还能看到一些小问题,比如,这里创建 TODO 项设置了两个字段,一个是 userIndex,一个是 index。index 可以理解,表示这个 TODO 项的索引,但 userIndex 是什么呢?你需要仔细阅读代码才能发现,它其实是一个用户的标识,表示这个索引项是由某个用户创建的。既然是用户标识,按照通常的做法它可以叫 userId,这就降低了理解的难度。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《代码之丑》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(3)

  • 陈文昕
    “用 I 表示接口,用 Impl 表示实现”,这种问题需要怎么修改?
    目前我的写法都是 用Impl表示实现,接口就正常写成XxxxService
    2021-02-07
    1
  • 斯盖丸
    请问老师,static转成final的那步里,如果不止是UserAccounts而是其他类也要用到这同一份userContext那应该怎么获取?能保证是同一份吗?

    作者回复: 你仔细看一下,调整的过程是,先把对象变成同一个对象,然后,才是消除 static,所以,它们用的肯定是同一个对象。

    2021-02-06
    4
    1
  • Geek_3b1096
    非常喜欢一步一步重构代码教学
    2021-02-08
收起评论
3
返回
顶部