V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
passerbytiny
V2EX  ›  Java

关于一个 Javadoc 风格的讨论,@param、@return 是否允许空描述,即是否必须总是有描述信息

  •  
  •   passerbytiny · 2019-04-01 16:55:37 +08:00 · 2241 次点击
    这是一个创建于 2069 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有疑问的代码

        /**
         * ……
         * 
         * @param deviceNo
         * @return
         */
        public static EmbeddedChannel createChannel(String deviceNo) {
            // ....
        }
    

    如果没有特别需要的额外说明,那么 deviceNo 一目了然就是指设备号码,写成 @param deviceNo device no@param deviceNo 设备编号感觉就是脱裤子放屁。@return 同理。

    然而 Google Java Style 只给 getFoo 这种方法做宽松限制,不给 @param @return 做。

    Javadoc is optional for "simple, obvious" methods like getFoo, in cases where there really and truly is nothing else worthwhile to say but "Returns the foo".

    Javadoc 对于像 getFoo 这样的“简单、明显”的方法是 可选的,在这种情况下除了“返回 foo ”之外真的没有什么值得说的。

    Any of the standard "block tags" that are used appear in the order @param, @return, @throws, @deprecated, and these four types never appear with an empty description.

    使用的任何标准“块标记”都以 @param、 @return、 @throws、 @deprecated 的顺序出现,并且这四种类型永远不会出现空描述

    第 1 条附言  ·  2019-04-02 17:54:13 +08:00
    结案了,谷歌给的是更宽松的设置,没必要描述的时候,允许直接把 @param、 @return 就省略掉。
    7 条回复    2019-04-02 17:52:57 +08:00
    guyeu
        1
    guyeu  
       2019-04-01 17:12:02 +08:00
    方法声明做到准确达意并不适用于一切场合;
    Javadoc 不光是阅读代码的时候会用到,Javadoc 更重要的意义在于可以导出成为 API 文档,这种时候,声明方法的代码有可能会被省略,所以 javadoc 的规范里才会强制性要求不要出现空描述。
    对于没有这种需求的场景,就没有必要遵守这种规范,简单在方法上写点注释即可。
    geelaw
        2
    geelaw  
       2019-04-01 17:19:54 +08:00
    设备编号一般是 deviceId 才对(假设没有一个 dedicated 设备标识符的概念的话)。

    没什么可写就可以不写。从整个文档的角度看读者可能是熟知什么是 deviceId 的,但是从这个有限的上下文看,很容提出一个自然的问题:deviceId 是如何获得的?
    passerbytiny
        3
    passerbytiny  
    OP
       2019-04-01 18:01:18 +08:00
    @guyeu #1 即使导出 API 文档,文档上也首先显示的是方法签名,而且 @param 只是省略 @param deviceNo {device no} 最后那个文字描述,字段名部分不省略。另外 Javadoc 导出的 API 文档就是个典型的“没人看的”文档,迄今为止只有 java 6 的 chm 格式管用,html 格式的 Javadoc 连快速定位类都办不到。我现在看文档的顺序是:Develop Guide -> 源码。

    @geelaw #2 我这只是举了个例子,原始代码中是有额外说明的。现在我要解决的是,要不要在代码风格检查工具中设置为强制规则。如果强制的化,总有可能遇到加上就是脱裤子放屁的描述信息;如果不强制的化,就要找出一个打破代码风格的理由。
    xiangyuecn
        4
    xiangyuecn  
       2019-04-01 18:33:37 +08:00
    导入到 android studio 中的老代码,看起来就像一坨 si 一样,滚动条密密麻麻的黄色警告,这种提醒关也不是不关也不是
    Cbdy
        5
    Cbdy  
       2019-04-01 18:35:05 +08:00
    否,建议你看看 JDK 源码怎么写的
    passerbytiny
        6
    passerbytiny  
    OP
       2019-04-01 18:44:04 +08:00 via Android
    @xiangyuecn 这应该是你的 IDE 配置或导入方法的问题吧,IDE 干嘛要吃饱了撑地去检查 jar 包中的源代码
    passerbytiny
        7
    passerbytiny  
    OP
       2019-04-02 17:52:57 +08:00
    今天开始正式动 checkstyle 规则了,才发现谷歌做得是更宽的限制,“ Method Javadoc ” 中,allowMissingParamTags、allowMissingThrowTags、allowMissingReturnTags 全部是勾上的。

    我在这里认为 “@param deviceNo device no ” 是脱裤子放屁,人家起始定义的是 “@param ”自身就是脱裤子放屁。

    然而根据 Eclipse 的模板配置,要省略 “@param ” 就要多一个 “ Ctrl + D ”的操作,比较蛋疼。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2814 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:47 · PVG 15:47 · LAX 23:47 · JFK 02:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.