文档化开发注释规范
原则
- 在语言要求的地方注释,以标准的注释语法!
- 注释说明必要的信息,我们不期望精彩的小说在注释中诞生!
- 适当的版本标识
- 尽量使用CVS等版本管理系统自动提供的解析
- 因为如果自个儿来写的话难以统一修改
- 适当的设计思路描述
- 适当的算法设计描述
文档化标签
- 由于开发语言非常丰富,所以选择了最通用和稳定的文档化工具来支持:
DoxyGen 是种支持 C++, C, Java, Objective-C, IDL (Corba and Microsoft flavors) 以及 PHP, C# and D 等等语言的文档化工具.
- 成熟,功能强大,支持广泛
- 甚至于提供了图形界面的管理工具
- 对于所有支持多行注释的语言其实都可以应用
epydoc
- 是纯Python 实现的 Python 专用文档化工具
- 与Python 结合非常自然,稳定,可扩展
基础标签命令
仅仅列举我们推荐使用的文档化标签,进一步的标签命令,请自行进入相关页面学习
EpyDoc注释规范 |
DoxyGen注释规范 |
epydoc 解析支持的标签规范
py常用命令
讲述基本的常用标签命令
py文献信息
@author: ... |
作者 |
@license: ... |
版权 |
@contact: ... |
联系 |
py状态信息
@version: ... |
版本推荐使用$Id$ |
@todo [ver]: ... |
改进,可以指定针对的版本 |
py模块信息
@var v: ... |
模块变量v 说明 |
@type v: ... |
模块变量类型v 说明 |
py函式信息
@param p: ... |
参数 p 说明 |
@type v: ... |
参数 p 类型说明 |
@return: ... |
返回值说明 |
@rtype: ... |
返回值类型说明 |
py提醒信息
@note: ... |
注解 |
@attention: ... |
注意 |
@bug: ... |
问题 |
@warning: ... |
警告 |
py关联信息
py标签格式
约定文档化标签的语法 - epydoc 支持三种标签的语法!
Epytext: @tag: 内容... ReStructuredText: :tag: 内容... Javadoc: @tag 内容... - 为了简化学习,在新浪标准化开发中我们推荐统一使用
@tag: 内容... 格式
py注释风格
约定文档化标签放置 - 依照Python 本身的注释风格自然的进行
Toggle line numbers
1
2 """Otter Tools main script
3 @version: $Id$
4 @author: U{Zoom.Quiet<mailto:Zoom.Quiet@gmail.com>}
5 @see: 参考资料链接等等
6 """
7 import sys,string
8 class ottool:
9 """Otter Tools 主类
10 - 组织其它小工具,完成任务
11 @todo: 计划完成……
12 """
13 def __init__(self):
14 """调用相关模块,初始化(当前比较简单,对象初始化时就完成所有任务)
15 - 应用 OtCUI 参数理解;获得有效变量
16 """
17 self.cui = OtCUI.otcui()
18 ...
__init__.py 中的注释成为包文档 - 文件头部注释成为模块文档
- 紧贴 class 声明后的注释成为类文档
- 紧贴 def 声明后的注释成为函式文档
-- ZoomQuiet (2005-01-26) |
doxygen 解析支持的标签规范
dox常用命令
讲述基本的常用标签命令
dox文献信息
@author ... |
作者 |
@brief ... |
摘要 |
@file ... |
文件声明 |
dox状态信息
@version ... |
版本推荐使用$Id$ |
@todo ... |
改进,可以指定针对的版本 |
dox模块信息
@var ... |
模块变量 说明 |
@typedef ... |
模块变量类型说明 |
dox函式信息
@param p ... |
参数 p 说明 |
@arg ... |
列表说明参数 信息 |
@return ... |
返回值说明 |
@retval ... |
返回值类型说明 |
dox提醒信息
@note ... |
注解 |
@attention ... |
注意 |
@bug ... |
问题 |
@warning ... |
警告 |
dox关联信息
dox标签格式
约定文档化标签的语法 - epydoc 支持两种标签的语法!
doxygen: \tag 内容... Javadoc: @tag 内容... - 为了简化学习,在新浪标准化开发中我们推荐统一使用
@tag: 内容... 格式
dox注释风格
约定文档化标签放置 - 依照C/C++ JAVA 类别语言注释风格自然的进行
- {{{/**
- 一个示范类,描述在此
*/
class Test{ - public:
- /** enum TEnum {
- /** Test(); /**
- 一个普通函式 描述和参数等等的叙述
- @param a 整数参数
- @param s 字串指针参数
- @see Test() 参看..
- @return 返回值描述
- / int testMe(int a,const char *s);
/** - 纯虚成员函式
- @see testMe() 参看
- @param c1 第一参数
- @param c2 第二参数
- / virtual void testMeToo(char c1,char c2) = 0;
/** - 一个公共变量
- 详细描述
- / int publicVar;
}; }}}
-- ZoomQuiet (2005-01-26) |
输出美化控制
EpyDoc注释输出控制 |
DoxyGen注释输出控制 |
块结构
段落
列表
象MoinMoin 等等结构化文本一样,通过缩进来声明,使用 数字 或是 “-” 来引导列表项 - 可以混合
def example():
"""
此为段落.
1. 此为列表项
- 此为子列表
- 子列表第二项
- 此为次层列表,同样可以继续列表下去
- 只要有一致的缩进
2. 此为列表第二项
可以包含段落和测试引用
>>> print '此为测试引用语句'
此为测试引用语句
此为第二段
"""
[...] - 将生成文档为:
此为段落. - 此为列表项
- 此为子列表
- 子列表第二项
- 此为次层列表,同样可以继续列表下去
- 只要有一致的缩进
- 此为列表第二项
章节
第 1 章
章节 1.1
第 2 章
引用块
使用“::”引出引用块: 原文 /
/ 引用块 此为在引用块后的段落 还是空行来区分.
行内修饰
特殊标签
URLs
交叉引用
警告
- 当然对于意外情况, epydoc 不会崩溃,只是进行警告,你可以根据提示进行修正
ZoomQuiet (2005-01-27) |
块结构
段落
列表
章节
引用块
@code 和 @endcode 框出 - 类似:
/*!
...
@par _doAllOnLoad()
@param 全局数组 g_onload
@return void 逐条调用已知的函数^_^
@note 动态加载的模块中,一些函数需要onLoad()事件触发;但是
@code window.onload= new Function ("myFunctoin();");
@endcode
将会重新注册 onLoad() 事件的运行函数,致使不能简单的使不同的模块中需要的不确定数目的 onLoad()触发函数叠加注册!
...
*/
行内修饰
@b
@c
@n
特殊标签
- 针对PHP语言,doxygen 有几个标签命令,需要关注
PHP代码说明专用
@private 私有的 @protected 保护的 @public 公开的 - 是独立说明项的声明标签
- 用以说明 类/函式/变量 的具体性质
PHP章节内容专用
@privatesection 私有的章节 @protectedsection 保护的章节 @publicsection 公开的章节 是@page 附加说明页面内容中的声明标签 - 用以领起不同性质的 类/函式/变量 说明内容
警告
- 当然对于意外情况, doxygen 不会崩溃,只是进行警告,你可以根据log 日志文件的提示进行修正
ZoomQuiet (2005-01-27) |
反馈
-- ZoomQuiet (2005-01-25)