




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
总账系统编程规范(项目组编程规范)总体目标本文档制定的软件编码规范希望能达到以下目标:l 易于移植l 风格一致l 易于理解l 易于维护l 代码简洁l 编程容易项目组成员个人编码风格的发挥在不违反以上目标的前提下进行。本规范主要针对商业银行综合业务系统C编码编写。本文档描述的编码规范由以下内容组成: 文件目录 文件命名 函数命名 变量命名 常量命名 文件首部 函数首部 函数定义 代码缩进 空间分隔 注释 代码排版风格文件目录源文件根据系统的划分来存放,同一个子系统的源文件放在相同目录下,公用的文件放在公用目录下。程序中关于对数据库的操作通过特定的函数进行,不允许出现SQL语句(注意:对于数据库操作的函数都放在一个单独目录下面,每个数据库表都有一个.ec程序,里面包含了所有有关该表的操作)。系统源文件目录主要划分成如下几部分:l 源文件总目录(src)l 一级目录:1 系统初始化文件;(init)系统启动过程中使用的文件2 系统主函数;(main)系统通讯main程序3 Shell文件;(sh)系统本身编写的shell文件4 头文件目录;(incl_c)子目录,保存.h文件,c声明方式5 头文件目录;(incl_ec)子目录,保存.h文件,ec声明方式6 公共头文件;(incl_pub) 公用头文件、结构、变量、宏定义等7 后台交易目录;(tx) 子目录,子交易文件(文件对应交易码)8 公共函数文件;(pubf) 子目录,所有程序公用函数的文件9 公共lib库文件;(liba) 外部.a文件10 数据过渡目录;(tranf) 旧帐过渡源程序文件l 二级目录: 1 后台交易目录:(tx)会计业务子系统;(acct)日终报表子系统;(rpt)日终处理程序;(eod)日终处理程序(报表除外)2 主机管理目录:(host)(待定)3 公共函数文件目录:(pubf)会计业务;(acct)报表业务;(rept)公共基础函数目录:(base)公共数据库操作目录:(pubdb)通讯基础函数目录:(comm)通讯基础函数目录:(bal)系统初始化函数目录:(init)日终函数目录:(eod)注意:在pubf目录的子目录下都有一个.h文件,用来声明该子目录下的所有函数。文件命名文件名都用小写字母形式,便于阅读。除了对数据库操作的文件为“.ec”程序之外,其他的所有程序都是“.c”程序。头文件为“.h”形式。l 头文件命名以“表名.h”命名,表名用小写单词。表名可以区分开存款、贷款、考核、柜员、凭证等项目。例如:现金台帐表(cash_mst),其头文件为 cash_mst.hl 交易文件的命名每个交易文件都对应一个交易码。文件名:“sp_交易码.c”使用sp_*?(service provider)命名,其中*表示交易代码,?表示序号l 公共函数文件命名英文单词缩写形式,多个单词之间用“_”连接。其缩写规则参考规范1209文件名:子目录_英文单词缩写.c例如:pub_cif_get_cif.c 表示该文件是公共函数库目录下客户中心文件目录的文件。l 其他文件名采用英文单词缩写形式。多个单词之间用下划线“_”连接。代码结构一个源文件中的代码构成一个代码模块。一个文件中的代码形成一个功能相对独立或属于某一共同特征的模块,属于不同功能组成的代码要求按不同文件存放。本编码规范要求每个源文件包含:文件首部、头文件、类型定义、全局变量定义、外部变量定义、函数声明(用来声明返回为空类型的函数)等。各组成部分用空行分隔,其中有些部分可能缺省,属于同一范畴的代码元素必须在一起集中定义说明。 功能与特征描述:比较详细地说明本模块代码的功能与特征。 头文件说明区:头文件说明区以注释行/* 头文件*/开头,然后是一行或多行C预处理器#include 指令。头文件说明区把模块中所有的头文件集中在一起进行说明。对系统和公有头文件的包含,要求使用#include 形式;对私有头文件的包含要求使用#include “dd_mst.h”形式。 宏定义区:宏定义区以注释行/* 宏定义 */开头,然后是一行或多行C预处理器#define和#undef指令(可能有条件编译指令进行控制),用以定义本代码模块使用的常数和宏定义。 类型定义区:类型定义区以注释行/* 类型定义 */开头,然后是一行或多行类型定义语句。类型定义区给出本文件使用的结构等新类型的声明。 全局变量定义区:全局变量定义以注释行/* 全局变量 */开头,然后是一行或多行全局变量定义。要求在同一行结尾处对定义变量的功能进行说明。 外部说明区:外部说明区以注释行/* 外部声明 */开头,然后是一行或多行外部变量或函数引用声明。要求先作外部变量声明,再作外部函数声明。 函数说明区:函数说明区/* 函数声明 */开头,然后是一行或多行本地定义函数声明。使用函数声明可以避免编译程序对未声明的并且定义在引用之后的函数给出警告信息。如:/* *文件首部 */ /* 头文件 */ #include #include dd_mst.h/* 宏定义 */#define MAX_FOOS 112 /* max # of foo entries */#define MIN_FATS 2 /* min # of FAT copies */* 类型定义 */typedef struct fooMsg VOIDFUNCPTR func; /* pointer to function to invoke */ int argFOO_MAX_ARGS; /* args for function */ FOO_MSG; /* 全局变量 */char *pGlobalFoo; /* global foo table */ static int numFoosLost; /* count of foos lost */ /*外部变量/函数声明*/extern int foo(int, int);extern int bar;/* 函数声明 */static int fooMat (list * aList, int fooBar, BOOL doFoo); FOO_MSG fooNext (void); 函数名定义函数:返回类型 函数名(参数1,参数2,);注意事项:l 名字应该能从字面大体了解其含义,函数名用小写字母表示;l 名字可以由多个单词组成,使用下划线符号_连接个单词。l 公共函数命名:pub_子目录_英文单词;l 局部函数命名:英文单词缩写;英文单词应该尽量使用本系统数据库部分已经约定好的缩写形式,常见的单词缩写形式见规范1209例如:Int pub_cif_get_cif_id(参数1,参数2,)表示该函数定义在公共函数部分(pubf)中客户中心子目录(cif)下的函数。Int get_ac_no( );表示局部函数。变量名变量名可以采用单词缩写下划线“_”形式,如:user_name,也可以采用单词首字母大写形式,如:UserName。尽可能在定义变量的同时初始化该变量(就近原则)。l 全局变量:全局变量定义以注释行/* globals */开头,然后是一行或多行全局变量定义。要求在每一个变量定义结尾处对变量的功能以注释形式进行说明。变量名以“g_”开头。大范围使用的变量,如全局变量,应使用长的名字,避免重复。如:/* 全局变量 */Char g_name50; /* 户名 返回给前台*/或者Char gName50; /* 户名 返回给前台*/l 局部变量:局部变量除了表示循环变量(如for(i=0;i、数组下标操作符和操作数之间不要有空格。函数名和参数表()之间不要有空格,如disp(),而不是disp ()。l 纵向空间分隔空行有助于分隔逻辑上独立的语句组合,增强代码可读性,要求函数局部变量声明和语句体之间,逻辑上独立的语句组合之间用一个空行分隔,函数声明之间用两个空行分隔。分程序标识符”“和”总是另起一新行。条件语句的条件判断部分和语句执行部分,循环语句首部和循环体必须分行书写。即不允许出现if (cond) s1; else s2;这样的语句形式。注意:尽量不要在程序中使用goto语句。但是,在少数情况下,使用goto语句可以使代码更加紧凑,甚至可以提高可读性。一旦使用了goto语句,要对每条语句加上注释,指明前向跳转还是后向跳转。不推荐在循环语句中使用goto语句;注释代码中的注释行有助于增强代码的可读性,注释行可以出现在变量声明,函数首部,代码模块等任何位置。l 在C程序中不提倡使用C+语言的注释符/;l 单行注释使用/* */格式,多行注释使用以下格式:/* * */l 代码行尾部的注释使用单行注释格式l 尚未完成或临时修改可能有问题的代码,应该用下面注释格式说明/* ? yyyy/mm/dd author: comment */l 超过15行的分程序结束符后应带注释说明与哪个分程序开始符匹配;l 建议对文件中声明的变量在行尾加以单行注释说明l 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。l 将注释与其上面的代码用空行隔开。l 对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。l 如果程序块较大,在程序块的结束行右方加注释标记,以表明某程序块的结束。如:if (.) / program code while (index MAX_INDEX) / program code /* end of while (index 80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进。示例:report_or_not_flag = (taskno MAX_ACT_TASK_NUMBER) & (n7stat_stat_item_valid (stat_item) & (act_task_tabletaskno.result_data != 0);l 循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。示例:if (taskno max_act_task_number) & (n7stat_stat_item_valid (stat_item) . / program codel 若函数或过程中的参数较长,则要进行适当的划分。示例:n7stat_str_compare(BYTE *) & stat_object, (BYTE *) & (act_task_tabletaskno.stat_object), sizeof (_STAT_OBJECT);l 一行只写一条语句。如rect.length = 0;rect.width = 0;l if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号。 如:if (pUserCR = NULL) return;l 对齐只使用空格键,不使用TAB键。l 函数的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。l 程序块的分界符“”“”应各独占一行并且位于同一列。如for (.) . / program codevoid example_fun( void ) . / program codel 在两个以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卸货平台安全培训课件
- 2025年度韩城矿业公司高校毕业生招聘86人笔试参考题库附带答案详解
- 2025年国网宁夏电力有限公司第二批招聘高校毕业生调剂笔试参考题库附带答案详解
- 2025山东威海市乳山鑫蜜客人力资源有限公司招聘书记员7人笔试参考题库附带答案详解
- 2025天津东疆综合保税区管理委员会招聘10人笔试参考题库附带答案详解
- 2025四川长虹新网科技有限责任公司招聘装调工等岗位31人笔试参考题库附带答案详解
- 2025人保财险嘉兴市分公司社会招聘3人(浙江)笔试参考题库附带答案详解
- 2025中国机械工业集团有限公司国机集团总部社会招聘19人笔试参考题库附带答案详解
- 地铁岗前安全培训课件
- 地铁基坑汛期安全培训课件
- 《构成设计基础》全套教学课件
- 项目初步验收汇报
- 2025年山东省济宁市电工等级低压电工作业(应急管理厅)真题(含答案)
- otc药品管理办法
- 康复医学科病历书写规范与质量控制
- 商用厨房设计汇报
- 战术搜索教学课件
- 教科版五年级科学上册第一单元《光》测试卷及答案(含四题)
- Linux操作系统基础任务式教程(慕课版)课件 任务4 使用Linux操作系统中的硬盘
- 自控系统报警管理制度
- 口腔服务5S管理
评论
0/150
提交评论