VI. JTEST规范
A. 规则(1-2 级)
1. 在switch 中每个 case 语句都应该包含 break 或者 return 。
2. 不要使用空的for 、if 、while 语句。
3. 在运算中不要减小数据的精度。
4. switch 语句中的 case 关键字要和后面的常量保持一个空格,switch 语句中不要定义case 之外的无用标签。
5. 不要在if 语句中使用等号= 进行赋值操作。
6. 静态成员或者方法使用类名访问,不使用句柄访问。
7. 方法重载的时候,一定要注意方法名相同,避免类中使用两个非常相似的方法名。
8. 不要在ComponentListener.componentResized() 方法中调用 serResize() 方法。???
9. 不要覆盖父类的静态方法和私有方法。???????
10. 不要覆盖父类的属性。 ???????????
11. 不要使用两级以上的内部类。
12. 把内部类定义成私有类。
13. 去掉接口中多余的定义(不使用 public, abstract, static, final 等,这是接口中默认的)。
14. 不要定义不会被用到的局部变量、类私有属性、类私有方法和方法参数。
15. 显式初始化所有的静态属性。
16. 不要使用 System.getenv() 方法。????
17. 不要硬编码 ‘\n’和‘\r’作为换行符号。
18. 不要直接使用 java.awt.peer.* 里面的接口。???
19. 使用 System.arraycopy() ,不使用循环来复制数组。
20. 避免不必要的 instanceof 比较运算和类造型运算。
21. 不要在 finalize() 方法中删除监听器(Listeners)。
22. 在 finalize() 方法中一定要调用 super.finalize() 方法。
23. 在 finalize() 方法中的 finally 中调用 super.finalize() 方法。
24. 进行字符转换的时候应该尽可能的较少临时变量。
25. 使用ObjectStream 的方法后,调用reset() ,释放对象。
26. 线程同步中,在循环里面使用条件测试(使用 while(isWait) wait() 代替 if(isWait) wait())。
27. 不掉用 Thread 类的 resume(), suspend(), stop() 方法。
28. 减小单个方法的复杂度,使用的 if, while, for, switch 语句要在10个以内。
29. 在Servlets中,重用JDBC连接的数据源。
30. 减少在Sevlets中使用的同步方法。
31. 不定义在包中没有被用到的友好属性、方法和类。
32. 没有子类的友好类应该定义成 final 。
33. 没有被覆盖的友好方法应该定义成 final 。
B. 建议(3级或以上)
1. 为 switch 语句提供一个 default 选项。
2. 不要在 for 循环体中对计数器的赋值。
3. 不要给非公有类定义 public 构建器。
4. 不要对浮点数进行比较运算,尤其是不要进行 ==, !=运算,减少 >, < 运算。
5. 实现 equals() 方法时,先用 getClass() 或者 instanceof 进行类型比较,通过后才能继续比较。
6. 不要重载 main() 方法用作除入口以外的其他用途。
7. 方法的参数名不要和类中的方法名相同。
8. 除了构建器外,不要使用和类名相同的方法名????。
9. 不要定义 Error 和 RuntimeException 的子类,可以定义 Exception 的子类。
10. 线程中需要实现 run() 方法。
11. 使用 equals() 比较两个类的值是否相同。
12. 字符串和数字运算结果相连接的时候,应该把数字运算部分用小括号括起来。
13. 类中不要使用非私有(公有、保护和友好)的非静态属性。
14. 在类中对于没有实现的接口,应该定义成抽象方法,类应该定义成抽象类。(5级)
15. 不要显式导入 java.lang.* 包;
16. 初始化时不要使用类的非静态属性。
17. 显式初始化所有的局部变量。
18. 按照方法名把方法排序放置,同名合同类型的方法应该放在一起。
19. 不要使用嵌套赋值,即在一个表达式中使用多个 = 。
20. 不要在抽象类的构建器中调用抽象方法???。
21. 重载 equals() 方法的同时,也应该重载 hashCode() 方法。?????
22. 工具类(Utility)不要定义构建器,包括私有构建器。?????
23. 不要在 switch 中使用10个以上的 case 语句。
24. 把 main() 方法放在类的最后。
25. 声明方法违例的时候不要使用 Exception ,应该使用它的子类。
26. 不要直接扔出一个Error ,应该扔出它的子类。
27. 在进行比较的时候,总是把常量放在同一边(都放在左边或者都放在右边)。
28. 在可能的情况下,总是为类定义一个缺省的构建器。????
29. 在捕获违例的时候,不使用 Exception, RuntimeException, Throwable,尽可能使用它们的子类。
30. 在接口或者工具类中中定义常量。(5级)
31. 使用大写‘L’表示 long 常量。(5级)
32. main() 方法必须是 public static void main(String[])。(5级)
33. 对返回类型为 boolean 的方法使用 is 开头,其它类型的不能使用。
34. 对非boolean类型取值方法(getter)使用 get 开头,其它类型的不能使用。
35. 对于设置值的方法(setter)使用 set 开头,其它类型的不能使用。
36. 方法需要有同样数量参数的注释 @param。
37. 不要在注释中使用不支持的标记,如:@unsupported 。
38. 不要使用 Runtime.exec() 方法。???
39. 不要自定义本地方法(native method)。??????
40. 使用尽量简洁的的运算符号。
41. 使用集合时设置初始容量。
42. 单个首字符的比较使用 charAt() 而不用 startsWith() 。
43. 对于被除数或者被乘数为2的n次方的乘除运算使用移位运算符 >>, << 。
44. 一个字符的连接使用‘ ’而不使用 “ ”,如:String a = b + 'c'。
45. 不要在循环体内调用同步方法和使用 try-catch 块。
46. 不要使用不必要的布尔值比较,如:if (a.equals(b)), 而不是 if (a.equals(b)==true)。
47. 常量字符串使用 String, 非常量字符串使用 StringBuffer 。
48. 在循环条件判断的时候不要使用复杂的表达式。
49. 对于“if (condition) do1; else do2;”语句使用条件操作符“if (condition)?do1:do2;”。
50. 不要在循环体内定义变量。!!!!!!!!!!!
51. 使用StringBuffer的时候设置初始容量。
52. 尽可能的使用局部变量进行运算。
53. 尽可能少的使用 ‘!’操作符。(5级)
54. 尽可能的对接口进行 instanceof 运算。(5级)
55. 不要使用 Date[] 而要使用 long[] 替代。?????????
56. 不要显式调用 finalize() 。
57. 不要使用静态集合,其内存占用增长没有边界。
58. 不要重复调用一个方法获取对象,使用局部变量重用对象。?????????
59. 线程同步中,使用 notifyAll() 代替 notify()。
60. 避免在同步方法中调用另一个同步方法造成的死锁。
61. 非同步方法中不能调用 wait() , notify() 方法。
62. 使用 wait(), notify() 代替 while(), sleep() 。
63. 不要使用同步方法,使用同步块。????????(5级)
64. 把所有的公有方法定义为同步方法。???????? (5级)
65. 实现的 Runnable.run() 方法必须是同步方法。 (5级)
66. 一个只有abstract方法、final static 属性的类应该定义成接口。
67. 在 clone() 方法中应该而且必须使用 super.clone() 而不是 new 。????
68. 常量必须定义为 final 。
69. 在 for 循环中提供终止条件。
70. 在 for, while 循环中使用增量计数。
71. 使用 StringTokenizer 代替 indexOf() 和 substring() 。
72. 不要在构建器中使用非 final 方法。
73. 不要对参数进行赋值操作。(5级)
74. 不要通过名字比较两个对象的类,应该使用 getClass() 。
75. 安全:尽量不要使用内部类。
76. 安全:尽量不要使类可以克隆。
77. 安全:尽量不要使接口可以序列化。
78. 安全:尽量不要使用友好方法、属性和类。
79. Servlet:不要使用 java.beans.Beans.instantiate() 方法。
80. Servlet:不再使用HttpSession时,应该尽早使用 invalidate() 方法释放 。
81. Servlet:不再使用JDBC资源时,应该尽早使用 close() 方法释放 。
82. Servlet:不要使用Servlet的 SingleThreadModel,会消耗大量资源。
83. 国际化:不要使用一个字符进行逻辑操作,使用 Characater。
84. 国际化:不要进行字符串连接操作,使用MessageFormat 。
85. 国际化:不要使用 Date.toString() ,Time.toString() 方法。
86. 国际化:字符和字符串常量应该放在资源文件中。
87. 国际化:不要使用数字的 toString() 方法。
88. 国际化:不要使用 StringBuffer , StringTokenizer类。
89. 国际化:不要使用 String 类的 compareTo(), equals() 方法。
90. 复杂度:建议的最大规模:
继承层次 5层
类的行数 1000行(包含{})
类的属性 10个
类的方法 20个
类友好方法 10个
类私有方法 15个
类保护方法 10个
类公有方法 10个
类调用方法 20个
方法参数 5个
return语句 1个
方法行数 30行
方法代码 20行
注释比率 30%~50%
A. 规则(1-2 级)
1. 在switch 中每个 case 语句都应该包含 break 或者 return 。
2. 不要使用空的for 、if 、while 语句。
3. 在运算中不要减小数据的精度。
4. switch 语句中的 case 关键字要和后面的常量保持一个空格,switch 语句中不要定义case 之外的无用标签。
5. 不要在if 语句中使用等号= 进行赋值操作。
6. 静态成员或者方法使用类名访问,不使用句柄访问。
7. 方法重载的时候,一定要注意方法名相同,避免类中使用两个非常相似的方法名。
8. 不要在ComponentListener.componentResized() 方法中调用 serResize() 方法。???
9. 不要覆盖父类的静态方法和私有方法。???????
10. 不要覆盖父类的属性。 ???????????
11. 不要使用两级以上的内部类。
12. 把内部类定义成私有类。
13. 去掉接口中多余的定义(不使用 public, abstract, static, final 等,这是接口中默认的)。
14. 不要定义不会被用到的局部变量、类私有属性、类私有方法和方法参数。
15. 显式初始化所有的静态属性。
16. 不要使用 System.getenv() 方法。????
17. 不要硬编码 ‘\n’和‘\r’作为换行符号。
18. 不要直接使用 java.awt.peer.* 里面的接口。???
19. 使用 System.arraycopy() ,不使用循环来复制数组。
20. 避免不必要的 instanceof 比较运算和类造型运算。
21. 不要在 finalize() 方法中删除监听器(Listeners)。
22. 在 finalize() 方法中一定要调用 super.finalize() 方法。
23. 在 finalize() 方法中的 finally 中调用 super.finalize() 方法。
24. 进行字符转换的时候应该尽可能的较少临时变量。
25. 使用ObjectStream 的方法后,调用reset() ,释放对象。
26. 线程同步中,在循环里面使用条件测试(使用 while(isWait) wait() 代替 if(isWait) wait())。
27. 不掉用 Thread 类的 resume(), suspend(), stop() 方法。
28. 减小单个方法的复杂度,使用的 if, while, for, switch 语句要在10个以内。
29. 在Servlets中,重用JDBC连接的数据源。
30. 减少在Sevlets中使用的同步方法。
31. 不定义在包中没有被用到的友好属性、方法和类。
32. 没有子类的友好类应该定义成 final 。
33. 没有被覆盖的友好方法应该定义成 final 。
B. 建议(3级或以上)
1. 为 switch 语句提供一个 default 选项。
2. 不要在 for 循环体中对计数器的赋值。
3. 不要给非公有类定义 public 构建器。
4. 不要对浮点数进行比较运算,尤其是不要进行 ==, !=运算,减少 >, < 运算。
5. 实现 equals() 方法时,先用 getClass() 或者 instanceof 进行类型比较,通过后才能继续比较。
6. 不要重载 main() 方法用作除入口以外的其他用途。
7. 方法的参数名不要和类中的方法名相同。
8. 除了构建器外,不要使用和类名相同的方法名????。
9. 不要定义 Error 和 RuntimeException 的子类,可以定义 Exception 的子类。
10. 线程中需要实现 run() 方法。
11. 使用 equals() 比较两个类的值是否相同。
12. 字符串和数字运算结果相连接的时候,应该把数字运算部分用小括号括起来。
13. 类中不要使用非私有(公有、保护和友好)的非静态属性。
14. 在类中对于没有实现的接口,应该定义成抽象方法,类应该定义成抽象类。(5级)
15. 不要显式导入 java.lang.* 包;
16. 初始化时不要使用类的非静态属性。
17. 显式初始化所有的局部变量。
18. 按照方法名把方法排序放置,同名合同类型的方法应该放在一起。
19. 不要使用嵌套赋值,即在一个表达式中使用多个 = 。
20. 不要在抽象类的构建器中调用抽象方法???。
21. 重载 equals() 方法的同时,也应该重载 hashCode() 方法。?????
22. 工具类(Utility)不要定义构建器,包括私有构建器。?????
23. 不要在 switch 中使用10个以上的 case 语句。
24. 把 main() 方法放在类的最后。
25. 声明方法违例的时候不要使用 Exception ,应该使用它的子类。
26. 不要直接扔出一个Error ,应该扔出它的子类。
27. 在进行比较的时候,总是把常量放在同一边(都放在左边或者都放在右边)。
28. 在可能的情况下,总是为类定义一个缺省的构建器。????
29. 在捕获违例的时候,不使用 Exception, RuntimeException, Throwable,尽可能使用它们的子类。
30. 在接口或者工具类中中定义常量。(5级)
31. 使用大写‘L’表示 long 常量。(5级)
32. main() 方法必须是 public static void main(String[])。(5级)
33. 对返回类型为 boolean 的方法使用 is 开头,其它类型的不能使用。
34. 对非boolean类型取值方法(getter)使用 get 开头,其它类型的不能使用。
35. 对于设置值的方法(setter)使用 set 开头,其它类型的不能使用。
36. 方法需要有同样数量参数的注释 @param。
37. 不要在注释中使用不支持的标记,如:@unsupported 。
38. 不要使用 Runtime.exec() 方法。???
39. 不要自定义本地方法(native method)。??????
40. 使用尽量简洁的的运算符号。
41. 使用集合时设置初始容量。
42. 单个首字符的比较使用 charAt() 而不用 startsWith() 。
43. 对于被除数或者被乘数为2的n次方的乘除运算使用移位运算符 >>, << 。
44. 一个字符的连接使用‘ ’而不使用 “ ”,如:String a = b + 'c'。
45. 不要在循环体内调用同步方法和使用 try-catch 块。
46. 不要使用不必要的布尔值比较,如:if (a.equals(b)), 而不是 if (a.equals(b)==true)。
47. 常量字符串使用 String, 非常量字符串使用 StringBuffer 。
48. 在循环条件判断的时候不要使用复杂的表达式。
49. 对于“if (condition) do1; else do2;”语句使用条件操作符“if (condition)?do1:do2;”。
50. 不要在循环体内定义变量。!!!!!!!!!!!
51. 使用StringBuffer的时候设置初始容量。
52. 尽可能的使用局部变量进行运算。
53. 尽可能少的使用 ‘!’操作符。(5级)
54. 尽可能的对接口进行 instanceof 运算。(5级)
55. 不要使用 Date[] 而要使用 long[] 替代。?????????
56. 不要显式调用 finalize() 。
57. 不要使用静态集合,其内存占用增长没有边界。
58. 不要重复调用一个方法获取对象,使用局部变量重用对象。?????????
59. 线程同步中,使用 notifyAll() 代替 notify()。
60. 避免在同步方法中调用另一个同步方法造成的死锁。
61. 非同步方法中不能调用 wait() , notify() 方法。
62. 使用 wait(), notify() 代替 while(), sleep() 。
63. 不要使用同步方法,使用同步块。????????(5级)
64. 把所有的公有方法定义为同步方法。???????? (5级)
65. 实现的 Runnable.run() 方法必须是同步方法。 (5级)
66. 一个只有abstract方法、final static 属性的类应该定义成接口。
67. 在 clone() 方法中应该而且必须使用 super.clone() 而不是 new 。????
68. 常量必须定义为 final 。
69. 在 for 循环中提供终止条件。
70. 在 for, while 循环中使用增量计数。
71. 使用 StringTokenizer 代替 indexOf() 和 substring() 。
72. 不要在构建器中使用非 final 方法。
73. 不要对参数进行赋值操作。(5级)
74. 不要通过名字比较两个对象的类,应该使用 getClass() 。
75. 安全:尽量不要使用内部类。
76. 安全:尽量不要使类可以克隆。
77. 安全:尽量不要使接口可以序列化。
78. 安全:尽量不要使用友好方法、属性和类。
79. Servlet:不要使用 java.beans.Beans.instantiate() 方法。
80. Servlet:不再使用HttpSession时,应该尽早使用 invalidate() 方法释放 。
81. Servlet:不再使用JDBC资源时,应该尽早使用 close() 方法释放 。
82. Servlet:不要使用Servlet的 SingleThreadModel,会消耗大量资源。
83. 国际化:不要使用一个字符进行逻辑操作,使用 Characater。
84. 国际化:不要进行字符串连接操作,使用MessageFormat 。
85. 国际化:不要使用 Date.toString() ,Time.toString() 方法。
86. 国际化:字符和字符串常量应该放在资源文件中。
87. 国际化:不要使用数字的 toString() 方法。
88. 国际化:不要使用 StringBuffer , StringTokenizer类。
89. 国际化:不要使用 String 类的 compareTo(), equals() 方法。
90. 复杂度:建议的最大规模:
继承层次 5层
类的行数 1000行(包含{})
类的属性 10个
类的方法 20个
类友好方法 10个
类私有方法 15个
类保护方法 10个
类公有方法 10个
类调用方法 20个
方法参数 5个
return语句 1个
方法行数 30行
方法代码 20行
注释比率 30%~50%
发表评论
-
你属于那种?
2013-01-09 15:25 928IT领袖:年入过亿(例如任正非、马化腾、李彦宏、丁磊、马云 ... -
snake 哈哈
2013-01-08 11:35 672附件里面的额 -
初学 canvas 写的贪吃蛇, 各种bug
2012-12-31 16:51 0<!DOCTYPE HTML> <html& ... -
Java编码规范 二
2012-12-26 17:22 1381IV. 命名规范 A. 规 ... -
Java编码规范 一
2012-12-26 17:21 7061 术语和定义 规则:编程时强制必须遵守的原则。 建议 ... -
世界末日那点事
2012-12-21 09:12 5江音音~喝喝茶,敲敲代 ... -
编程规范之多选题
2012-12-14 15:10 0abcdfef -
编程规范之 单选断题
2012-12-14 15:09 0abcdef -
编程规范之 判断题
2012-12-14 14:57 0一、判断题(每题2分,共28分) 1、if, for, do, ... -
编程规范答案
2012-12-14 14:54 753一、判断题 (每题2分,共28分,正确打√,错误打×) ...
相关推荐
JAVA编程规范.pdf 本文档提供了JAVA编程规范的详细说明,涵盖了类和方法的设计、编程原则、命名约定等方面的内容。 类和方法的设计 在设计类和方法时,需要遵守一些基本原则。首先,类应该具有强大的内聚力,即类...
华为JAVA编程规范汇编.pdf
《Java编程规范详解》 在软件开发领域,编码规范是一种约定俗成的规则,旨在提升代码的可读性、可维护性和团队协作效率。Java编程规范是Java开发者遵循的重要指导原则,它涵盖了文件命名、文件组织、代码结构、缩进...
《Java编程规范(第3版)》是一本深入探讨Java编程语言最佳实践、代码风格、设计模式以及编码标准的专业书籍。对于任何希望提高其Java编程技能、编写可维护且高效代码的开发人员来说,这本书都是不可或缺的资源。...
Java编程规范 Java编程规范是Java程序员在编写代码时需要遵循的一些约定俗成的命名规定,旨在提高Java程序的可读性和维护性。这些规范包括了包命名规范、类命名规范、接口命名规范、方法命名规范、变量命名规范和...
### Java编程规范与基本原则 #### 一、引言 Java作为一种广泛应用的编程语言,其代码的质量不仅直接影响到软件系统的稳定性与可维护性,而且对于团队协作有着不可忽视的影响。因此,建立一套统一且高效的编程规范...
以上只是部分基于华为JAVA编程规范的知识点,具体细节需要参考《JAVA编程军规.doc》《JAVA十大低级错误.doc》《华为_Java编程规范.pdf》《华为JAVA编程规范.doc》等文档。这些规范旨在提升代码质量和团队协作效率,...
《阿里巴巴Java编程规范》是阿里巴巴官方团队为了提升Java开发者代码质量与一致性,降低维护成本而制定的一套详尽的编程指南。这份规范不仅对新手有很好的引导作用,也为经验丰富的开发者提供了良好的编码习惯建议,...
"JAVA编程规范"涵盖了多个方面,包括但不限于命名规范、方法参数处理、注释规则、类和接口设计、异常处理、以及代码风格等。下面我们将深入探讨这些关键知识点。 1. **命名规范**: - 类名:全部大写字母,每个...
Java编程的标准之JAVA编程规范,提升编程代码水准,学习java不可或缺
本书由Java技术的发明者编写,是Java编程语言的权威性技术指南。如果你想知识语言之构造的精确含义,本书是最好的资源。本书全面、准确而详细地论及了Java编程语言。它提供了对于自前一版以来添加的所有新特性的完整...
Java 编程规范 Java 编程规范是软件开发中非常重要的一部分,它确保了代码的可读性、维护性和重用性。下面是根据给定文件生成的相关知识点: 1. 排版、格式 在 Java 编程中,排版和格式是非常重要的。它直接影响...
通过遵循Google Java编程规范,开发人员可以编写出更加规范、一致且易于维护的代码。这些规范不仅涵盖了编码格式和样式方面的要求,还涉及到了一些最佳实践和约定,这对于构建高质量的软件系统至关重要。
Java编程规范是软件开发过程中非常重要的一个环节,它旨在提高代码质量、可读性、可维护性和团队协作效率。这份名为"JAVA编程规范.rar"的压缩包文件包含了一个PDF文档,很可能是Oracle官方或者业界广泛认可的Java...
《JAVA编程规范》 在Java编程中,遵循一套标准的编码规范是至关重要的,它能够提升代码的可读性、可维护性和团队协作效率。良好的编程习惯不仅体现了程序员的专业素养,也是确保软件质量的重要保障。 1. **规范...