软件开发流程规范.doc
《软件开发流程规范.doc》由会员分享,可在线阅读,更多相关《软件开发流程规范.doc(39页珍藏版)》请在咨信网上搜索。
软 件 开 发 流 程 规 范 V1.0 德联软件有限责任公司 编制人: 侯秀美 审核人: 2015 年 8 月 19 日 目录 目录 0 一、概述 2 二、开发流程规范 3 2.1 系统软硬件开发环境 3 2.2 系统架构(系统组成) 5 2.3 系统功能模块设计 6 2.4 系统功能开发流程图 6 2.5 开发修改记录 7 三、开发代码规范 8 3.1 文件结构 8 3.1.1 文件信息声明 8 3.1.2 头文件的结构 10 3.1.3 定义文件的结构 11 3.1.4 头文件的作用 12 3.1.5 目录结构 13 3.2 命名规则 13 3.2.1 共性原则 13 3.2.2 Windows变量命名规则 14 3.3 程序风格 16 3.3.1 空行 17 3.3.2 代码行 18 3.3.3 代码行内的空格 19 3.3.4 对齐 20 3.3.5 长行拆分 22 3.3.6 修饰符的位置 23 3.3.7 注释 23 3.4 函数设计 26 3.4.1 参数的规则 26 3.4.2 返回值的规则 27 3.4.3 函数内部实现的规则 30 3.4.4 其它建议 32 3.4.5 使用断言 32 3.4.6 引用与指针的比较 33 3.5 变量类型定义 35 四、软件测试规范 36 4.1 单元测试 36 4.2 系统测试 37 4.6 业务测试 38 4.7 验收测试 38 4.8 用户现场测试 38 五、软件版本管理 39 4.1版本管理的必要性 39 一、概述 本文制定烟台开发区德联软件有限责任公司计算机软件开发规范文档。本规范的目的是使公司软件开发项目阶段清晰、要求明确、任务具体、编写的代码规范,使之规范化、系统化和工程化,向公司内从事软件开发的工程师和管理人员提出一系列规范和要求,从而有利于开发过程的控制和管理,提高所开发软件系统的质量,缩短开发时间,减少开发和维护费用,以保证项目高质量、顺利进行。 本规范包含:开发流程规范和开发代码规范等,开发流程规范需要技术开发人员编写相关内容,希望每个技术人员形成习惯,如有新的内容更新会及时通知大家,如有好的规范要求也可通知编制人员及时更新。 本规范为烟台开发区德联软件有限责任公司内部材料,严禁其他商业应用。 二、开发流程规范 接受开发任务,详细阅读软件技术规范或技术文档,如对技术文档有疑义或者不清楚的地方及时与项目总工或用户沟通,根据文档和沟通内容编写项目开发计划,必须包括但不限于系统软硬件开发环境、系统架构、系统功能模块设计、系统功能开发流程图、开发修改记录。 2.1 系统软硬件开发环境 开发环境的搭建,最好形成文档,便于以后同样工作的使用。开发人员要明确系统开发拟采用的数据库、操作系统、开发语言、开发工具、服务器等(具体到版本)。明确整个系统开发工作流程,至少应该包括以下流程。 2.2 系统架构(系统组成) 确定系统整体体系架构,各层次之间的数据流的连接,确定软件服务器的硬件配置及用户硬件资源配置, 确定与用户软件平台的统一协调。 开发人员在绘制架构图时给出基本框架,能反映出基本意义即可,可以直接用文字代替例子中的图片。 图1 系统逻辑架构图举例 图2 物理架构图举例 2.3 系统功能模块设计 给出系统的主要功能模块,每个模块所包含的功能。 图3 图书管理系统模块规划图举例 2.4 系统功能开发流程图 给出系统主要功能的业务流程图。 图4 系统功能业务流程图举例 2.5 开发修改记录 1. 开发代码做好备份(可以在完成一个重大功能之后,或者按时间周期性进行备份),以免由于不可抗力导致代码不可修复。 2.在每次重大修改之后要做好记录(改动的具体细节),修改前的版本要及时备份,可以方面随时还原系统。 修改日期 修改内容 是否备份 备注 三、开发代码规范 在研究项目团队协作开发的情况下(这里的团队协作也适合于应用项目的开发),编程时应该强调的一个重要方面是程序的易读性,在保证软件速度等性能指标能满足用户需求的情况下,能让其他程序员容易读懂你所编写的程序。若研究项目小组的所有开发人员都遵循统一的、鲜明的一套编程风格,可以让协作者、后继者和自己一目了然,在很短的时间内看清楚程序结构,理解设计的思路,大大提高代码的可读性、可重用性、程序健壮性、可移植性、可维护性。 制定本编程规范的目的是为了提高软件开发效率及所开发软件的可维护性,提高软件的质量。本规范由程序风格、命名规范、注释规范、程序健壮性、可移植性、错误处理以及软件的模块化规范等部分组成。 此规范以C/C++程序设计讨论。 3.1 文件结构 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。 C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。 3.1.1 文件信息声明 文件信息声明位于头文件和定义文件的开头(参见示例3-1),主要内容有: (1) 版权信息; (2) 文件名称,项目代码,摘要,参考文献; (3) 当前版本号,作者/修改者,完成日期; (4) 版本历史信息; (5) 主要函数描述。 //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// // Copyright (c) 2015, DeLianSoftCompany YanTai // All rights reserved. // // Filename :filename.h // Project Code :The project code about this file // Abstract :Describe the content of this file summarily // Reference :...... // // Version :1.1 // Author :the name of author(mender) // Accomplished date : September 2, 2004 // // Replaced version : 1.0 // Original Author : the name of original author(mender) // Accomplished date : September 10, 2003 // // Main functions : // Function 1 Return code Function name(Parameter Explain) // Function 2 Return code Function name(Parameter Explain) // ... // Function n Return code Function name(Parameter Explain) //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// 示例3-1 文件信息声明 ☆ 【规则3.1-1】 文件信息声明以两行斜杠开始,以两行斜杠结束,每一行都以两个斜杠开始; ☆ 【规则3.1-2】 文件信息声明包含五个部分,各部分之间以一空行间隔; ☆ 【规则3.1-3】 在主要函数部分描述了文件所包含的主要函数的声明信息,如果是头文件,这一部分是可以省略的。 3.1.2 头文件的结构 头文件由三部分内容组成: (1) 头文件开头处的文件信息声明(参见示例3-1); (2) 预处理块; (3) 函数和类结构声明等。 假设头文件名称为 filesystem.h,头文件的结构参见示例3-2。 ☆ 【规则3.2-1】 为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块;“#ifndef”或者“#define”后以TAB键代替SPACE键做空格;如果头文件名称是由多个单词组成,则各单词间以下划线“_”连接,例如有头文件名称为“filesystem.h”,则定义如下:“#ifndef _FILE_SYSTEM_H_”; ☆ 【规则3.2-2】 用 #include< filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索); ☆ 【规则3.2-3】 用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索); ☆ 【建议3.2-1】 头文件中只存放“声明”而不存放“定义”; ☆ 【建议3.2-1】 头文件中应包含所有定义文件所定义的函数声明,如果一个头文件对应多个定义文件,则不同定义文件内实现的函数要分开声明,并作注释以解释所声明的函数从属于那一个定义文件; ☆ 【建议3.2-3】 宏定义和函数声明分离,在两个头文件中定义,如果没有类成员函数,可以将类和结构的定义与函数声明分离,也就是说一个头文件专用于宏定义,一个头文件专用于类和结构的定义,一个头文件专用于函数声明; ☆ 【建议3.2-4】 在C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。 头文件的结构如下: //文件信息声明见示例3-1,此处省略。 #ifndef _FILE_SYSTEM_H_ //avoid referencing the file filesystem.h repeat #define _FILE_SYSTEM_H_ #include <math.h> //reference standard head file … #include “myheader.h” //reference non-standard head file … void Function1(…); //global function declare … class CBox //class structure decalre { … }; #endif 示例3-2 C++/C头文件的结构 3.1.3 定义文件的结构 定义文件有三部分内容: (1) 定义文件开头处的文件信息声明(参见示例3-1); (2) 对一些头文件的引用; (3) 程序的实现体(包括数据和代码)。 假设定义文件的名称为 filesystem.c,定义文件的结构参见示例3-3。 //文件信息声明见示例3-1,此处省略。 #include “filesystem.h” //reference a head file … //global function realization void Function1(…) { … } //class member function realization void CBox::Draw(…) { … } 示例3-3 C++/C定义文件的结构 3.1.4 头文件的作用 早期的编程语言如Basic、Fortran没有头文件的概念,C++/C语言的初学者虽然会用使用头文件,但常常不明其理。这里对头文件的作用略作解释: (1) 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码; (2) 头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。 3.1.5 目录结构 如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。 例如可将头文件保存于include目录,将定义文件保存于source目录(可以是多级目录)。 如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。 3.2 命名规则 比较著名的命名规则当推“匈牙利” 命名法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。如果一个变量由ppch开头,则表明它是指向字符指针的指针。 “匈牙利”法最大的缺点是烦琐,例如 int i, j, k; float x, y, z; 倘若采用“匈牙利”命名规则,则应当写成 int iI, iJ, ik; // 前缀 i表示int类型 float fX, fY, fZ; // 前缀 f表示float类型 如此烦琐的程序会让绝大多数程序员无法忍受。 总的说来,没有一种命名规则可以让所有的程序员赞同,且命名规则对软件产品而言并不是“成败悠关”的事,而且在不同的平台和不同的环境下编写的程序所应遵循的规则也不尽相同,所以我们只是追求制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施。 3.2.1 共性原则 本节论述的共性规则是被大多数程序员采纳的,我们应当在遵循这些共性规则的前提下,再扩充特定的规则,如3.2.2节 ☆ 【规则3.2.1-1】 标识符应当直观且可以拼读,可望文知意,不必进行“解码”; ☆ 【规则3.2.1-2】 标识符的长度应当符合“min-length && max-information”原则; ☆ 【规则3.2.1-3】 命名规则尽量与所采用的操作系统或开发工具的风格保持一致; ☆ 【规则3.2.1-4】 程序中不要出现仅靠大小写区分的相似的标识符。 ☆ 【规则3.2.1-5】 程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解; ☆ 【规则3.2.1-6】 变量的名字应当使用“名词”或者“形容词+名词”; ☆ 【规则3.2.1-7】 全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组); ☆ 【规则3.2.1-8】 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等; ☆ 【建议3.2.1-9】 尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号; 注: 3.2.1 标识符最好采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名,程序中的英文单词一般不要太复杂,用词应当准确,例如不要把CurrentValue写成NowValue; 3.2.2 标示符的长度应当以最小的长度实现最多信息,一般来说,长名字能更好地表达含义,但并非长的变量名就一定要比短的变量名要好,此外单字符的名字也是有用的,常见的如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量; 3.2.3 不同的操作系统的程序设计风格是不一样的,例如Windows应用程序的标识符通常采用“大小写”混排的方式,如AddChild,而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child,别把这两类风格混在一起使用; 3.2.2 Windows变量命名规则 ☆ 【规则3.2.2-1】 变量的命名规则要求采用“匈牙利法则”,即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免采用中文拼音,要求单词的第一个字母大写; 即:变量名=变量类型+变量英文意思(或缩写) 变量类型请参见附表1-变量类型表; ☆ 【规则3.2.2-2】 类名和函数名用大写字母开头的单词组合而成;对struct、union、class变量的命名要求定义的类型用大写,结构采用S开头,联合体采用U开头,类采用C开头; 例如: struct SPoint { int m_nX; int m_nY; }; union URecordLen { BYTE m_byRecordNum; BYTE m_byRecordLen; } class CNode { //类成员变量或成员函数 }; ☆ 【规则3.2.2-3】 指针变量命名的基本原则为: 一重指针变量的基本原则为: 变量名= “p”+变量类型前缀+命名 对多重指针变量的基本原则为: 二重指针: 变量名=“pp”+变量类型前缀+命名 三重指针: 变量名=“ppp”+变量类型前缀+命名 ...... 例如一个short*型的变量应该表示为pnStart; ☆ 【规则3.2.2-4】 全局变量用g_开头;例如一个全局的长型变量定义为g_lFileNum, 即:变量名=g_+变量类型+变量的英文意思(或缩写); ☆ 【规则3.2.2-5】 静态变量采用s_开头;例如一个静态的指针变量定义为s_plPrevInst, 即:变量名=s_+变量类型+变量的英文意思(或缩写); ☆ 【规则3.2.2-6】 类成员变量采用m_开头;例如一个长型成员变量定义为m_lCount, 即:变量名=m_+变量类型+变量的英文意思(或缩写); ☆ 【规则3.2.2-7】 对const的变量要求在变量的命名规则前加入c_(若作为函数的输入参数,可以不加), 即:变量名=c_+变量命名规则,例如: const char* c_szFileName; ☆ 【规则3.2.2-8】 对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀,且用下划线隔离变量名,所有枚举类型都要用大写,例如: enum EMDAYS { EMDAYS_MONDAY; EMDAYS_TUESDAY; ...... }; ☆ 【规则3.2.2-9】 对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文意思表示其意思,用下划线分割单词,例如: #define CM_7816_OK 0x9000; ☆ 【规则3.2.2-10】 为了防止某一软件库中的一些标识符和其它软件库中的冲突,可以为各种标识符加上能反映软件性质的前缀。例如三维图形标准OpenGL的所有库函数均以gl开头,所有常量(或宏定义)均以GL开头。 3.3 程序风格 程序风格虽然不会影响程序的功能,但会影响程序的可读性,追求清晰、美观,是程序风格的重要构成因素。 3.3.1 空行 空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。 ☆ 【规则3.3.1-1】 在每个类声明之后、每个函数定义结束之后都要加空行。参见示例3.3.1(a); ☆ 【规则3.3.1-2】 在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例3.3.1(b); // blank line void Function1(…) { … } // blank line void Function2(…) { … } // blank line void Function3(…) { … } // blank line while (condition) { statement1; // blank line if (condition) { statement2; } else { statement3; } // blank line statement4; } 示例3.3.1(a) 函数之间的空行 示例3.3.1(b) 函数内部的空行 3.3.2 代码行 ☆ 【规则3.3.2-1】 一行代码只做一件事情,如只定义一个变量,或只写一条语句,这样的代码容易阅读,并且方便于写注释; ☆ 【规则3.3.2-2】 if、for、while、do等语句自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加{},这样可以防止书写失误; ☆ 【规则3.3.2-3】 if、for、while、do等语句的“{”要单独占用一行; ☆ 【建议3.3.2-1】 所有函数内的变量都在函数开始处定义; ☆ 【建议3.3.2-2】 尽可能在定义变量的同时初始化该变量(就近原则),如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误,本建议可以减少隐患。 示例3.3.2(a)为风格良好的代码行,示例3.3.2(b)为风格不良的代码行。 int nWidth; // width int nHeight; // height int nDepth; // depth int nWidth,nHight,nDepth;//width,height,depth x = a + b; y = c + d; z = e + f; X = a + b; y = c + d; z = e + f; if (nWidth < nHight) { DoSomething(); } if (nWidth < nHight) DoSomething(); for (initialization; condition; update) { DoSomething(); } // blank line Other(); for (initialization; condition; update) DoSomething(); Other(); 示例3.3.2(a) 风格良好的代码行 示例3.3.2(b) 风格不良的代码行 3.3.3 代码行内的空格 ☆ 【规则3.3.3-1】 关键字之后要留空格,象const、virtual、inline、case 等关键字之后至少要留一个空格,否则无法辨析关键字,象if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字; ☆ 【规则3.3.3-2】 函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别; ☆ 【规则3.3.3-3】 ‘(’向后紧跟,‘)’、‘,’、‘;’向前紧跟,紧跟处不留空格; ☆ 【规则3.3.3-4】 ‘,’之后要留空格,如Function(x, y, z),如果‘;’不是一行的结束符号,其后要留空格,如for (initialization; condition; update); ☆ 【规则3.3.3-5】 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=” “>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后应当加空格; ☆ 【规则3.3.3-6】 一元操作符如“!”、“~”、“++”、“--”、“&”(地址运算符)等前后不加空格; ☆ 【规则3.3.3-7】 象“[]”、“.”、“->”这类操作符前后不加空格; ☆ 【建议3.3.3-1】 对于表达式比较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i<10; i++)和if ((a<=b) && (c<=d)) void Func1(int x, int y, int z); // favorable style void Func1 (int x,int y,int z); // ill style if (year >= 2000) // favorable style if(year>=2000) // ill style if ((a>=b) && (c<=d)) // favorable style if(a>=b&&c<=d) // ill style for (i=0; i<10; i++) // favorable style for(i=0;i<10;i++) // ill style for (i = 0; I < 10; i ++) // favorable style x = a < b ? a : b; // favorable style x=a<b?a:b; // ill style int *x = &y; // favorable style int * x = & y; // ill style array[5] = 0; // Do not use array [ 5 ] = 0; a.Function(); // Do not use a . Function(); b->Function(); // Do not use b -> Function(); 示例3.3.3 代码行内的空格 3.3.4 对齐 ☆ 【规则3.3.4-1】 程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐; ☆ 【规则3.3.4-2】 { }之内的代码块在‘{’右边数格处左对齐; ☆ 【规则3.3.4.3】 代码的的对齐采用TAB键而不采用空格键对齐,一般TAB键设置为向后空4个空格。 示例3.3.4(a)为风格良好的对齐,示例3.3.4(b)为风格不良的对齐。 void Function(int x) { … // program code } void Function(int x){ … // program code } if (condition) { … // program code } else { … // program code } if (condition){ … // program code } else { … // program code } for (initialization; condition; update) { … // program code } for (initialization; condition; update){ … // program code } While (condition) { … // program code } while (condition){ … // program code } 如果出现嵌套的{},则使用缩进对齐,如: { … { … } … } 示例3.3.4(a) 风格良好的对齐 示例3.3.4(b) 风格不良的对齐 3.3.5 长行拆分 ☆ 【规则3.3.5-1】 代码行最大长度宜控制在70至80个字符以内; ☆ 【规则3.3.5-2】 长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符),拆分出的新行要进行适当的缩进,使排版整齐,语句可读。 if ((very_longer_variable1 >= very_longer_variable12) && (very_longer_variable3 <= very_longer_variable14) && (very_longer_variable5 <= very_longer_variable16)) { DoSomething(); } virtual CMatrix CMultiplyMatrix (CMatrix leftMatrix, CMatrix rightMatrix); for (very_longer_initialization; very_longer_condition; very_longer_update) { DoSomething(); } 示例3.3.5 长行的拆分 3.3.6 修饰符的位置 修饰符 * 和 & 应该靠近数据类型还是该靠近变量名,是个有争议的活题,若将修饰符 * 靠近数据类型,例如:int* x; 从语义上讲此写法比较直观,即x是int 类型的指针,上述写法的弊端是容易引起误解,例如:int* x, y; 此处y容易被误解为指针变量。虽然将x和y分行定义可以避免误解,但并不是人人都愿意这样做。 ☆ 【规则3.3.6-1】 应当将修饰符 * 和 & 紧靠变量名; 3.3.7 注释 C语言的注释符为“/*…*/”。C++语言中,程序块的注释常采用“/*…*/”,行注释一般采用“//…”。注释通常用于: (1)版本、版权声明; (2)函数接口说明; (3)重要的代码行或段落提示。 虽然注释有助于理解代码,但注意不可过多地使用注释。参见示例3.3.7。 ☆ 【规则3.3.7-1】 注释是对代码的“提示”,而不是文档,程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱,注释的花样要少; ☆ 【规则3.3.7-2】 如果代码本来就是清楚的,则不必加注释;例如 i++; // i 加 1,多余的注释 ☆ 【规则3.3.7-3】 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除; ☆ 【规则3.3.7-4】 注释应当准确、易懂,防止注释有二义性,错误的注释不但无益反而有害; ☆ 【规则3.3.7-5】 尽量避免在注释中使用缩写,特别是不常用缩写; ☆ 【规则3.3.7-6】 注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方; ☆ 【规则3.3.7-8】 当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读; ☆ 【建议3.3.7-9】 对于多行代码的注释,尽量不采用“/*...*/”,而采用多行“//”注释,这样虽然麻烦,但是在做屏蔽调试时不用查找配对的“/*...*/”。 //////////////////////////////////////////////////////////////////// // Function capacity: // Parameter declare: // Return value : //////////////////////////////////////////////////////////////////// void Function(float x, float y, float z) { … } if (…) { … while (…) { … } // end of while … } // end of if 示例3.3.7 程序的注释 3.7.1 文件头的注释 文件头的注释请参见3.1,文件头的注释是以两行斜杠开始,以两行斜杠结束(以区别于函数的注释)。 3.7.2 函数头的注释 一般说来每个函数都应该做详细的注释,函数头的注释是以一行斜杠开始,以一行斜杠结束,注释的内容包括“功能”,“参数”,“返回值”,“设计思想”,“调用函数”,“日期”,“修改记录”等几个方面,函数头的注释格式如下: ////////////////////////////////////////////////////////////////////////////////////////////// // Function capacity : Describe the function capacity // Parameter declare : // parameter 1: Describe the function of parameter ( input/output parameter ) // parameter 2: Describe the function of parameter ( input/output parameter ) // ...... // Return value : Describe the possible return value // Designed idea : Describe designed idea about the function // Author : // Creation date : Creation date(YY-MM-DD) // Transferred- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 流程 规范
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文