代码精进之路
范学雷
前 Oracle 首席软件工程师,Java SE 安全组成员,OpenJDK 评审成员
38234 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
结束语 (1讲)
代码精进之路
15
15
1.0x
00:00/00:00
登录|注册

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

4. 代码安全理解
3. Java开发流程的迭代
2. 代码质量与工作效率的取舍
1. 查看源代码技巧
文章主题总结

该思维导图由 AI 生成,仅供参考

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

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

这是一个好问题。但遗憾的是,我们费力的程度,主要取决于代码的作者,而不是我们自己。我想了好久,也没有找到不费力气查看源代码的技巧。
通常我自己用的办法,有时候就像剥洋葱,从外朝里看;有时候也像挖井,找到地表的一小块地儿,朝下一直挖,直到我理解了代码的逻辑关系。
如果你刚开始接触,我建议你先不要看代码,先去看 README,再去看用户指南。先把软件干什么、怎么用搞清楚。然后再去看开发者指南,搞清楚模块之间的关系、功能,理解代码中的示例。最后,再去看代码。
看代码的时候,找一个顺手的 IDE。IDE 丰富的检索功能,可以帮助我们找到一个方法,在什么地方定义的,有哪些地方使用了。
如果你还不知道要看哪一个源代码,先找一个例子开始。不管这个例子是开发指南里的,还是测试代码里的。先找出一个例子,把它读懂,然后阅读例子中调用的源代码。
比如,你要是看到示例代码调用了 Collections.unmodifiableList​() 方法,如果想了解它,就查看它的规范文档或者源代码。从例子开始剥每一个你关心的方法,一层一层地深入下去。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Java开发流程的变化对于代码质量和工作效率的影响 在Java开发领域,随着技术的不断演进,开发流程也经历了重大变化。首先,Java开源后,开发流程更加开放,通过OpenJDK社区的讨论和评审,创新性的想法能够更快地送到用户面前,这种开放反而加快了Java的演进。其次,研发节奏加快,从传统的几年一个版本变为半年一个版本,使得改进能更快地得到用户反馈,提高了效率。最后,自动化程度提高,每一个变更都会自动运行很多测试,这些自动化的测试可以提高代码的质量,减轻工程师的压力,提高工作的效率。 另外,文章还强调了代码的安全性,指出了代码安全与效率之间并非矛盾的关系。通过对TLS 1.3项目的讨论,作者认为代码的安全性取决于对安全问题的认识,见识是一个重要的因素。同时,编写安全的代码并不一定会牺牲工作效率,相反,会让思路更清晰,提高编码效率,甚至减少代码量。因此,代码质量、工作效率、软件性能、代码安全并不适用于简单的对比,它们可以相互促进,而非相互牺牲。 总的来说,Java开发流程的变化对于代码质量和工作效率有着积极的影响,通过开放的开发流程、加快的研发节奏和提高的自动化程度,能够更好地提升代码质量和工作效率。同时,文章也强调了代码的安全性与效率并非矛盾,而是可以相互促进的。这些观点对于读者了解Java开发流程的变化及其对代码质量和工作效率的影响具有重要的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《代码精进之路》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • 👽
    置顶
    第二个问题个人认为目标还是——经济 关于第二个问题,个人认为可能不能算是鱼和熊掌,可能更偏向于鱼和鱼竿。 一面是很多鱼,而另一面是一根鱼竿。二选一。 另外效率这个词,个人认为不恰当。效率是保障质量的前提下更高的产出。个人把这个理念替换为速度。 速度质量二选一。理想化肯定是质量。但是实际上还要参考实际情况。 类似于我们公司的团队,碰到这样的项目,明天就要求能看到效果。都来不及做详细设计,直接把以前的项目拿来改一改调试一下就拿去演示了。然后后续再进行优化调试完善。 这种硬环境下,不是不保障。而是无暇保障。 另一种情况,是有些功能模块,重要性不是很高,甚至根本不会有人用。只是个凑数投标的模块,但是这个模块测试以及优化的话可能很复杂。这时候,去花费大量时间精力在上面明显是不合适的。就假设,这个模块定价1000,但是为了这个模块的测试优化就花了800的成本,公司是不愿意为你的高质量代码买账的。 再举个反例。某模块追求速度开发。两天做完,节约了一天代码优化以及测试的步骤。但是未来的某天,发现这里有个坑。因为代码很久没有看过。导致这个坑难以找到问题所在,最后导致功能模块几乎重写。这里就是不应该因为速度舍弃质量的例子。 综上所述,个人认为,取舍的终极目标。还是老师之前说到的——经济 但是达到这个,并不容易。不仅仅是编写高质量代码的习惯与能力。还有不可或缺的经验,以至于可以灵活取舍。 但是——我们至少要有高质量编码的能力与基础。这样,在你有经验的时候才可以做到灵活的取舍。

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

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

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

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

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

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

    作者回复: 专栏的文章就像一个引子,练手题的就是引玉的砖,留言区有很多好东西。我们用好留言区,多参与,多评论。 你的建议很好,我想一想有没有可以参与的项目。OpenJDK当然是现成的一个项目。学了算法,你可以看看是不是可以优化Java的类库。学了接口设计,你可以看看Java类库哪些接口设计的好,哪些设计的不好。 你目前工作的项目,😁也是一个可以改进的项目。

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

    作者回复: 👍

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

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

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

    作者回复: “大视角”👍

    2019-01-09
    1
  • 虢國技醬
    打卡

    作者回复: 加油

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

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

    2019-01-08
    1
  • 老吴
    养肥了 可以开始看了

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

    2019-02-20
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部