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

07 | 写好注释,真的是小菜一碟吗?

注释的滥用
注释为我们提供了一个借口
注释难以维护
注释不需要运行,难以测试
清晰
必要
准确
第三种注释类型的风格
第二种注释类型的风格
第一种注释类型的风格
用来解释源代码的
用来生成用户文档的
记录源代码版权和授权的
注释带来的麻烦
代码不需要注释的理想状况
一起来动手
注释用英文还是汉字呢?
注释的三项原则
简化注释的风格
几种常见注释类型
注释是无奈的妥协
写好注释,真的是小菜一碟吗?
怎么写好注释

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

上一讲中我们讲了如何整理代码,但有些时候,即便我们取好了名字,编排好格式,但代码还是让我们抓狂,不明出处,不好理解。这时候,就需要注释登场了。
顾名思义,注释就是对代码的解释。注释不需要运行,它是用来提高代码的可读性和可维护性的。不好的注释会使代码变得更糟糕,使人更抓狂。
理想虽丰满,现实很骨感。注释虽小,写好不易。那写注释有哪些注意事项?有没有什么技巧呢?今天我们就来聊聊写注释这个话题。
当然了,不同的语言,注释的语法差别很大。为方便起见,我们统一使用 Java 语言的注释语法,来解释说明写好注释的基础原则。

注释是无奈的妥协

那你是不是有这样一个问题,源代码一定需要解释吗?
其实在理想状况下,代码不需要注释。理想的代码,命名恰当,结构清晰,逻辑顺畅,含义显而易见。但正如一个作家无法预料他的读者能否清晰地理解他的文字一样,一个程序员也不能判断他的读者能否清晰地理解他写的代码。所以,写注释其实是下巧功夫。
可是,注释也是一个麻烦鬼,可能会给我们带来三个麻烦。
首先,因为注释不需要运行,所以没有常规的办法来测试它。 注释对不对?有没有随着代码变更?这些问题都是写注释需要注意的地方。注释难以维护,这是使用注释带来的最大的麻烦
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何写好代码注释以及注释使用中英文的问题。作者指出,写好注释需要遵循准确、必要和清晰的原则,以提高代码的可读性和可维护性。文章介绍了三种常见的注释类型,并提出了相应的注释风格和原则。同时,作者也讨论了在国际化项目中使用中文注释的限制,以及在国内需求文档编写时使用中文注释的情况。此外,文章还提到了如何修改代码注释以提高代码的可读性和可维护性。总的来说,本文强调了写好注释的重要性,以及避免注释滥用和过度依赖的问题。读者可以通过本文了解到如何写好注释,以及在不同情境下使用中英文注释的考量。

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

全部留言(27)

  • 最新
  • 精选
  • 彩色的沙漠
    通过本篇学习,自己写的注释犯了两个错误一是提交了注释掉的测试代码和需求变更后不需要的代码,二是使用了TODO提醒自己,写完之后没有删除。 老师最后讲的五种风格,第三种风格和第四种风格有什么区别,只发现了颜色区别,其他的一样

    作者回复: 第三种风格和第四种风格区别在方法的命名上。嗯,不太容易看出来。

    2019-01-18
    6
  • Sisyphus235
    留言区没有人讨论课后题,我抛砖引玉下。注释就像文中所说,准确、必要和清晰最重要,也就是说在不同的团队同一段代码的注释会不同,因为团队能力不同。这里我试着用比较完整的方式做一段注释,如果团队能力好,一些部分是可以省略的 import java.util.HashMap; import java.util.Map; class TwoSumSolution { /** * Given an array of integers, return indices of the two numbers * such that they add up to a specific target. */ public int[] twoSum(int[] nums, int target) { // init a map storing number and its index relation Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { // calculate the complement of current number int complement = target - nums[i]; // if map contains the complement, return complement directly, else update map with current number if (map.containsKey(complement)) { return new int[] { map.get(complement), i }; } map.put(nums[i], i); } // if the sum of any two numbers is not equal to the specific target, throw illegal argument exception throw new IllegalArgumentException("No two sum solution"); } }

    作者回复: 👍

    2019-05-22
    4
  • 如摄
    作为前端人员买了这个专栏,收获也不少…… 能不能针对js讲一个课程。

    作者回复: 这是个好主意!

    2019-01-24
    3
  • 攻城拔寨
    在代码写TODO已成为团队的习惯

    作者回复: 嗯,曾经常用的标记。有些人还保留了这个习惯,并且传承了下来。

    2019-01-27
    2
  • 进化菌
    注释,以用户思维方式去写,准确、必要、清晰,真是不错的要求!学起来~

    作者回复: 学的不错,看进度节奏掌握的很好!

    2021-11-15
    1
  • Leon
    TODO还能写吗,有些待完成的事项依靠第三方或者还没想到更优的方案、标记todo提醒自己。如果不用这个标记,怎么快速定位?

    作者回复: 使用后问题追踪记录工具。

    2021-03-25
  • Airsaid
    「需要注意的是,如果文件有变更,记得更改版权信息的年份(比如上例中的 2018)。」 关于这个问题,我看很多开源项目在代码修改后中都没有修改日期。这是怎么回事呢?

    作者回复: 有很多提交者忘记修改了,常见现象;也有的集中起来修改。

    2021-02-03
  • 卞雪达
    如果一段代码不再需要,我会清理掉代码,而不会保留这个注释掉的代码块。 --我简直不能再同意了,我曾因为错误的注释代码而导致十几万的损失,我那时候测试分支特别喜欢用注释代码的方式,因为在一个文件甚至方法里复制并注释两下,是很快能达成一个分支的。这种错误的习惯一旦养成,隐患大大滴。正如您说的,这种情况应该使用版本控制。切换的时候,应该切换不同版本的文件。确定的分支如判断开发环境或生产环境,我喜欢用配置文件…应该,是受到前端套路的影响,你知道各种前端框架都喜欢isDev,我慢慢的…觉得好像还不错…

    作者回复: 我可能要极端一点,配置文件可以,但是判断是开发环境还是生产环境的,然后使用不同分支的代码不应该出现,也是一大堆的问题。

    2019-05-14
  • 10rina-f
    刚开始工作的时候,自己写了一段代码(没有什么注释),过来一段时间,自己维护的时候花了很多时间来读自己的代码。。。深刻明白了注释的重要性(虽然当时代码写的不好也有一部分原因)

    作者回复: 是的,自己也是未来的阅读者之一。

    2019-04-10
  • 老吴
    建议英文 ,但是我们团队都是第二种,我们英语水平一般

    作者回复: 第二种也是很好的。

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