软件工程ch10软件实现_第1页
软件工程ch10软件实现_第2页
软件工程ch10软件实现_第3页
软件工程ch10软件实现_第4页
软件工程ch10软件实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第十章软件编码(Software Coding)信息学院计算机系 张翠肖2内容提要内容提要正确理解软件编码正确理解软件编码 软件编码的含义编码的含义 程序员程序员应具备的能力软件编码规范软件编码规范 目的与意义目的与意义 编码规范的要求编码规范的要求软件代码检查软件代码检查 错误的严重性与类型错误的严重性与类型 代码检查清单代码检查清单实例分析实例分析3Professional Programmer Software Engineer正确观点:软件编码是一个复杂而迭代的过程,包括程序设计和程序实现。软件编码要求 正确地理解用户需求和软件设计思想 正确地根据设计模型进行程序设计 正确地而高效率

2、地编写和测试源代码软件编码是设计的继续,会影响软件质量和可维护性10.1 正确理解软件编码正确理解软件编码410.1 正确理解软件编码正确理解软件编码软件编码的工作软件编码的工作5软件编码的工作软件编码的工作 程序设计理解软件的需求说明和设计模型补充遗漏的或剩余的详细设计设计程序代码的结构设计审查检查设计结果记录发现的设计缺陷(类型、来源、严重性)编写代码应用编码规范进行代码编写所编写代码应该是易验证的10.1 正确理解软件编码正确理解软件编码6代码走查确认所写代码完成了所要求的工作记录发现的代码缺陷(类型、来源、严重性)编译测试10.1 正确理解软件编码正确理解软件编码710.1 正确理解软

3、件编码正确理解软件编码编码过程与文档流编码过程与文档流8基础知识英语的功底数学基础(算法分析与设计)计算机科学基础知识基本技能认识事物的能力(抽象、模型、结构、层次)做事的逻辑性和条理性沟通技能、演讲技巧和团队协作能力学习新知识和新技术的能力10.2 程序员应具备的能力程序员应具备的能力9 个人素质方面聪明有自我发展能力足够自信有很强的工作驱动能力,知道如何开展工作沉着与镇定有创新精神 对待产品和技术 热爱技术,热心解决问题 针对变化和创新,有良好的适应和管理能力举例:微软公司对员工的要求10举例:微软公司对员工的要求 注重客户的反馈 所有员工都要以客户为中心开展工作 员工代表公司的形象 团队

4、合作方面 有团队精神 具备良好的交流能力 善于与人相处 你怎样看待这些要求?11内容提要内容提要正确理解软件编码正确理解软件编码软件编码的含义编码的含义程序员程序员应具备的能力软件编码规范软件编码规范目的与意义目的与意义编码规范的要求编码规范的要求软件代码检查软件代码检查错误的严重性与类型错误的严重性与类型代码检查清单代码检查清单实例分析实例分析1210.2 编码规范编码规范软件编码规范软件编码规范与特定语言相关的描写如何编写代码的规则集合现实软件全生命周期的 70% 成本是维护软件在其生命周期中很少由原编写人员进行维护目的提高编码质量,避免不必要的程序错误增强程序代码的可读性、可重用性和可移

5、植性13基本要求程序结构清析且简单易懂,单个函数的行数一般不要超过 100行(特殊情况例外)算法设计应该简单且直接了当,代码要精简,避免出现垃圾程序尽量使用标准库函数(类方法)和公共函数(类方法)。 最好使用括号以避免二义性10.2 编码规范编码规范14编码规范的要求编码规范的要求 可读性要求:可读性第一,效率第二。 源程序文件应有文件头说明,函数应有函数头说明。 主要变量(结构、联合、类或对象)定义或引用时,注释要能够反映其含义。 常量定义有相应说明。 处理过程的每个阶段都有相关注释说明。 在典型算法前都有注释。 一目了然的语句不加注释。 应保持注释与代码完全一致。 利用缩进来显示程序的逻辑

6、结构,缩进量统一为 4 个字节,不得使用 Tab 键的方式。 对于嵌套的循环和分支程序,层次不要超过五层。15编码规范的要求编码规范的要求 举例:JAVA 程序的标准格式(课本 P198 示例 9.1) 文件结构 说明版权和版本信息的文件头注释 package 和 import 语言 类和接口说明语句Section 结构 Class / interface 的注释 Class / interface 语句 Class / interface 实现注释(必要时) Class(static)变量 Instance 变量(public, protected, package, private) Co

7、nstructors Methods(以功能进行分组)16编码规范的要求编码规范的要求 举例:JAVA 程序注释(课本 P205 示例 9.6 ) 三种风格:文档风格、C 语言风格、单行注释 注意事项 程序中的注释不能过多 不必要注释含义已经十分清楚的代码 修改代码时应该同时修改注释,以保证注释和代码的一致性 注释应当准确易懂,防止出现二义性 注释的位置应该与被描述的代码相邻,应该写在程序代码的上方并且和代码左对齐 变量定义和分支语句(条件分支、循环语句等)必须写注释,因为这些语句往往是程序实现某一特定功能的关键。17编码规范的要求编码规范的要求 命名规则 标识符的命名应当直观,可以望文知义,

