`
changyehappy
  • 浏览: 19257 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

13个代码注释的小技巧--转载

阅读更多
一直在考虑怎么正确写注释,一下这篇文章介绍了我们呢一些注意事项;希望能够对我自己有所提高。

这篇文章是由José M. Aguilar在他卓越的博客中以西班牙语的形式首发,其后Timm Martin在获得Aguilar先生的授权下,对该文章进行翻译、修改,并且在DevTopics上发布。

以下13个小技巧可以使得你的代码在长时间内依然能够保持容易理解和维护。

1. 对不同级别的代码进行注释

对于不同级别的代码块,要使用统一的方法来进行注释。例如:

    * 对于每一个类,需要包含一段简明扼要的描述,作者和上一次修改的时间
    * 对于每一个方法,需要包含这个方法的用途,功能,参数以及返回结果

当你在一个团队里面的时候,采用一套注释的标准是非常重要的。当然,使用一种大家都认可的注释约定和工具(例如C#的XML注释和Java的Javadoc)在一定程度上能推动这项任务。

2. 使用段落注释

首先把代码块分解成多个“段落”,每一个段落都执行单一的任务;然后在每一个“段落”开始之前添加注释,告诉阅读代码的人接下来的这段代码是干什么用的

    // 检查所有记录都是正确的
    foreach (Record record in records)
    {
        if (rec.checkStatus()==Status.OK)
        {
            . . .
        }
    }
    // 现在开始进行处理
    Context ctx = new ApplicationContext();
    ctx.BeginTransaction();
    . . .

3. 对齐注释行

对于那些在行末写有注释的代码,应该对齐注释行来使得方便阅读

    const MAX_ITEMS = 10; // maximum number of packets
    const MASK = 0x1F;    // mask bit TCP

有些开发人员使用tab来对齐注释,而另外一些人会用空格来对齐。由于tab在不同的编辑器和集成开发环境中会有所不同,所以最佳的方法是使用空格来对齐注释行。

4. 不要侮辱阅读者的智慧

要避免没用的注释,例如

    if (a == 5)        //如果a等于5
        counter = 0    //把counte设为0

这不单把时间浪费在写没用的注释上面,同时也在分散读者的注意力。

5. 要有礼貌

应当避免没有礼貌的注释,例如“要注意一些愚蠢的用户会输入一个负数”,或者“修正由菜鸟工程师写的愚蠢得可怜的代码而导致的副作用”。这样的注释对于代码的写注释的人来说并没有任何好处,同时你永远都不会知道将来这些注释会被谁来阅读,你的老板,一个客户或者是刚才被你数落的愚蠢得可怜的工程师。

6. 直截了当

不要在注释里面写过多的废话。避免在注释里面卖弄ASCII艺术,写笑话,作诗和过于冗长。简而言之就是保持注释的简单和直接。

7. 使用统一的风格

有些人觉得注释应该让非程序员也能看懂。另外一些人觉得注释需要面对的读者只是程序员。无论如何,正如Successful Strategies for Commenting Code中所说的,最重要的是注释的风格需要统一,并且总是面向相同的读者。就自己而论,我怀疑非程序员是否会去读代码,所以我觉得注释应该面向程序员来写。

8. 在内部使用特殊的标签

当你在一个团队里工作的时候,采用一组一致的标签能帮助不同的程序员沟通。例如,很多团队会采用“TODO”标签来表示一段尚未完成的代码

    int Estimate(int x, int y)
    {
        // TODO: implement the calculations
        return 0;
    }

标签注释并不会解释代码,它们寻求注意或者是传递信息。但是如果适当地使用这种技术,要记住跟进这段代码并且完成该标签传递的任务。

9. 在写代码的同时添加注释

当你在写代码而且记忆犹新的同时就添加注释。如果等到项目后期才添加注释,会让你事倍功半。“我没有时间写注释”,“我的时间很紧迫”和“项目已经延迟了”,这些都是不写注释的常见借口。有些工程师觉最佳的解决方法是“注释先行”。例如:

    public void ProcessOrder()
    {
        // Make sure the products are available
        // Check that the customer is valid
        // Send the order to the store
        // Generate bill
    }

10. 把自己想象为注释的读者(事实上就是如此)

当你正在给代码写注释的时候,不仅仅为日后维护你的代码的开发者考虑,同时也设想一下如果自己就是注释的读者。Phil Haack曾经说过:

    “一旦一行代码被敲到文件中, 你就已经要开始维护那一行代码了。”

所以,我们自己就是好(或者坏)注释的第一个受益者(或者受害者)。

11. 更新代码的时候要更新注释

如果注释没有随着代码的修改而更新,那么这些注释将是毫无意义的。代码和注释需要同步,否则注释只会让维护代码的开发者更加痛苦。需要特别注意的是,一些重构的工具会自动更新代码,但是却没有自动更新注释,那么注释就自然而然地过期作废了。

12. 良好可读性代码是注释的金科玉律

对于很多开发者来说,一个基本的原则就是:让代码自己描述自己。虽然有人怀疑这是由不喜欢写注释的程序员所倡导的一场运动,但是无需解释的代码有很大的好处,这些代码更加容易理解甚至让注释变得没有必要。例如,在我的文章Fluid Interfaces中就给大家展示了什么是清晰的无需解释的代码。

    Calculator calc = new Calculator();
    calc.Set(0);
    calc.Add(10);
    calc.Multiply(2);
    calc.Subtract(4);
    Console.WriteLine( “Result: {0}”, calc.Get() );

在这个例子里面,注释就像是违反了第4条技巧那样,变得毫无必要。要写出可读性好的代码,你需要使用适当的命名方式(在经典的Ottinger’s Rules中有阐述),保证恰当的缩进,并且采用编码风格指导。如果代码不遵守这条技巧,那么注释看起来就好像是为自己不好的代码的写道歉信一样。

13. 跟你的同事分享这些技巧

虽然从第10条技巧中我们已经知道了自己就是好注释的得益者,但是这些技巧对于所有的开发者来说都是很有帮助的,尤其是整个团队都有相同共识的情况下。因此,大方地跟你的同事去分享这些技巧,让我们写出更加容易理解和维护的代码。
分享到:
评论

相关推荐

    LibSVM-2.6程序代码注释

    这个2.6版本的程序代码注释是开发者们为了帮助用户更好地理解和使用LibSVM而提供的详细指南。 LibSVM的核心在于支持向量机(SVM),这是一种监督学习模型,主要用于分类和回归分析。其基本思想是通过找到一个最优超...

    VINS-Mono代码注释以及公式推导

    VINS-Mono代码注释以及公式推导

    JAVA代码注释范例 - 基础知识 - 周老师科研站.mht

    JAVA代码注释范例 - 基础知识 - 周老师科研站, JAVA代码注释范例 - 基础知识 - 周老师科研站

    测试软件-代码注释统计

    通过分析这些源码,开发者可以学习到如何实现代码注释的自动统计,这对于提升自身的编程技巧和理解代码质量的重要性大有裨益。 代码注释统计软件通常会依据一定的规则进行计算,如计算注释行数占总代码行数的比例,...

    Android-BeautifulNotes-优美的代码注释

    总之,"Android-BeautifulNotes-优美的代码注释"项目关注的是如何通过注释提升代码的可读性和可维护性,这对于任何Android开发者来说都是一个宝贵的资源。通过学习和实践其中的原则和技巧,我们可以使自己的代码更加...

    基于yolov5-5.0的中文注释版本(注释超详细-保姆级别).zip

    【资源说明】基于yolov5-5.0的中文注释版本(注释超详细-保姆级别).zip基于yolov5-5.0的中文注释版本(注释超详细-保姆级别).zip基于yolov5-5.0的中文注释版本(注释超详细-保姆级别).zip基于yolov5-5.0的中文注释版本...

    Eclipse代码注释模版-codetemplates.xml

    Eclipse代码注释模版-codetemplates

    lego loam代码注释

    通常,源代码会分为数据预处理、特征提取、匹配、运动估计和建图等多个模块,每个模块都有详细的注释来解释其功能和工作原理。 5. **学习与实践** 学习乐高LOAM时,可以按照以下步骤: - 阅读代码注释,理解每一...

    ns-3实例代码注释大全

    "ns-3实例代码注释大全" ns-3是一个开源的网络...本文档提供了一个详细的ns-3实例代码注释大全,非常适合初学者学习使用。ns-3是一个强大的网络模拟器,能够模拟各种网络场景和协议,帮助用户快速构建网络模拟环境。

    基于Python实现的飞鸟小游戏源码+代码注释-课程大作业.zip

    基于Python实现的飞鸟小游戏源码+代码注释-课程大作业.zip基于Python实现的飞鸟小游戏源码+代码注释-课程大作业.zip基于Python实现的飞鸟小游戏源码+代码注释-课程大作业.zip基于Python实现的飞鸟小游戏源码+代码...

    ORB_SLAM3源码(附带详细注释)

    本资源包含ORB_SLAM3的源代码,并且附带了详细的注释,这对于理解其工作原理和进行二次开发非常有帮助。 SLAM问题的核心在于如何在一个未知环境中,通过传感器数据来同时估计机器人位置和环境的三维结构。ORB_SLAM3...

    NSGA-III算法-matlab版本-写满了中文注释

    这是从mathwork上下载的NSGA-3的代码,自己写的注释。因为也没有完全弄懂代码,所以有些地方空着没写注释,有些地方还注释了问号。就是希望能和大家一起讨论交流一下,希望大家指正。希望弄懂代码的小伙伴能回帖说...

    Eclipse 代码注释模板

    Eclipse是一款广泛使用的Java集成开发环境(IDE),它提供了丰富的功能来帮助开发者高效地编写、调试和管理代码。其中,代码注释模板是...因此,熟悉并掌握Eclipse的代码注释模板配置是每个Java开发者必备的技能之一。

    mybatis-generator-core-1.3.2注释修改

    2. **理解源码结构**:MBG的核心在于`org.mybatis.generator.api`包,其中`JavaModelGenerator`、`SqlMapGenerator`和`JavaClientGenerator`三个类分别负责生成Java模型、SQL映射文件和Java客户端接口。我们需要关注...

    linux内核代码注释

    对于像Linux这样的开源项目而言更是如此,因为这涉及到全球成千上万的开发者共同维护同一个代码库。注释可以帮助新加入的开发者更快地理解现有代码的功能、逻辑以及设计思路,从而提高整体的开发效率。 ### Linux...

    自定义注释的mybatis-generator-core-1.3.6.jar

    自定义注释的mybatis-generator-core-1.3.6.jar, 可以带表字段注释的实体类

    HECO标准智能合约-代码功能后面注释已备注-欢迎学习及使用

    HECO标准智能合约-代码功能后面注释已备注-欢迎学习及使用

    基于Bi-LSTM与FastText网络舆情情感分析python源码+详细代码注释.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设...基于Bi-LSTM与FastText网络舆情情感分析python源码+详细代码注释.zip

    代码注释率统计工具下载

    代码注释是编程实践中至关重要的一个环节,它有助于提高代码的可读性和可维护性。注释率是指源代码中的注释行数占总代码行数的比例,通常用来衡量代码的文档质量。`linecount`是一款用于统计代码注释率的工具,其...

    Xcode 快速注释插件VVDocumenter-Xcode-master

    `VVDocumenter-Xcode` 是一个针对Xcode的第三方插件,它极大地简化了代码注释的过程,特别是对于遵循Apple的Swift或Objective-C编程语言的开发者来说。 标题中的"Xcode 快速注释插件VVDocumenter-Xcode-master"指的...

Global site tag (gtag.js) - Google Analytics