代码精进之路
范学雷
Oracle首席软件工程师,Java SE安全组成员,OpenJDK评审成员
立即订阅
6350 人已学习
课程目录
已完结 47 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你写的每一行代码,都是你的名片
免费
第一模块:代码“规范”篇 (16讲)
01 | 从条件运算符说起,反思什么是好代码
02 | 把错误关在笼子里的五道关卡
03 | 优秀程序员的六个关键特质
04 | 代码规范的价值:复盘苹果公司的GoToFail漏洞
05 | 经验总结:如何给你的代码起好名字?
06 | 代码整理的关键逻辑和最佳案例
07 | 写好注释,真的是小菜一碟吗?
08 | 写好声明的“八项纪律”
09 | 怎么用好Java注解?
10 | 异常处理都有哪些陷阱?
11 | 组织好代码段,让人对它“一见钟情”
12丨组织好代码文件,要有“用户思维”
13 | 接口规范,是协作的合约
14 | 怎么写好用户指南?
15 | 编写规范代码的检查清单
16丨代码“规范”篇用户答疑
第二模块:代码“经济”篇 (14讲)
17 | 为什么需要经济的代码?
18丨思考框架:什么样的代码才是高效的代码?
19 | 怎么避免过度设计?
20 | 简单和直观,是永恒的解决方案
21 | 怎么设计一个简单又直观的接口?
22丨高效率,从超越线程同步开始!
23 | 怎么减少内存使用,减轻内存管理负担?
24 | 黑白灰,理解延迟分配的两面性
25 | 使用有序的代码,调动异步的事件
26 | 有哪些招惹麻烦的性能陷阱?
27 | 怎么编写可持续发展的代码?
28 | 怎么尽量“不写”代码?
29 | 编写经济代码的检查清单
30丨“代码经济篇”答疑汇总
第三模块:代码“安全”篇 (14讲)
31 | 为什么安全的代码这么重要?
32 | 如何评估代码的安全缺陷?
33 | 整数的运算有哪些安全威胁?
34 | 数组和集合,可变量的安全陷阱
35 | 怎么处理敏感信息?
36 | 继承有什么安全缺陷?
37 | 边界,信任的分水岭
38 | 对象序列化的危害有多大?
39 | 怎么控制好代码的权力?
40 | 规范,代码长治久安的基础
41 | 预案,代码的主动风险管理
42 | 纵深,代码安全的深度防御
43 | 编写安全代码的最佳实践清单
44 | “代码安全篇”答疑汇总
加餐 (1讲)
Q&A加餐丨关于代码质量,你关心的那些事儿
结束语 (1讲)
结束语|如何成为一个编程好手?
代码精进之路
登录|注册

Q&A加餐丨关于代码质量,你关心的那些事儿

范学雷 2019-01-08
专栏上线后,有一些同学对于代码质量有关的问题还不是很清楚,有很多疑问,所以我特意做了一期 Q&A,来回答一下这些问题。

1. 有没有什么技巧可以不费力地查看源代码?

