1、JavaJava高级程序设计高级程序设计第第1 1章章 JavaJava编码规范编码规范1.1 应用场景1.2 相关知识1.3 任务实施1.4 拓展知识1.5 拓展训练1.6课后小结1.1 应用场景 一个大型的软件项目是由一个团队来完成的,每个程序员在给包、类、变量、方法取名的时候,如果根本没有一点约定,只是随心所欲,可能会带来一系列问题。编码规范是程序编码所要遵循的规则,保证代码的正确性、稳定性、可读性。规范编码有以下作用。一、规范的代码可以促进团队合作二、规范的代码可以减少bug处理三、规范的代码可以降低维护成本四、规范的代码有助于代码审查五、养成代码规范的习惯,有助于程序员自身的成长1.
2、2 相关知识1.2.1 文件后缀名1.2.2 源文件样式约定1.2.3 注释规范1.2.4 命名规范1.2.1 文件后缀名表1-1 Java程序使用的文件后缀名 文件类别文件后缀名Java源文件.javaJava字节码文件.class其中两者最本质的区别在于,.Java文件是供虚拟机运行时执行的文件,而.class文件可以让你在任何一台安装了Java虚拟机的机器上运行。1.2.2 源文件样式约定Java源文件必须按顺序由以下3部分组成。1、版权信息。2、包和引入语句。3、类和接口声明。1.版权信息版权和版本信息必须在Java文件的开头,其他不需要出现在javadoc的信息也可以包含在这里。2.
3、包和引入语句package 行要在import行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用*来处理。3.类和接口声明每个Java源文件都包含一个单一的公共类或接口。1.2.3 注释规范1.注释编写的原则(1)注释形式统一。在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。如果在其他项目中发现它们的注释规范与这份文档不同,按照这份规范写代码,不要试图在既成的规范系统中引入新的规范。(2)注释内容准确简洁。内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。2.注释类型的基
4、本划分(1)基本注释必须要添加,包括以下几种:1、类(接口)的注释;2、构造函数的注释;3、方法的注释;4、全局变量的注释;5、字段/属性的注释;简单的代码做简单注释,注释内容不大于10个字即可,另外,持久化对象或VO对象的getter、setter方法不需加注释。(2)特殊必加的注释包括以下几种:1、典型算法必须有注释。2、在代码不明晰处必须有注释。3、在代码修改处加上修改标识的注释。4、在循环和逻辑分支组成的代码中加注释。5、为他人提供的接口必须加详细注释。具体的注释格式自行定义,要求注释内容准确简洁。3.注释的格式(1)单行(single-line)注释格式为“/”。(2)块(block
5、)注释格式为“/*/”。(3)文档注释格式为“/*/”。(4)Javadoc注释标签语法如下:author 对类的说明,标明开发该类模块的作者;version 对类的说明,标明该类模块的版本;see 对类、属性、方法的说明,参考转向,也就是相关主题;param 对方法的说明,对方法中某参数的说明;return 对方法的说明,对方法返回值的说明;exception 对方法的说明,对方法可能抛出的异常进行说明。1.2.4 命名规范命名指系统中对包名、目录(类名)、方法、常量、变量等标识符的命名。标识符的命名力求做到统一、达意、简洁,遵循驼峰法则。统一是指对于同一个概念,在程序中用同一种表示方法。例
6、如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。达意是指标识符能准确地表达出它所代表的意义,如newSupplier,OrderPaymentGatewayService等;而 supplier1,service2,idtts等则不是好的命名方式。简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要太简洁。例如,theOrderNameOfTheTargetSupplierWhichIsTransfered 太长,transferedTargetSupplierOrderName则较好,但是tra
7、nsTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。用驼峰法则是指单词之间不使用特殊符号分割,而是通过首字母大写来分割。例如推荐用 SupplierName,addNewContract,而不是supplier_name,add_new_contract。1.3 任务实施1.3.1 任务一 计算员工的月工资(1)任务需求某公司分为多个部门,每个部门有一个经理和多个员工,每个员工根据职称发基本工资。员工的工资按基本工资、日加班工资、日缺勤工资等组成。具体需求如下所示(1)员工的基本信息,部门、职务、职称以及工资记录等信息。(2)能记录员工的每
8、一个职称信息,并授予相应的职称,系统在 计算员工工资的时候选取职称对应的最高职称津贴。(2)任务分析问题域中涉及多个类,职员类Staffer,经理类Manager,测试类TestEmployee。Staffer类:通过此类封装定义计算员工基本工资方法Manager类:通过此类封装定义计算员工基本工资方法TestEmployee类:调用方法并实现结果输出1.4 拓展知识相对于之前所提到的一些基本的编程需要注意的惯例,其他惯例(Miscellaneous Practices)也是非常重要的,下面就列出相对应的惯例:1.每次保存的时候,都让你的代码是最美的2.使用log而不是System.out.p
9、rintln()3.每个if while for等语句,都不要省略大括号4.善用TODO5.在需要留空的地方放一个空语句或注释6.不要再对boolean值做true false判断7.减少代码嵌套层次1.5 拓展训练 良好的编码习惯可以大大提高可读性以及编码效率。请读者从一开始就养成一个良好的编码习惯。通过以下校验邮件地址方法模板展示较为规范的编码格式:1.6 课后小结1.规范需要平时编码过程中注意,是一个慢慢养成的好习惯。2.命名规范。所有的标识符只能用英文字母,数字,下划线,并采用驼峰标识。3.注释规范。注释有:单行注释“/”,多行注释“/*.*/”,文档注释“/*.*/”。4.排版规范。
10、代码应避免一行长度超过60个字符。5.声明规范。一行声明一个变量,只在代码块的开始处声明变量。6.语句规范。一条语句占用一行。7.编程规范。用于设置的方法前缀必须是set;用于检索一个布尔类型的方法前缀必须是is,而用于检索其他方法前缀必须是get。程序中应尽可能少使用数字(或字符),尽可能定义静态变量来说明该数字(或字符)的含义。1.7 课后习题 1.相对独立的程序块之间、变量说明之后必须加_。2.类注释部分,描述部分说明该类或者接口的功能、作用、使用方法和注意事项,每次修改后增加作者、新版本号和当天的日期,since _,deprecated 表示_。3.比较操作符,赋值操作符=、+=,算
11、术操作符+、%,逻辑操作符&、&,位域操作符、等双目操作符的前后加_。4.Java中的注释有三种形式:文档注释、多行注释 和_。5.方法的文档中,块标记param用于说明_的含义,return用于说明_1.下列错误使用异常的做法是_。A.在程序中使用异常处理还是使用错误返回码处理,根据是否有利于程序结构来确定,并且异常和错误码不应该混合使用,推荐使用异常。B.一个方法不应抛出太多类型的异常。throws/exception子句标明的异常最好不要超过三个。C.异常捕获尽量不要直接 catch(Exception ex),应该把异常细分处理。D.程序内抛出的异常本身就可说明异常的类型、抛出条件,可不填写详细的描述信息。捕获异常后用exception.toString()取到详细信息后保存。2下列说法错误的是_。A.段代码各语句之间有实质性关联并且是完成同一件功能的,那么可考虑把此段代码构造成一个新的方法。B.源程序中关系较为紧密的代码应尽可能相邻。C.程序中可同时使用错误码和异常进行处理,推荐使用异常。D.方法参数建议不超过5个。1.8 上机实训实训一、计算几何图形的面积、周长。其类图如1-1所示。