编写优美Android注释的常用语法

短期目标是定期能出一篇简文,希望自己能坚持下去~~~~( ̄_, ̄ )


附上Android君

今天要分享的是关于Android注释系统的一些强大功能!!

实践证明,拥有良好的注释是可持续维护的重要标准

比如你直接查阅Activity.java 的源码,将会看到大量绿色的注释,而且仔细观察除了我们常规的注释外还有一些特定语法的注释。下面贴上一段来自官方的例子:

/**
 * An activity is a single, focused thing that the user can do.  Almost all
 * activities interact with the user, so the Activity class takes care of
 * creating a window for you in which you can place your UI with
 * {@link #setContentView}.  While activities are often presented to the user
 * as full-screen windows, they can also be used in other ways: as floating
 * windows (via a theme with {@link android.R.attr#windowIsFloating} set)
 * or embedded inside of another activity (using {@link ActivityGroup}).
 *
 * There are two methods almost all subclasses of Activity will implement:
 *
 * <ul>
 *     <li> {@link #onCreate} is where you initialize your activity.  Most
 *     importantly, here you will usually call {@link #setContentView(int)}
 *     with a layout resource defining your UI, and using {@link #findViewById}
 *     to retrieve the widgets in that UI that you need to interact with
 *     programmatically.
 *
 *     <li> {@link #onPause} is where you deal with the user leaving your
 *     activity.  Most importantly, any changes made by the user should at this
 *     point be committed (usually to the
 *     {@link android.content.ContentProvider} holding the data).
 * </ul>
 */

