版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件制造工程软件制造工程 第四章第四章 编程编程 第四章第四章 软件编程软件编程v选择程序设计语言选择程序设计语言v编码规范编码规范v代码版本控制代码版本控制4.1 选择程序设计语言选择程序设计语言v有多少种编程语言?各编程语言的流行度有多少种编程语言?各编程语言的流行度(所所占的市场份额占的市场份额)?vTIOBE组织,对组织,对20多种语言进行统计排行多种语言进行统计排行网址:网址: http:/ 划代划代语言语言特点特点级别级别1GL机器语言机器语言程序不直观,编程出错率高程序不直观,编程出错率高运行效率高,使用运行效率高,使用CPU硬件硬件低级低级2GL汇编语言汇编语言比机器语言直观,
2、减少了出错率比机器语言直观,减少了出错率与机器码一样长与机器码一样长使用于嵌入式开发,驱动程序使用于嵌入式开发,驱动程序3GL面向过程语言,面向过程语言,C语法简洁,速度快,使用嵌入式语法简洁,速度快,使用嵌入式,驱动程序,系统软件,服务器,驱动程序,系统软件,服务器程序程序高级高级4GL面向对象语言,面向对象语言,JAVA,C#, C+Java:虚拟机,跨平台,垃圾回虚拟机,跨平台,垃圾回收机制,使用收机制,使用Web应用程序,信应用程序,信息管理系统息管理系统C#:微软平台微软平台,垃圾回收机制垃圾回收机制C+:自己管理内存,速度快,自己管理内存,速度快,C/S结构程序,服务器程序结构程序
3、,服务器程序4.1 选择程序设计语言选择程序设计语言v个人如何选择程序设计语言?个人如何选择程序设计语言?v根据爱好,选择一个根据爱好,选择一个TOP6的语言的语言v至少要精通一门语言至少要精通一门语言(很重要)很重要)v如何精通一门语言?如何精通一门语言? 知道食谱不一定成为名厨,没有捷径,必须知道食谱不一定成为名厨,没有捷径,必须不断实践不断实践4.2 编码规范v代码组织与风格代码组织与风格v注释注释v命名命名 v声明声明v语句结构语句结构4.2.1 代码组织与风格代码组织与风格1 基本原则基本原则 v代码组织的目的:美观代码组织的目的:美观v代码的组织和风格的基本原则是:便于自代码的组织
4、和风格的基本原则是:便于自己的开发,己的开发,易于与他人的交流易于与他人的交流。v因个人习惯和编辑器等可以设置和形成自因个人习惯和编辑器等可以设置和形成自己的风格,但必须前后一致,并符合本规己的风格,但必须前后一致,并符合本规范的基本要求和原则。范的基本要求和原则。3.3.1 代码组织与风格代码组织与风格2 缩进缩进 v子功能块当在其父功能块后缩进。子功能块当在其父功能块后缩进。 v当功能块过多而导致缩进过深时将子功能块提取出来做为当功能块过多而导致缩进过深时将子功能块提取出来做为子函数。子函数。 v代码中以代码中以TAB(4个字符)缩进,在编辑器中请将个字符)缩进,在编辑器中请将TAB设设置
5、为以空格替代,否则在不同编辑器或设置下会导致置为以空格替代,否则在不同编辑器或设置下会导致TAB长长度不等而影响整个程序代码的格式。例如:度不等而影响整个程序代码的格式。例如: 缩进示例:缩进示例: public void methodName() if(some condition) for() /some sentences /end for /end if 3.3.1 代码组织与风格代码组织与风格3长度长度 v为便于阅读和理解,单个函数的有效代码长度当为便于阅读和理解,单个函数的有效代码长度当尽量控制在尽量控制在100行以内(不包括注释行),当一行以内(不包括注释行),当一个功能模块过大
6、时往往造成阅读困难,因此当使个功能模块过大时往往造成阅读困难,因此当使用子函数等将相应功能抽取出来,这也有利于提用子函数等将相应功能抽取出来,这也有利于提高代码的重用度。高代码的重用度。 v单个类也不宜过大,当出现此类情况时当将相应单个类也不宜过大,当出现此类情况时当将相应功能的代码重构到其他类中,通过组合等方式来功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过调用,建议单个类的长度包括注释行不超过1500行。行。 v尽量避免使用大类和长方法。尽量避免使用大类和长方法。3.3.1 代码组织与风格代码组织与风格4行宽行宽 页宽应该设置为页宽应该设置为80字符。一般
7、不要超过这个字符。一般不要超过这个宽度宽度, 这会导致在某些机器中无法以一屏来这会导致在某些机器中无法以一屏来完整显示完整显示, 但这一设置也可以灵活调整。在但这一设置也可以灵活调整。在任何情况下任何情况下, 超长的语句应该在一个逗号后超长的语句应该在一个逗号后或一个操作符前折行。一条语句折行后或一个操作符前折行。一条语句折行后, 应应该比原来的语句再缩进一个该比原来的语句再缩进一个TAB或或4个空格,个空格,以便于阅读。以便于阅读。 3.3.1 代码组织与风格代码组织与风格5间隔间隔 v 类、方法及功能块间等应以空行相隔,以类、方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片
8、空行。增加可读性,但不得有无规则的大片空行。 v 操作符两端应当各空一个字符以增加可读操作符两端应当各空一个字符以增加可读性。性。 v 相应独立的功能模块之间可使用注释行间相应独立的功能模块之间可使用注释行间隔,并标明相应内容隔,并标明相应内容 例3.3.1 代码组织与风格代码组织与风格6 对齐对齐 v关系密切的行应对齐,对齐包括类型、修饰、名关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。称、参数等各部分对齐。 v连续赋值时当对齐操作符。连续赋值时当对齐操作符。 v当方法参数过多时当在每个参数后(逗号后)换当方法参数过多时当在每个参数后(逗号后)换行并对齐。行并对齐。 v当控
9、制或循环中的条件比较长时当换行(操作符当控制或循环中的条件比较长时当换行(操作符前)、对齐并注释各条件。前)、对齐并注释各条件。 v变量定义最好通过添加空格形成对齐,同一类型变量定义最好通过添加空格形成对齐,同一类型的变量应放在一起的变量应放在一起 例/*变量对齐变量对齐-*/ 代码对齐和间隔示例代码对齐和间隔示例 int count = 100; int length = 0; String strUserName = null; Integer porductCode = new Integer(2); /产品编码数组产品编码数组 /*参数对齐参数对齐-*/ public Connecti
10、on getConnection(String url, String userName, String password) throws SQLException,IOException /*换行对齐换行对齐-*/ public final static String SQL_SELECT_PRODUCT = “SELECT * “ + “ FROM TProduct WHERE Prod_ID = ” + prodID; /*条件对齐条件对齐-*/ if( Condition1 /当条件一当条件一 & Condition2 /并且条件二并且条件二 | Condition3) /或者
11、条件三或者条件三 /*相应独立的功能模块之间可使用注释行间隔,并标明相应内容相应独立的功能模块之间可使用注释行间隔,并标明相应内容*/for(int i = 0; i productCount.length; /循环终止条件循环终止条件 i+) 3.3.1 代码组织与风格代码组织与风格7 括号括号 中的语句应该单独作为一行,左括号中的语句应该单独作为一行,左括号当紧跟当紧跟其语句后,右括号其语句后,右括号永远单独作为一行且与其匹永远单独作为一行且与其匹配行对齐,并尽量在其后说明其匹配的功能模块。配行对齐,并尽量在其后说明其匹配的功能模块。 较长的方法以及类、接口等的右括号后应使用较长的方法以及
12、类、接口等的右括号后应使用/end .等标识其结束。如等标识其结束。如: 类的结束符:类的结束符:/EOC ClassName, 方法结束符:方法结束符:/end methodName(), 功能块结束:功能块结束:/end if.userName is null? 循环快结束:循环快结束:/end for.every user in userList 左括号是否换行等随个人习惯而定,若换行则当左括号是否换行等随个人习惯而定,若换行则当与其前导语句首字符对齐。与其前导语句首字符对齐。3.3.2注释注释3.3.2注释注释1基本原则基本原则 (1) 注释应该增加代码的清晰度。代码注释的目的注释应该
13、增加代码的清晰度。代码注释的目的是要使代码更易于被其他开发人员等理解。是要使代码更易于被其他开发人员等理解。(2) 避免使用装饰性内容。避免使用装饰性内容。 (3) 保持注释的简洁。保持注释的简洁。 (4) 注释信息不仅要包括代码的功能,还应给出原注释信息不仅要包括代码的功能,还应给出原因。因。 (5) 不要为注释而注释。不要为注释而注释。 (6) 除变量定义等较短语句的注释可用行尾注释外,除变量定义等较短语句的注释可用行尾注释外,其他注释当避免使用行尾注释。其他注释当避免使用行尾注释。 3.3.2注释注释2文件注释文件注释 在每个文件的头部都应该包含该文件的功能、在每个文件的头部都应该包含该
14、文件的功能、作用、作者、版权以及创建、修改记录等。作用、作者、版权以及创建、修改记录等。/* = * FileName: helloworld.java * Created: 2006-9-6 20:18:53 by 彭辉彭辉 * = * Copyright: Copyright (c)成都信息工程学院成都信息工程学院, 2005-2006* = * Description: 在这儿对整个文件进行描述在这儿对整个文件进行描述* * =Modification History: 对这个文件的修改历史进行详细描述,一般包括版本,时间,修对这个文件的修改历史进行详细描述,一般包括版本,时间,修 改者
15、,改者, 修修改的内容描述,修改的原因。改的内容描述,修改的原因。 例如:(例如:(1)V, 2006-9-6, 彭辉彭辉, 创建了此文件创建了此文件* (2) V, 2006-10-20,彭辉,增加了,彭辉,增加了*功能,张山提出的。功能,张山提出的。*/ 3.3.2注释注释3类、接口注释类、接口注释 在类、接口定义之前当对其进行注释,包括在类、接口定义之前当对其进行注释,包括类、接口的目的、作用、功能、继承于何种类、接口的目的、作用、功能、继承于何种父类,实现的接口、实现的算法、使用方法、父类,实现的接口、实现的算法、使用方法、示例程序等。示例程序等。/* 类名
16、类名: StringUtil 功能功能:定义字符串操作时所需要用到的方法,如:定义字符串操作时所需要用到的方法,如 转换中文、转换中文、HTML标记处理等。标记处理等。 作者作者: 彭辉彭辉版本版本: 1.0版版备注备注:*/ public class StringUtil 3.3.2注释注释4 方法注释方法注释 v明确该方法功能、作用、各参数含义以及明确该方法功能、作用、各参数含义以及返回值等。返回值等。 v参数注释时当注明其取值范围等。参数注释时当注明其取值范围等。v返回值当注释出失败、错误、异常时的返返回值当注释出失败、错误、异常时的返回情况。回情况。 v异常当注释出什么情况、什么时候、
17、什么异常当注释出什么情况、什么时候、什么条件下会引发什么样的异常条件下会引发什么样的异常/* *函数名函数名:executeQuery功能功能:该方法根据:该方法根据SQL语句,查询数据库,返回它的结果集语句,查询数据库,返回它的结果集 参数参数:1、sqlin:标准的标准的SQL语句语句 ,不可以为空串,不可以为空串返回值返回值:ResultSet结果集,若查询失败则返回结果集,若查询失败则返回null 异常异常:SQLException ,当查询数据库时可能引发此异常,当查询数据库时可能引发此异常备注备注: */ public ResultSet executeQuery(String s
18、ql) throws SQLException /Statement和和SQL语句都不能为空语句都不能为空 if(null != stmt & !StringUtil.isEmpty(sql) /返回查询执行结果返回查询执行结果 return stmt.executeQuery(sql); return null; /end executeQuery() 3.3.2注释注释5 其他注释其他注释 v应对重要的变量加以注释,以说明其含义应对重要的变量加以注释,以说明其含义等。等。 v应对不易理解的分支条件表达式加注释。应对不易理解的分支条件表达式加注释。不易理解的循环,应说明出口条件。过长
19、的不易理解的循环,应说明出口条件。过长的方法实现,应将其语句按实现的功能分段加方法实现,应将其语句按实现的功能分段加以概括性说明。以概括性说明。 v对于异常处理,当注明正常情况及异常情对于异常处理,当注明正常情况及异常情况的条件,并说明当异常发生时程序当如何况的条件,并说明当异常发生时程序当如何处理。处理。 注释在源代码中的比例一般为注释在源代码中的比例一般为20%左右左右3.3.3命名命名 1基本原则基本原则 规范的命名能使程序更易阅读,从而更易于理解。它们也可规范的命名能使程序更易阅读,从而更易于理解。它们也可以提供一些标识功能方面的信息,有助于更好的理解代码和以提供一些标识功能方面的信息
20、,有助于更好的理解代码和应用。应用。 v名字应能反映它所代表的实际东西,应有一定实际意义。名字应能反映它所代表的实际东西,应有一定实际意义。例如,表示次数的量用例如,表示次数的量用Times,表示总量的用,表示总量的用Total,表示,表示平均值的用平均值的用Average,表示和的量用,表示和的量用Sum等等v使用可以准确说明变量使用可以准确说明变量/字段字段/类类/接口接口/包等的完整的英文描包等的完整的英文描述符。例如,采用类似述符。例如,采用类似 firstName,listAllUsers 或或 CorporateCustomer 这样的名字,严禁使用汉语拼音及不这样的名字,严禁使用
21、汉语拼音及不相关单词命名。相关单词命名。 v采用该领域的术语。如果用户称他们的采用该领域的术语。如果用户称他们的“客户客户” (clients) 为为“顾客顾客” (customers),那么就采用术语,那么就采用术语 Customer 来来命名这个类,而不用命名这个类,而不用 Client。v采用大小写混合,提高名字的可读性。一般应该采用大小写混合,提高名字的可读性。一般应该采用小写字母,但是类和接口的名字的首字母,以采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。及任何中间单词的首字母应该大写。 v尽量少用缩写,但如果一定要使用,当使用公共尽量少用缩写,但如果一
22、定要使用,当使用公共缩写和习惯缩写等,如实现(缩写和习惯缩写等,如实现(implement)可缩写)可缩写成成impl,经理(,经理(manager)可缩写成)可缩写成mgr等,严禁等,严禁滥用缩写。滥用缩写。v避免使用长名字(最好不超过避免使用长名字(最好不超过 25 个字母)。个字母)。 v避免使用相似或者仅在大小写上有区别的名字。避免使用相似或者仅在大小写上有区别的名字。 3.3.3命名命名 2类、接口类、接口 所有单词首字母大写。使用能确切反应该类、所有单词首字母大写。使用能确切反应该类、接口含义、功能等的词。一般采用名词。接口含义、功能等的词。一般采用名词。例:例:class Str
23、ingList 3 常量常量 采用完整的英文大写单词,在词与词之间用采用完整的英文大写单词,在词与词之间用下划线连接,如:下划线连接,如:Static final int DEFAULT_VALUE = 10; 3.3.3命名命名 4 变量和参数变量和参数 变量命名由(变量命名由(前缀前缀+修饰语修饰语)构成。现在比较流行的是一套)构成。现在比较流行的是一套由微软的一个匈牙利软件工程师首先使用,并且在微软推广由微软的一个匈牙利软件工程师首先使用,并且在微软推广开来,现在被称之为匈牙利命名法的命名规则。开来,现在被称之为匈牙利命名法的命名规则。匈牙利命名匈牙利命名法规定法规定,使用表示标识符所对
24、应的变量类型的英文小写缩写,使用表示标识符所对应的变量类型的英文小写缩写作为标识符的前缀,后面在使用表示变量意义的英文单词或作为标识符的前缀,后面在使用表示变量意义的英文单词或缩写进行命名。下面是匈牙利命名法中的一些命名前缀:缩写进行命名。下面是匈牙利命名法中的一些命名前缀:(1)类型前缀:用)类型前缀:用s(String)表示字符串表示字符串, c(char)表示字符表示字符, n(number)数值数值, i(intger)表示整数表示整数, d(double)表示双精度表示双精度,f (float)浮点型浮点型, b(bool)布尔型布尔型, dt(date)表示日期型表示日期型.例如:
25、例如:iLength表示整型的局域变量表示整型的局域变量,是用来标识长度是用来标识长度的的.sCode表示字符串型的局域变量表示字符串型的局域变量,用来标识代码。用来标识代码。bFlag, nCount;3.3.3命名命名 5 组件组件/部件部件 v应采用完整的英文描述符命名组件(接口部件),遵循应采用完整的英文描述符命名组件(接口部件),遵循匈牙利命名法则匈牙利命名法则 如:如:btnOK,lblName。 v控件命名由(控件命名由(前缀前缀+修饰语修饰语)构成。前缀即为控件的名)构成。前缀即为控件的名称或缩写。称或缩写。控件种类控件种类前缀前缀例例命令按钮命令按钮btnbtnSave组合框
26、组合框cmb cmbCondition文本框文本框txttxtUserName标签标签lbllblOpenDate列表框列表框 lst lstSelectedItem检查框检查框chkchkKey3.3.3命名命名 6 方法方法 方法的命名应采用完整的英文描述符,大小写混合方法的命名应采用完整的英文描述符,大小写混合使用:所有中间单词的第一个字母大写。方法名称使用:所有中间单词的第一个字母大写。方法名称的第一个单词常常采用一个有强烈动作色彩的动词。的第一个单词常常采用一个有强烈动作色彩的动词。 取值类使用取值类使用get前缀,设值类使用前缀,设值类使用set前缀,判断类前缀,判断类使用使用is
27、(has)前缀。前缀。 例:例: getName() setSarry() isLogin()checkUser() 3.3.4 声明声明 1 方法方法 良好的程序设计应该尽可能减小类与类之间耦合,所遵循的良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:经验法则是:尽量限制成员函数的可见性尽量限制成员函数的可见性。如果成员函数没。如果成员函数没必要公有必要公有 (public),就定义为保护,就定义为保护 (protected);没必要保;没必要保护护 (protected),就定义为私有,就定义为私有 (private)。声明顺序声明顺序: v构造方法构造方法 v静态公共方法
28、静态公共方法 v静态私有方法静态私有方法 v公共方法公共方法v受保护方法受保护方法 v私有方法私有方法 3.3.4 声明声明 2 字段(成员变量)字段(成员变量) v若没有足够理由,不要把实例变量或类变量声明若没有足够理由,不要把实例变量或类变量声明为公有。公共和保护的可见性应当尽量避免,所有为公有。公共和保护的可见性应当尽量避免,所有的字段都建议置为私有,由获取和设置成员函数的字段都建议置为私有,由获取和设置成员函数(Getter、Setter)访问。)访问。 v不允许不允许“隐藏隐藏”字段,即给局部变量所取的名字,字段,即给局部变量所取的名字,不可与另一个更大范围内定义的字段的名字相同不可
29、与另一个更大范围内定义的字段的名字相同(或相似)。例如,如果把一个字段叫做(或相似)。例如,如果把一个字段叫做 firstName ,就不要再生成一个局部变量叫做,就不要再生成一个局部变量叫做 firstName,或者任何易混淆的名字,如,或者任何易混淆的名字,如 fistName。 v一行代码只声明一个变量,仅将一个变量用于一一行代码只声明一个变量,仅将一个变量用于一件事。件事。 3.3.4 声明声明 声明顺序声明顺序: v常量常量 v类变量类变量 v公有字段公有字段 v受保护字段受保护字段 v私有字段私有字段4.3 代码版本控制代码版本控制 主流版本控制软件介绍:主流版本控制软件介绍:v
30、Borland Starteam 是一个集合了版本控制、构建管理(是一个集合了版本控制、构建管理(Build Management)和缺陷跟踪系统为一体的软件,并且具有强大的图形界面,易和缺陷跟踪系统为一体的软件,并且具有强大的图形界面,易学易用;但管理复杂、维护困难。学易用;但管理复杂、维护困难。vPVCS Version Manager 是美国的是美国的MERANT公司软件配置管理工具公司软件配置管理工具PVCS 家族中的家族中的一个组成部分,它能够实现源代码、可执行文件、应用文件、一个组成部分,它能够实现源代码、可执行文件、应用文件、图形文件和文档的版本管理;它能安全地支持软件并行开发,图形文件和文档的版本管理;它能安全地支持软件并行开发,对多个软件版本的变更进行有效的控制管理。对多个软件版本的变更进行有效的控制管理。vClearCase 是是IBM ROSE构件的一部分,主要应用于复杂的产品发放、构件的一部分,主要应用于复杂的产品发放、分布式团队合作、并行的开发和维护任务。可以控制分布式团队合作、并行的开发和维护任务。可以控制word, e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业考察包车合同范本
- 产品质量赔偿和解协议
- 个人房产抵押贷款合同范例
- 企业园区物业管理沙盘推演
- 会展中心绿化建设项目服务协议
- 人力资源与招聘服务平台开发协议
- 互联网高炮施工合同
- 个人免责协议书样本
- 企业生态建设贷款合同范本
- 企业租车服务协议
- 院感病例(讲稿)
- 高考英语单词3500记忆短文40篇
- 北京市商业地产市场细分研究
- 2023-2024学年重庆市大足区八年级(上)期末数学试卷(含解析)
- 肺结节科普知识宣讲
- 网络直播营销
- 2024年节能减排培训资料
- 2024传染病预防ppt课件完整版
- 2024年华融实业投资管理有限公司招聘笔试参考题库含答案解析
- 2024年1月普通高等学校招生全国统一考试适应性测试(九省联考)历史试题(适用地区:贵州)含解析
- 《宽容待人 正确交往》班会课件
评论
0/150
提交评论