东浦数据库开发标准
2.2 函数/过程文本注释
2.2.1 一般情况下,源程序有效注释量须在30%以上
注释的原则是有助于对程序阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言须准确、易懂、简洁。
2.2.2 统一文件头的注释
示例:使用以下书写规范:
/*********************************************************************** * name: sm_insert_user_f
* purpose:向sm_users 表中写入一条记录 * revsions:
* ver date author description
* 1.0.0 2006.10.01 Tang 1.创建此存储过程 * 1.0.1 2006.12.01 Tang 1.增加hint * 2. …
* 1.2.0 2007.01.01 Tang 1.增加传入参数 * parameters:
* p_user_name in varchar2 新增用户名 * p_password in varchar2 新增用户的加密密码 * p_diabled_date in date 新增用户的过期时间 * p_created_by in number 新增用户的操作人 * p_password_cyle in number 密码更改周期
* o_message out varchar2 执行异常时返回的错误信息 * return: * 0 成功 * -1 失败 * notes:
* 1.本函数在前台调用,系统后台会自动地为last_updated_by、 * last_update_date、creation_date 赋值.
***************************************************************************/ 说明:
Name:函数或过程的名称 Purpse:函数或过程的用途 Revisions: 版本信息 Ver:当前版本
此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流
东浦数据库开发标准
Date:创建或修改日期 Author:创建人或修改人
Description:在修改时,一定要在这里写出改动的内容,用1、2、3 清晰列出来
Parameters:对传入和传出参数进行说明 return:函数返回结果
notes:使用该函数或过程时需要特别注意的事情,如果没有可以不写
2.2.3 所有变量定义需要加注释,说明该变量的用途和含义
说明该变量要用作什么
通常,简单使用单行注释就行了 例如:
l_sfzh CHAR(11) --身份证号码
2.2.4 注释内容要清晰、明了、含义准确,防止注释二义性
2.2.5 在注释中不要使用缩写,特别是不常用的缩写
在使用缩写时或之前,应进行必要的说明
2.2.6 对代码的修改,都需要注释
通过注释,标明修改的开始行、结束行,并保留修改前的代码 在注释中还要记录修改原因、修改人、修改日期等内容
2.2.7 对程序分支必须书写注释
这些语句往往是程序实现某一特定功能的关键,对于维护人员来说,良好的注释帮助更好的理解程序,有时甚至优于看设计文档。
2.2.8在代码的功能、意图层次上进行注释,提供有用、额外的信息
注释目的是解释代码的目标、功能和采用的方法,通过注释提供的信息,帮助理解代码,而不要提供重复杂、无用的注释。
示例:
以下代码注释意义不大。 --v_count = 0 if v_count = 0
而如下的注释则给出了额外有用的信息。 v_count := sm_insert_user(p1,p2,p2);
--调用其它过程执行成功 if v_count = 0 then
此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流
东浦数据库开发标准
2.2.9 注释应与其描述的代码相邻
对代码注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在被描述代码行的下方。
示例:以下编码不符合本规范: select user_name, disabled_date into v_user, v_disabled_date from sm_users su
where su.user_id = p_user_id; --取得用户的失效时间 应该如下书写: --取得用户的失效时间
Select user_name, disabled_date Into v_user_name, v_disabled_date from sm_users su
where su.user_id = p_user_id;
2.2.10 注释与所描述的内容进行同样的缩排
2.2.11注释上面的代码应空行隔开
2.2.12 在块的每个主要部分之前添加注释
在块的每个主要部分之前增加注释,解释下—组语句目的,最好是说明该段语句及算法的目的以及要得到的结果,但不要对其细节进行过多的描述,注释尽量不要破坏代码的结构。
2.2.13 在块和过程的开头注释中还可以增加要访问的数据库等信息
2.2.14 避免在一行代码或表达式的中间插入注释
2.2.15在程序块的结束行右方加注释,以表明程序块结束
2.2.16 注释用中文书写
2.2.17 复用代码需要说明
此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流
东浦数据库开发标准
3.程序编写规范
此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流
东浦数据库开发标准
3.1 日常语法规范
3.1.1 避免隐式的数据类型转换
在书写代码时,必须确定表的结构和表中各个字段的数据类型,避免在赋值和条件比较时出现隐性的数据类型转换。
示例:以下代码不符合规范,status_type 是number 型数据. select wdj.wip_entity_id from wip.wip_discrete_jobs wdj where wdj.status = ‘3’; 应如下书写:
select wdj.wip_entity_id from wip.wip_discrete_jobs wdj where wdj.status = 3;
3.1.2 使用is null 或is not null 或nvl 函数判断变量是否为空
示例:以下代码不符合规范 if v_user_name = null then
dbms_output.put_line(‘user name is null’); end if; 应该如下书写:
if v_user_name is null then
dbms_output.put_line(‘user name is null’); end if;
3.1.3 避免使用非常复杂的SQL语句
对于非常复杂的sql(特别是多层嵌套,带子句或相关的查询),应该先考虑是否设计不当引起的,对于一些非常复杂的sql 可以考虑使用程序实现,原则上遵循一句话只做一件事情。
3.1.4 尽可能地使用相关表字段的类型定义,形如%type、%rowtype
1、可以使用”%TYPE”属性而不是将变量类型硬性编码。 例如: DECLARE
v_FirstName students.first_name%TYPE;
通过使用%TYPE,v_FirstName变量将同students表的first_name列的类型相同(可以理解为将两者绑定起来)。
每次匿名块或命名块运行该语句块以及编译存储对象(过程、函数、包、对象类和触发器)时,就会确定该类型。
此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流