这是一个好问题。但遗憾的是,我们费力的程度,主要取决于代码的作者,而不是我们自己。我想了好久,也没有找到不费力气查看源代码的技巧。
通常我自己用的办法,有时候就像剥洋葱,从外朝里看;有时候也像挖井,找到地表的一小块地儿,朝下一直挖,直到我理解了代码的逻辑关系。
如果你刚开始接触,我建议你先不要看代码,先去看 README,再去看用户指南。先把软件干什么、怎么用搞清楚。然后再去看开发者指南,搞清楚模块之间的关系、功能,理解代码中的示例。最后,再去看代码。
看代码的时候,找一个顺手的 IDE。IDE 丰富的检索功能,可以帮助我们找到一个方法,在什么地方定义的,有哪些地方使用了。
如果你还不知道要看哪一个源代码,先找一个例子开始。不管这个例子是开发指南里的,还是测试代码里的。先找出一个例子,把它读懂,然后阅读例子中调用的源代码。
比如,你要是看到示例代码调用了 Collections.unmodifiableList​() 方法,如果想了解它,就查看它的规范文档或者源代码。从例子开始剥每一个你关心的方法,一层一层地深入下去。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《代码精进之路》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(11)

  • 👽 置顶
    第二个问题个人认为目标还是——经济

    关于第二个问题,个人认为可能不能算是鱼和熊掌,可能更偏向于鱼和鱼竿。

    一面是很多鱼,而另一面是一根鱼竿。二选一。
    另外效率这个词,个人认为不恰当。效率是保障质量的前提下更高的产出。个人把这个理念替换为速度。

    速度质量二选一。理想化肯定是质量。但是实际上还要参考实际情况。

    类似于我们公司的团队,碰到这样的项目,明天就要求能看到效果。都来不及做详细设计,直接把以前的项目拿来改一改调试一下就拿去演示了。然后后续再进行优化调试完善。

    这种硬环境下,不是不保障。而是无暇保障。
    另一种情况,是有些功能模块,重要性不是很高,甚至根本不会有人用。只是个凑数投标的模块,但是这个模块测试以及优化的话可能很复杂。这时候,去花费大量时间精力在上面明显是不合适的。就假设,这个模块定价1000,但是为了这个模块的测试优化就花了800的成本,公司是不愿意为你的高质量代码买账的。

    再举个反例。某模块追求速度开发。两天做完,节约了一天代码优化以及测试的步骤。但是未来的某天,发现这里有个坑。因为代码很久没有看过。导致这个坑难以找到问题所在,最后导致功能模块几乎重写。这里就是不应该因为速度舍弃质量的例子。

    综上所述,个人认为,取舍的终极目标。还是老师之前说到的——经济

    但是达到这个,并不容易。不仅仅是编写高质量代码的习惯与能力。还有不可或缺的经验,以至于可以灵活取舍。

    但是——我们至少要有高质量编码的能力与基础。这样,在你有经验的时候才可以做到灵活的取舍。

    作者回复: 能力和习惯是基础啊。鱼和鱼竿的类比,我第一次看到,很有意思👍

    2019-01-08
    11
  • 李英权
    最近接手一个质量不高的JAVA工程,读代码过程中 摸索出一个经验——用eclipse的bookmark功能为代码创建索引,现实世界的代码库 大多数像是没有索引的图书馆,运气好的你遇到有文档的项目 也不过是残缺的过期的和错误的引索。
    所以需要你去重建准确的索引,eclipse的bookmark用好了 可以达到这个目的。

    作者回复: 这是个好办法,小伙伴找找其他的IDE有没有类似的功能。

    2019-01-08
    1
    11
  • 余衫酉
    作为团队负责人,以前推行过upsource作为代码审查工具,这工具和idea结合起来,非常好用。结果怎么样呢,发现工具是次要的,项目各种赶,各种应标废标,各种演示项目。能谈下的项目经过商务的一再拖延最后留给研发的时间少的可怜,结果就是导致低效的加班赶进度,代码都不忍直视,怕小心脏受不了。理想很丰满,现实很骨感,对于主要业务是短期外包的公司来说,只希望用廉价劳动力快速交差。

    作者回复: 理解这种状况! 这种加班其实是恶性循环,时间越紧,代码质量越难以保证;代码质量越差,能复用的东西积累越难,加班就越多。

    2019-01-13
    3
  • xavier
    老师讲得很好,我觉得很多人跟我一样,就因为见识不够,不知道如何去编写高质量的代码。老师可以提供一些实践性的项目或者资源,供大家学习、操作。

    作者回复: 专栏的文章就像一个引子,练手题的就是引玉的砖,留言区有很多好东西。我们用好留言区,多参与,多评论。

    你的建议很好,我想一想有没有可以参与的项目。OpenJDK当然是现成的一个项目。学了算法,你可以看看是不是可以优化Java的类库。学了接口设计,你可以看看Java类库哪些接口设计的好,哪些设计的不好。 你目前工作的项目,😁也是一个可以改进的项目。

    2019-01-08
    3
  • liu
    广博精深,做好取舍。大处着眼,细处着手;质量从过程抓起,从细节抓起,做好质量把控;同时注重反馈总结。方向对了,过程把握好了,结果不会太坏。

    作者回复: 👍

    2019-01-08
    2
  • hyeebeen
    是否可以通过调用链路来帮助我们从整体去认识类与类、方法与方法之间的关系,然后再去“剥洋葱”?

    作者回复: 也是个好办法!debug的调用堆栈分析就是这么做的。

    2019-03-23
    1
  • 若尘
    从编写,测试,交付,使用的大视角拆解效率,结论是质与量两个变量,质跟效率相关性更高,又一次证明了慢慢做会更快

    作者回复: “大视角”👍

    2019-01-09
    1
  • 虢国技匠
    打卡

    作者回复: 加油

    2019-01-08
    1
  • allean
    老师您好,质量高的代码是否意味着使用恰当的设计模式?

    作者回复: 也不一定,设计模式是经验总结,只是好代码的一小部分。不过,学设计模式有助于理解接口设计。

    2019-01-08
    1
  • Sisyphus235
    代码的开发最重要的影响因素之一是经济,有时候为了效率,很多部分我都会写 TODO,因为交付时间总是很急迫,来不及认真的设计架构和实现。有过几次因为这样开发,不长时间就要停下来重构的经历后,我现在往往会在开发新功能的时候,把涉及部分的 TODO 一起做了,局部重构,以解决开发速度和代码质量的问题。
    2019-05-21
  • 老吴
    养肥了 可以开始看了

    作者回复: 哈哈,打开方式多样啊。

    2019-02-20
收起评论
11
返回
顶部