软件工程复习 第十章
第十章 软件实现
编程语言
在软件设计阶段,得到了实现目标系统的解决方案,并用模型图、伪代码等设计语言表述出来。编码的过程就是把软件设计阶段得到的解决方案转化为可以在计算机上运行的软件产品的过程。
选择合适的编程语言是编码过程的关键。可以说,编程语言是人与计算机交互的基本工具,它定义了计算机的一组语法规则,通过这些语法规则可以把人的意图、思想等转化为计算机可以理解的指令,进而让计算机帮助人类完成某些任务。软件开发人员使用编程语言来实现目标系统的功能。
编程语言的发展与分类
机器语言
汇编语言
高级语言
超高级语言
选择编程语言需要考虑的因素
待开发系统的应用领域,即项目的应用范围
用户的要求
将使用何种工具进行软件开发
软件开发人员的喜好和能力
软件的可移植性要求
算法和数据结构的复杂性
平台支持
编程风格
编程风格是指源程序的书写习惯,比如变量的命名规则、代码的注释方法、缩进等。具有良好编程风格的源程序具有较强的可读性、可维护性,还能提高团队开发的效率。
良好的个人编程风格是优秀程序员素质的一部分,项目内部相对统一的编程风格也使得该项目的版本管理、代码评审等软件工程相关工作更容易实现。在大型软件开发项目中,为了控制软件开发的质量,保证软件开发的一致性,遵循一定的编程风格尤为重要。
如何做到良好的编程风格
版权和版本声明应该在每个代码文件的开头声明代码的版权和版本,主要内容如下:
版权信息
文件名称、标识符、摘要
当前版本号、作者/修改者、完成日期
版本历史信息。
在程序编写过程中应该注意代码的版式,使代码更加清晰易读。对空行、空格的使用及对代码缩进的控制与程序的视觉效果密切相关。编程人员基本积累了一些程序版式规则
在每个类声明之后、每个函数定义结束之后都要加空行
在一个函数体内,逻辑上密切相关的语句之间不加空行,其他地方应加空行分隔
一行代码只做一件事情,如只定义一个变量,或只写一条语句
if、for、while、do等语句独占一行,执行语句不得紧跟其后,不论执行语句有多少都要加{}
尽可能在定义变量的同时初始化该变量
关键字之后要留空格,函数名之后不要留空格,“,”之后要留空格
赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符等二元操作符的前后应当加空格,一元操作符前后不加空格
程序的分界符“{”和“}”应独占一行并且位于同一列,同时与引用它们的语句左对齐
代码行最大长度宜控制在70~80个字符
长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首
注释注释阐述了程序的细节,是软件开发人员之间以及开发人员和用户之间交流的重要途径。做好注释工作有利于日后的软件维护。注释也需要遵循一定的规则,比如注释需要提供哪些方面的信息、注释的格式、注释的位置等。
注释的分类
序言注释位于模块的起始部分,说明模块的详细信息,如模块的用途、模块的参数描述、模块的返回值描述、模块内捕获的异常类型、实现该模块的软件开发人员及实现时间、对该模块做过修改的开发人员及修改日期等
行内注释位于模块内部,用于解释较难理解、逻辑性强或比较重要的代码,提高代码的可理解性。
注释的作用:
①版本、版权声明
②函数接口说明
③重要的代码行或段落提示。
使用注释的基本规则
注释是对代码的“提示”,而不是文档,注释的花样要尽量少
注释应当准确、易懂,防止注释有二义性
注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方
当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,以便于阅读。
命名规则
按照标识符的实际意义命名,使其名称具有直观性,能够体现标识符的语义。这样可以帮助开发人员理解和记忆标识符
标识符的长度应当符合“最小长度与最大信息量”原则
命名规则尽量与采用的操作系统或开发工具的风格一致,如缩写的使用、字母大小写的选择、对常量和变量命名的区分等
变量名不要过于相似,这样容易引起误解
在定义变量时,最好注释其含义和用途
程序中不要出现仅靠大小写区分的相似的标识符
尽量避免名称中出现数字编号,除非逻辑上的确需要编号
数据说明
在数据说明时应该遵循一定的次序
当在同一语句中说明相同数据类型的多个变量时,变量一般按照字母顺序排列
对于复杂数据结构的说明,为了容易理解,需要添加必要的注释
语句构造
不要为了节省空间而把多条语句写在一行
合理利用缩进来体现语句的不同层次结构
在含有多个条件语句的算术表达式或逻辑表达式中使用括号来清晰地表达运算顺序
将经常使用并且具有一定独立功能的代码封装为一个函数或公共过程
避免使用goto语句
避免使用多层嵌套语句
避免使用复杂的判定条件。
面向对象实现
面向对象实现主要是指把面向对象设计的结果翻译成用某种程序语言书写的面向对象程序。
采用面向对象方法开发软件的基本目的和主要优点是通过重用提高软件的生产率。因此,应该优先选用能够最完善、最准确地表达问题域语义的面向对象语言。