上面的注释除了用了javadoc的/** 我是注释 **/,还能看到使用了 {@link #我是一个class }类似格式语法以及HTML标签语法,如果想写出优雅的注释,提升代码的可读性和可维护性,就有必要了解下Android支持的一些注释语法了。我这里整理了一些常用的语法供大家学习参考~~~~


@link语法

适合在你的注释中引用任意一个类、字段或者方法。<br />
在使用上比较简单,直接放上使用代码:

/**
 * 这里要引用一个类 {@link package.MyClass} <br/>
 * 这里要引用一个类里面的子类 {@link package.MyClass.SubClass}<br/>
 * 这里要引用一个类里面的方法 {@link package.MyClass#method(Context, Object)} // 注意这里()里面的是方法的参数类型,使用不同的参数签名可以来区别不同的重载方法 <br/>
 * 这里要引用一个类李曼的字段 {@link package.MyClass#field} // 这里不区分字段是否是public 或者 static,都可以直接引用 <br/>
 * 这里要引用改类本身的方法或者字段 {@link #method(Context, Object)}和{@link #field}
 */

使用这个替代注释中直接写上的类名和方法名!!!**这样查看注释能用IDE直接跳转你引用的地方,并且若重构了引用的类、方法或者字段的名称,IDE也会自动替换这个地方的名称~ ** (如果你碰到经历过年代摧残的代码,你一定遇到过注释中注明的代码早已经不见的情况 -_-|||)


@linkplain语法

功能同@link语法,不过可以给显示指定一个别名<br />
用法可以参考@link,这里贴上不同的地方

/**
 * 这里要引用一个类 {@linkplain package.MyClass 别名} <br/>
 */

IDE显示效果如下

@linkplain语法

点击别名将跳转到代码处,如果要起别名做注释就用@linkplain替代@link


@param语法

适合给方法的参数写说明<br />
贴上代码

/**
 * 这是方法的说明
 * @param param1 这里是参数1的说明
 * @param param2 这是是参数2的说明
 */
void method(int 参数1, int 参数2) { }

IDE显示效果为

@param语法

用这个语法可以简单为方法参数加一些说明,比如说明一些特殊值的传入等~~


@see语法

在注释的末尾添加,适合说明需要参考的地方,一般作为补充说明用<br />
在上面的例子补充注释

/**
     * 这是方法的说明
     *
     * @param 参数1 这里是参数1的说明
     * @param 参数2 这是是参数2的说明
     *            
     * @see #method()
     * @see #method(int)
     */
    void method(int 参数1, int 参数2) {

    }

    void method() {
    }

    void method(int 参数1) {
    }

在IDE效果如图

@see语法

可以看到底部出现了See Also:的备注说明,我通常用来补充一些关联的相似的地方,如重载方法,可以参考的继承类等~~~


@deprecated语法

用于表示该方法已废弃<br />
上代码

    /**
     * @deprecated 已废弃,建议使用{@link #method(int)} (int)}
     */
    void method() {
    }

这样在代码调用的时候IDE将会给出提示

@deprecated语法

接着童鞋们查看注释时候我们的@link标签就会引导使用者去使用新的方法~~ 是不是很赞呢,妈妈再也担心我用了废弃的代码了。 Android SDK很多老API都会用这个语法做标注的


@exception语法

适合用于说明可能抛出的异常类型,以及在什么情况下抛出异常
放上一段参数校验代码

    /**
     * 这是方法说明
     * @param age
     * @exception IllegalArgumentException 校验参数有问题将抛出,如age < 0
     */
    void method(int age) {
        if (age < 0) {
            throw new IllegalArgumentException("age must >= 0!!!");
        }
        // TODO ...
    }

查看IDE注释,如图

exception语法

对于异常部分将有Throws:引出,完美提示我为何要抛你异常!!!~~~


<pre class="prettyprint">语法

适合在你的注释中放上一段高亮的代码<br />
比如

/**
 * 以下是本类方法的执行顺序
 * <pre class="prettyprint">
 * public class Activity extends ApplicationContext {
 *     protected void onCreate(Bundle savedInstanceState);
 *
 *     protected void onStart();
 *
 *     protected void onRestart();
 *
 *     protected void onResume();
 *
 *     protected void onPause();
 *
 *     protected void onStop();
 *
 *     protected void onDestroy();
 * }
 * </pre>
 */

然后在你查看这段注释时,IDE将会显示成


高亮的代码段


语法

用于注释的换行<br />
在敲注释的时候可能你会碰到用enter键换行无效的情况,这个时候用
在行的尾部就行了:

/**
 * 第一行<br />
 * 第二行<br />
 * 最后一行
 */

<a/>语法

除了HTML本身支持链接到一个特定URL,也能起到跟<@link>语法一样的引用作用。<br />

直接上代码:

/**
 * <ul>
 *     <li><a href="#FROM_WHERE_SHOW_TEAM">可以参考这个字段</a></li>
 *     <li><a href="package.MyClass">参考这个类</a></li>
 * </ul>
 */

效果如图

<a/>语法

通过IDE点击超链接将直接跳转到对应代码位置~~~~适合给引用起别名,也能很好的放在HTML语法里面


<h/>语法

用于给注释加小标题<br />
上代码,这里用的是<h3/>

/**
 * <h3>Class Info</h3>
 *  我是Class Info内容
 * <h3>Usages</h3>
 *  我是Usages内容
 * <h3>Help</h3>
 *  我是Help内容
 */

IDE查看效果如图:

<h/>语法

@docRoot语法

这里是直接用Stack Overflow大神的说法

Here @docRoot is used to compose a reference to an html tutorial. In my case @docRoot translates to the following path:
file:/C:/Users/<username>/AppData/Local/Android/android-sdk/docs/reference/

贴上Stack Overflow链接, 意思大致是说这里可以引用到本地安装的sdk的docs位置下。通常是用来在注释中引入docs的资源。
这里给上官方的注释:

/**
 * <p>See the <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>* document for more information on permissions and security in general.
 */

IDE查看效果为

@docRoot语法

小结

Android自带的注释语法太多,这里只列了一些常用的,欢迎看到的童鞋留言分享好用的注释语法~~~<br />(写多了br我这里是用br换行的。。。啦啦啦)

Android除了@语法还能支持基本所有的HTML标签,不过只有合理使用才能写出完美注释,减少团队合作的成本,提高代码可读性.

·
·
·
·
·
·
·
·
·

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,231评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,554评论 18 139
  • “爱”是作为个体的人与生俱来的本能,“爱人”是作为一个完整的人所具备的最基本要素,“爱情”是作为人类生生繁衍的一个...
    Wtongcan阅读 1,386评论 0 0
  • X公司要在暑假开B课程,但是教室有限,还要为其他已经就读的学员考虑并预留教室。 K老师申请开B课程,有些教室...
    Critik阅读 215评论 0 1
  • 1.对于JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivor...
    好大一只鹏阅读 279评论 0 1