资源描述:
《软件工程第五章编码、编码风格与程序复杂性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件工程第5讲编码、编码风格和程序复杂性第5讲编码、编码风格和程序复杂性5.1编码的目的和任务5.2编码风格5.3程序复杂性度量5.1编码的目的目的把模块的过程性描述翻译为用选定的程序设计语言书写的源程序(源代码)。依据编码的主要依据是概要设计和详细设计说明文档。任务理解概要设计和详细设计说明书;遵循编码原则和风格进行翻译,形成源代码。模块的过程性描述源程序(不可执行的)(可执行的)编码编码中的问题编码中产生的问题大多数是由于设计的错误或缺陷引起的,程序的质量首先取决于设计的质量。但编码仍然对程序的可靠性、可读性、可测试性、可维护性、执行效率产生深远的影响。编码产生的源程序应该是正确、
2、可靠,简明清晰,运行效率高。但是,保持程序的清晰就可能会降低程序的效率。编码与选择的程序设计语言/工具有密切的关系。5.2编码风格编码风格(程序设计风格ProgrammingStyle)程序员习惯使用的编码方式。好的编码风格可以使编写的程序更容易阅读、更容易修改。早期的编码风格强调效率第一、占用内存少、包含的功能多。现在的编码风格则强调“清晰第一,效率第二”。现在的编码风格主要以可理解性、可修改性、可测试性为主要目标。主要的编码风格有意义的命名清晰的表达式使用标准的控制结构限制使用GOTO语句清晰与效率实现源程序的文档化输入/输出(1)有意义的命名一个名字用于标识这个对象时,应该带着说
3、明其用途的一些信息。它应该是非形式的、简练的、容易记忆的,如果可能的话,最好是能够拼读的。全局变量/局部变量函数/过程(可采用名词或动宾结构)常量文件名/文件夹例如在C++中类的成员有如下定义:classCTestView{private:intm_iCounter;public:voidGetCounter(){returniCounter;}}前缀“m_”表示是成员变量,用“g_”表示全局变量。“i”表示整数数据类型动宾结构例如C语言中的名字命名#defineMAXLENTH80#defineSTEP10char*strcpy(char*str1,char*str2)intsear
4、ch(chars[],charc)voidpreorder(treenode*root)文件名如,studentlist(2)清晰的表达式清晰、简单地表达意图例,用C语言编程计算三角形的面积:根据数学知识,若三直边a、b、c构成三角形,则必须满足条件:任意两边的之和大于第三边。#include#includevoidmain(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));p
5、rintf("%f",area);}#include#includevoidmain(){floata,b,c,x,y,z,s,area;scanf("%f,%f,%f",&a,&b,&c);x=a+b;y=a+c;z=b+c;if(x>c&&y>b&&z>a){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("%f",area);}可以变为(3)使用标准的控制结构遵循单入口、单出口原则。采用结构化程序设计所允许的基本控制结构。ifcthens;ifcthens1elses2;switch(i
6、){cases1:……cases2:}While(c)do{s};Do{s}while(c);for(i=n;i7、c2do{s21;whilec3do{s31;ifc4gotolabel;s32;}s22;}s12;}label:……问题思考:这类结构如何向结构化转换?goto语句的另外一种用法:转向出错处理。下例是一个堆栈的进栈操作,堆栈的最大容量是100。intpush(floatfitem,intindex,float[]stack){intiFlag=0;if(index>=100)goto10;index++;stack[index]=fitem