8、最好采用英文单词或其组合; 标识符的长度应当符合“最小长度下的最大信息”原则,过长的英文单词应该采用一些通用而合理的缩写或者应用领域专业术语的缩写; 程序中不要出现仅依靠大小写来区分的相似标识符; 程序中不要出现局部变量和全局变量同名的现象,免得引起误解; 变量名应当使用“名词”或者“形容词名词”的形式; 函数名应当使用“动词”或者“动词名词”的形式。18编码规范的要求编码规范的要求 命名规则 类和接口的命名采用以大写字母开头的单词组合而成; 常量名采用全大写的单词组合而成,并在单词之间用单下划线分隔,但是首尾最好不使用下划线; 变量名和参数名采用第一个单词首字母小写而后面的单词首字母大写的单

9、词组合; 可以使用前缀s_(表示 static)区别静态变量,在不得以使用)区别静态变量,在不得以使用全局变量时可以加前缀g_(表示 global),类的成员变量加前),类的成员变量加前缀m_(表示 member)可避免成员变量与成员函数参数同名;)可避免成员变量与成员函数参数同名; 函数名采用第一个单词首字母小写而后面的单词首字母大写的单词组合,同时使用 get、set和和 is表示访问器函数。表示访问器函数。19编码规范的要求编码规范的要求 结构化要求 禁止使用 GOTO( C 语言)语句。 用 IF 语句来强调只执行两组语句中的一组,禁止 ELSE GOTO和 ELSE RETURN。

10、避免从循环中引出多个出口,应保留函数(方法)只有一个出口。 问题:以下示例有什么问题?如何修改?p = (char *)malloc(300);if (cond1 0)strcpy(p, str);else return;free(p);20编码规范的要求编码规范的要求 正确性与容错性要求 程序首先是正确,其次是考虑优美和效率。 对所有的用户输入,必须进行合法性和有效性检查。 所有变量在调用前必须被初始化。 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。 单元测试也是编程的一部分,提交联调测试的程序必须通过单元测试。21编码规范的要求编码规范的要求 可重用与可移植性要求

11、重复使用的且完成相对独立功能的算法或接口,应该考虑封装成公共的控件或类,如时间、日期处理,字符串格式处理,数据库连接,文件读写等,以提高个人是系统中程序的复用或协同开发过程中程序的可重用。 相对固定和独立的程序实现方式和过程,应考虑做成程序模板,增强对程序实现方式的复用,如对符合一定规范的 XML数据的解析等过程。22内容提纲 正确理解软件编码 软件编码的含义 程序员应具备的能力 软件编码规范 目的与意义 编码规范的要求You are here!你在这儿! 实例分析23例 1:程序注释 程序注释的原则 注释应当浅显、明白 注释不是程序员指南 注释不是标准库函数参考手册 注释的主要任务是答疑解惑

12、而不是增加程序的行数 好的注释是对设计思想的精确表述和清晰展现 问题: 例 1 的程序注释存在什么问题? 按照上述原则,如何修改例 1 的程序注释?24例 2:程序注释 例 2 所示的程序风格如何?你能够容易理解吗? 编程人员的理由 使用 z 打头的变量名、函数名、宏定义名就像是为自己的旅行箱贴标签 将 void, int, float 等基本数据类型重新命名,可以在最大程度上保证代码的可移植性 使用宏定义表示一些基本的功能运算可以大幅度减少源程序的行数,也可以被后者方便地复用 使用高度简练的缩写可以加强源代码的保密程度 你是否认同上述理由?为什么?25例 3:内存问题 例 3 所示的程序运行

13、时会崩溃,其中有四处足以让程序崩溃的错误,找出错误并改加以正。 总结 非法内存访问的基本特征是代码访问了不该访问的内存地址 某些“自由的”语言更容易引发内存错误(如 C/C+) 要避免产品中出现内存错误,好的编码规范、所选的语言和工具、有效的测试等工作都是有意义的26例 3:内存问题 内存的分配方式 从静态存储区域分配内存在编译时已分配好,在程序的整个运行期间都存在。例如:全局变量、静态变量等。 在堆栈上创建在函数执行期间,函数内的局部变量(包括形参)的存储单元都创建在堆栈上,函数结束时这些存储单元自动释放(堆栈清退)。 从堆( heap )上分配,也称动态内存分配程序运行期间用 malloc 或 new 申请任意数量的内存,程序员自己掌握释放内存的恰当时机(使用 free 或 delete)。27例 3:内存问题 建议 使用 malloc 或 new 申请内存之后,应该立即检查指针值是否为 NULL(或进行异常处理),以防使用值为 NULL 的指针。 不要忘记初始化指针、数组和动态内存,防止将未初始化的内存作为右值使用。 避免数组或指针下标越界,特别要当心“多 1 ”或“少 1 ”操作。 动态内存的申请与释放必须配对,防止内存泄漏。 使用 f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论