编程规范和范例-经营管理(编辑修改稿)内容摘要:
符来定义标识符。 示例:如下命名,使人产生疑惑。 define _EXAMPLE_0_TEST_ define _EXAMPLE_1_TEST_ void set_sls00( BYTE sls )。 应改为有意义的单词命名 define _EXAMPLE_UNIT_TEST_ define _EXAMPLE_ASSERT_TEST_ void set_udt_msg_sls( BYTE sls )。 189。 32:在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。 说明:对接口部分的标识符应该有更严格限制,防止冲突。 如可规定接口部分的变量与常量之前加 上“模块”标识等。 189。 33:用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。 说明:下面是一些在软件中常用的反义词组。 add / remove begin / end create / destroy insert / delete first / last get / release increment / decrement put / get add / delete lock / unlock open / close min / max old / new start / stop next / previous source / target show / hide send / receive source / destination cut / paste up / down 示例: int min_sum。 软件编程规范总则 3 标志符命名 仅供内部使用 19 int max_sum。 int add_user( BYTE *user_name )。 int delete_user( BYTE *user_name )。 189。 34:除了编译开关 /头文件等特殊应用,应避免使用 _EXAMPLE_TEST_之类以下划线开始和结尾的定义。 软件编程规范总则 4 可读性 仅供内部使用 20 4 可读性 185。 41:注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。 说明:防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。 示例:下列语句中的表达式 word = (high 8) | low (1) if ((a | b) amp。 amp。 (a amp。 c)) (2) if ((a | b) (c amp。 d)) (3) 如果书写为 high 8 | low a | b amp。 amp。 a amp。 c a | b c amp。 d 由于 high 8 | low = ( high 8) | low, a | b amp。 amp。 a amp。 c = (a | b) amp。 amp。 (a amp。 c), (1)(2)不会出错,但语句不易理解; a | b c amp。 d = a | ( b c) amp。 d, (3)造成了判断条件出错。 185。 42:避免使用不易理解的数字,用有意义的标识来替代。 涉及 物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。 示例:如下的程序可读性差。 if (Trunk[index].trunk_state == 0) { Trunk[index].trunk_state = 1。 ... // program code } 应改为如下形式。 define TRUNK_IDLE 0 define TRUNK_BUSY 1 if (Trunk[index].trunk_state == TRUNK_IDLE) { Trunk[index].trunk_state = TRUNK_BUSY。 软件编程规范总则 4 可读性 仅供内部使用 21 ... // program code } 189。 41:源程序中关系较为紧密的代码应尽可能相邻。 说明:便于程序阅读和查找。 示例:以下代码布局不太合理。 = 10。 char_poi = str。 = 5。 若按如下形式书写,可能更清晰一些。 = 10。 = 5。 // 矩形的长与宽关系较密切,放在一起。 char_poi = str。 189。 42:不要使用难懂的技巧性很高的语句,除非很有必要时。 说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。 示例:如下表达式,考虑不周就可能出问题,也较难理解。 * stat_poi ++ += 1。 * ++ stat_poi += 1。 应分别改为如下。 *stat_poi += 1。 stat_poi++。 // 此二语句功能相当于“ * stat_poi ++ += 1。 ” ++ stat_poi。 *stat_poi += 1。 // 此二语句功能相当于“ * ++ stat_poi += 1。 ” 软件编程规范总则 5 变量、结构 仅供内部使用 22 5 变量、结构 185。 51:去掉没必要的公共变量。 说明:公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。 185。 52:仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。 说明:在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。 185。 53:明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。 说明:明确过程操作变量的关系后,将有利于程序的进一步优化、单元测试、 系统联调以及代码维护等。 这种关系的说明可在注释或文档中描述。 示例:在源文件中,可按如下注释形式说明。 RELATION System_Init Input_Rec Print_Rec Stat_Score Student Create Modify Access Access Score Create Modify Access Access, Modify 注: RELATION为操作关 系; System_Init、 Input_Rec、 Print_Rec、 Stat_Score为四个不同的函数; Student、 Score为两个全局变量; Create表示创建, Modify表示修改, Access表示访问。 其中,函数 Input_Rec、 Stat_Score都可修改变量 Score,故此变量将引起函数间较大的耦合,并可能增加代码测试、维护的难度。 185。 54:当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。 说明:对公共变量赋值时,若有必要应进行合法性检查,以提高代码的可靠性、稳定 性。 185。 55:防止局部变量与公共变量同名。 说明:若使用了较好的命名规则,那么此问题可自动消除。 185。 56:严禁使用未经初始化的变量作为右值。 说明:特别是在 C/C++中引用未经赋值的指针,经常会引起系统崩溃。 软件编程规范总则 5 变量、结构 仅供内部使用 23 189。 51:构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。 说明:降低公共变量耦合度。 189。 52:使用严格形式定义的、可移植的数据类型,尽量不要使用与具体硬件或软件环境关系密切的变量。 说明:使用标准的数据类型,有利于程 序的移植。 示例:如下例子(在 DOS下 ),在移植时可能产生问题。 void main() { register int index。 // 寄存器变量 _AX = 0x4000。 // _AX 是 “伪变量” ... // program code } 189。 53:结构的功能要单一,是针对一种事务的抽象。 说明:设计结构时应力争使结构代表一种现实事务的抽象,而不是同时代表多种。 结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同 事务的元素放到同一结构中。 示例:如下结构不太清晰、合理。 typedef struct STUDENT_STRU { unsigned char name[8]。 /* student39。 s name */ unsigned char age。 /* student39。 s age */ unsigned char sex。 /* student39。 s sex, as follows */ /* 0 FEMALE。 1 MALE */ unsigned char teacher_name[8]。 /* the student teacher39。 s name */ unisgned char teacher_sex。 /* his teacher sex */ } STUDENT。 若改为如下,可能更合理些。 软件编程规范总则 5 变量、结构 仅供内部使用 24 typedef struct TEACHER_STRU { unsigned char name[8]。 /* teacher name */ unisgned char sex。 /* teacher sex, as follows */ /* 0 FEMALE。 1 MALE */ } TEACHER。 typedef struct STUDENT_STRU { unsigned char name[8]。 /* student39。 s name */ unsigned char age。 /* student39。 s age */ unsigned char sex。 /* student39。 s sex, as follows */ /* 0 FEMALE。 1 MALE */ unsigned int teacher_ind。 /* his teacher index */ } STUDENT。 189。 54:不要设计面面俱到、非常灵活的数据结构。 说明:面面俱到、灵活的数据结构反而容易引起误解和操作困难。 189。 55:不同结构间的关系不要过于复杂。 说明:若两个结构间关系较复杂、密切,那么应合为一个结构。 示例:如下两个结构的构造不合理。 typedef struct PERSON_ONE_STRU { unsigned char name[8]。 unsigned char addr[40]。 unsigned char sex。 unsigned char city[15]。 } PERSON_ONE。 typedef struct PERSON_TWO_STRU { unsigned char name[8]。 unsigned char age。 unsigned char tel。 } PERSON_TWO。 软件编程规范总则 5 变量、结构 仅供内部使用 25 由于两个结构都是描述同一事物的,那么不如合成一个结构。 typedef struct PERSON_STRU { unsigned char name[8]。 unsigned char age。 unsigned char sex。 unsigned char addr[40]。 unsigned char city[15]。 unsigned char tel。 } PERSON。 189。 56:结构中元素的个数应适中。 若结构中元素个数过多可考虑依据某种原则把元素组成不同的子结构,以减少原结构中元素的个数。 说明:增加结构的可理解性、可操作性和可维护性。 示例:假如认为如上的 _PERSON结构元素过多,那么可如下对之划分。 typedef struct PERSON_BASE_INFO_STRU { unsigned char name[8]。 unsigned char age。 unsigned char sex。 } PERSON_BASE_INFO。 typedef stru。编程规范和范例-经营管理(编辑修改稿)
相关推荐
22020 《 绿色食品 饲料和饲料添加剂使用准则 》 NY/T4712020 《 绿色食品 兽药使用准则 》 NY/T4722020 《 绿色食品 动物卫生准则 》 NY/T4732020 •绿色食品苹果 •绿色食品黄瓜 •绿色食品番茄 •绿色食品菜豆 •绿色食品豇豆 •绿色食品啤酒 •绿色食品干白葡萄酒绿色食品半干白葡萄酒 •绿色食品干红葡萄酒 •绿色食品半干红葡萄酒
)中国绿色食品发展中心对质量和卫生检测合格的产品进行综合审查 (含实地核查 ),并 与符合条件的申请人签定 „绿色食品标志使用协议 ”;由农业部颁发绿色食品标志使用证书及编号;报国家工商行政管理局商标局备案,同时公告于众。 对卫生检测不合格的产品,当年不再受理其申请。 绿色食品标志编号形式如下: LB -- -xx- -- xxxxx xxxx ↑ ↑ ↑ 标志代码 产品类别 产品代号
cde 移进 023 S5 7) aAc de 移进 0235 S8 9) aAcB e 移进 02357 S9 对输入串 abbcde的 LR分析过程 3) ab bcde 归约 (A→ b) 024 r2 3 5) aAb cde 归约 (A→ Ab) 0236 r3 3 8) aAcd e 归约 (B→ d) 02358 r4 7 10) aAcBe 归约 (S→ aAcBe)
,企业文化的建设以及市场持续性的投入最终被消费者认可 .成为公司忠实的消费者 . 10 与竞争对手的对比度 本土第一品牌 :润田 赣州地区乃至总个江西省市场 ,润田属于 1 哥 ,总体市场占有率在40%以上 .瓶装水江西市场年销售 4 亿 . 有完善的经销商系统 ,强势品牌 ,规范的市场操作 .终 端执行价 .经销商 本资料来 自 成任务 3 个点返利 . 弱点 :内部管理系统腐败且政治斗争明显
人力资源部负责接管项目人力资源工作的组织。 项目管理处负责交付前准备工作的具体实施。 其他部门按本规程规定做好相关工作。 管理规程 年度接管计划 策划部负责收集绿城项目的具体信息,于每年
止,或报告有关部门。 养成节电的美德 (Energy Conservation) 节约用电是为了节省能源,减少污染。 我国发电主要靠燃煤,而按现在的消耗速度,全球的煤碳将在 250 年内用尽。 燃煤会产生二氧化碳和二氧化硫,二氧化碳积聚在地面,会象玻璃罩一样,阻断地面热量向空中发散,使地球表面温度升高,形成 温室效应。 温室效应 使全球气候变得异常,发生干旱或洪涝,还会使冰山融化,海平面升高