The elements of java style中文总则
通用规约
1.坚持原有代码的规约
当修改现有代码时,修改应该仍然遵守原来代码的规约.不要试图只修改代码规约来重写原有代码,否则很容易产生错误。
参见:http://www.gui.com.au/jkoding.htm
2.坚持最少astonishment原则
应该避免程序产生让用户感到奇怪的行为.应该遵循下面的准则:
简单:写简单的类和简单的方法.决定做到何种程度就可以满足用户的需求。
明确:保证每个类、接口、方法、变量和对象都有明确的目的。
完整:创建完整的文档;对所有的特征和工作做文档。
一致:风格要一致.相似的东西应该看起来相似,行为相似.尽量创建和应用标准。
鲁棒性:提供对错误和异常的可预见的处理。
3.立即应用这些规则。
把这些规则应用到你要写的任何代码中.包括原型开发的代码,等等。
4.对任何偏离规约的变化做文档。
没有标准是完美的.有时候不得不打破它.首先要理解你要打破的规则的存在理由和后果,其次要为所作的变化做文档。
格式规约
5.缩进被括起来的代码. //关于匿名内置类
6.打破长句子
7.使用空格和空行。
8.不要用tab键。
命名规约
9-14. 用有语义的、大家熟悉的名字. 对过长的名字质疑. 尽量保留名字中的元音字母.对于像XML这样全部大写的缩写,在名字中不必全大写.不要只通过大小写使得两个名字不同。
15-17. 包命名格式:小写;以域名开头.用有意义的名字.不同版本要用新的包名. //这样的话新版本包的命名是个麻烦事。
18-21.类和接口命名。
22-24. 方法命名。
25-31. 变量和常量命名。
注释规约
32.为那些阅读和维护你代码的人写文档。
那个人很可能就是你自己。
33.注释和代码同步。
34.用准确的语言。
35-37.三种注释的用法。
38.在写代码前写注释。
39.为所有的成员写文档注释。
40.为包写注释。
41.为一个应用或者一组包写注释.注释内容也是写在一个html文件的<body></body>中,也可以使用除@link之外的任何标记.生成文档时用-overview指明这个html文件。
42. 用一种统一的格式做文档注释。
43-45.把关键字、identifiers/constants放在<code></code>中.把源码放在<pre></pre>中.把首次出现的identifier用{@link} 标记,这个标记的作用是生成一个超级链接.例如{@link #Flag(boolean)}是指向本类的一个方法。
46.类、方法、成员变量的文档注释格式。
47.叙述一个类的功能时,尽量不用主语,而谓语采用第三人称单数.常用的动词有:
adds, deallocates(释放分配的资源), removes, allocates, destroys, returns, computes, gets, sets, constructs, provides, tests converts, reads, writes,alpplies
48. 写简述.简述放在第一句。
49.一个动作、服务的简述不要写主语。
50.一个东西的简述不要写主语和谓语。
51.指代当前类是用this而不用the.
52.除非特指一个特定的方法,在提到方法名不要带括号。
意思是说,存在overloaded的方法,如果要泛指同名的方法,就不要带括号,如果特指某一方法,则需要加上括号并列出参数类型。
53.为每个类、接口、成员变量、方法写注释。
54. 为方法做完整的描述。
55.包含例子.在必要时。
56.为方法的前提(例如参数值的限制)、结果(例如类的状态改变)、限制(例如一个叫做vavationDays的变量限制在0-30之间)。
57.为错误和缺陷做注释。
58.为同步语义做注释。
59.只在对别人有帮助时加入内部注释(大概是指方法内部的注释)。
60.描述代码为什么这样做,而不是做什么.代码本身能说明自己在做什么.//这一点保留意见.为什么这样做应该在设计文档或者需求文档中说明了。
61.尽量避免把行末注释放在行末.因为修改这行代码时可能导致一行很长而把注释推到不容易看到的地方。
把行末注释放在要解释的代码之前,而且另起一行。
62.对变量的注释放在行末。
63.确定一组关键字来说明没有解决的事情.尤其用在代码还没有完成的时候.一般还包括一个时间.例如:
//:UNRESOLEVED: EBW, 2005-7-20
这种注释我保留意见.因为关键字说不清楚。
64.对多层嵌套的控制结构,对每个右大括弧做注释.例如 //end if 之类的.如果采用每个大括弧单独成行而且相应括号对齐的话,这种注释就可以取消了。
65.在switch语句中,如果一个case之后没有break语句,则一定要加上一句注释://fall though! 。
66.如果一个控制结构之后的语句块是空的,则请注明 //Empty!.例如
for (int i=0; i<n; i++);
//Empty!
编码规约
67.考虑把代表一种数据类型的类声明为final。
68.要使类对nonnative/noconcrete的类依赖最小。
69.定义小的类和小的方法.这写小东西容易设计、编码、测试、注释、读、理解和用.不要提供没有必要的方法。
实际就是极限编程里的简单设计原则。
70.定义子类时,要使子类在父类可以使用的任何地方都可以使用。
实际上就是 Liskov替换原则:Methods that use references to base classes must be able to use objects of derived classes without knowing it。
如果要override父类的方法或变量,请不要让使用此子类的客户端感觉到行为有什么不同。
如果很好的坚持了这样一个原则,说明设计者对问题域做了很好的抽象。
开闭原则:Software entities(Classes, Modules, Mothods and so on) should be open for extension, but closed for modification。
71.所有field声明为private。
72. 不用instanceof,而用多态性。
意思是说,把特定对象的行为实现在从基类继承来的方法中。
73.一些类型(如List等等)对Object类型的对象操作,如果返回的是Object类型的对象,将其强制转换成特定类型。
74.以类实现枚举类型。
75.一段代码只出现一次.把重复的代码重写成一个方法或类。
76.在控制语句中采用语句块。
语句块可以放在一个语句可以放的任何地方(但是必须放在一个类或者接口的内部)。
77.用括号来明确计算顺序。
78.在每个case后加一个break;
79.使用equals方法,而不是用"=="来比较两个对象是否相同。
注意:"bob".equals(name); 中,如果name是null并不报错。
80.创建一个具有有效状态的对象。
意思是说,不要创建一个没有初始化的对象。
81.不要在构造方法内部调用非final方法。
因为子类可能会override一个非final的方法.java会先调用子类中符合的方法。
82.写一个构造方法时使用已有的构造方法来减少代码。
83.不必catch run-time异常.因为这样的异常常常会导致程序停止。
84.要catch会在正常条件下可能发生的异常。
85.使用return来报告状态改变.//没看懂。
86.保持所有的异常信息。
87.对catch的异常要打印相关信息。
88.用finally语句块来释放资源.即使抛出了异常,finally语句块中的代码也会被执行。
89.Program by contract。
把每个方法看成一个合同.调用一个方法时,要满足它的前提。
用断言来确保每个方法的前提和结果。
override同步方法时不能继承方法的同步关键字.可以在父类用一个同步的final方法调用一个非final的方法.那个非final的方法就可以被override了。
90.用dead code elimination实现断言.//不懂。
91. 用断言捕获代码中的逻辑错误。
92.用断言测试一个方法的前提和后果。
93.只有在必要时才使用多线程。
94.尽量不要使用同步。
100.Use lazy initialization
分享到:
相关推荐
《The Elements of Java Style》是一本权威的Java编码风格指南,旨在帮助开发者编写出高质量的Java代码。以下是对这本书中核心知识点的简要概括: 1. **命名规则**:在Java编程中,变量、方法和类的命名应该清晰、...
总共包含了三个pdf资源(都为英文):java编程规范第三版(The Java Language Specification);java编程风格(the elements of java style);sun的Java code conventions
The Elements of MATLAB Style is a guide for both new and experienced MATLAB programmers. It provides a comprehensive collection of standards and guidelines for creating solid MATLAB code that will be ...
《The Elements of UML Style--UML风格》 教人如何画好UML的很必要,
The ElementsThe Elements of Programming Style.pdf ofThe Elements of Programming Style.pdf Programming Style.pdf
### 《Java风格元素》——Java编程规范精要 #### 概述 《Java风格元素》是一本关于Java编程语言编码规范的专业书籍。本书由Al Vermeulen、Scott W. Ambler、Greg Bumgardner、Eldon Metz、Trevor Misfeldt、Jim ...
### Java编程风格要点详解 #### 一、引言 《Java编程风格》是一本由Al Vermeulen、Scott W. Ambler、Greg Bumgardner、Eldon Metz、Trevor Misfeldt、Jim Shur 和 Patrick Thompson 共同编著的经典著作。该书由...
### 《The Elements of Style》第四版 – Strunk & White #### 书籍概述 《The Elements of Style》是由Oliver Strunk编著、William Strunk Jr.和Edward A. Tenney修订的一本经典写作指导书。该书首次出版于1935年...
综上所述,从标题、描述和标签中可以得出,《The Elements of Programming Style (2nd edition)》是一本重编程风格、代码美学和实用编程技术的书籍。这本书不仅为程序员提供了一套改善编程习惯的指南,还可能包括了...
- **书名**:《学术风格的元素:为人文科学写作》(*The Elements of Academic Style: Writing for the Humanities*) - **作者**:埃里克·海奥特(Eric Hayot) - **出版社**:哥伦比亚大学出版社(Columbia ...
《编程风格的要素》第二版(Kernighan & Plauger)是一本经典且具有深远影响力的编程书籍,由Brian W. Kernighan和P.J. Plauger共同撰写。这本书旨在提高程序员的代码质量,强调了编程风格的重要性,不仅关乎代码的...
The_Elements_of_Style
《C Elements of Style》是一本专注于C语言编程规范与风格指南的书籍,旨在帮助程序员编写出清晰、可读性好且易于维护的C程序。书中的内容覆盖了C语言的基础到高级主题,强调代码的优雅与高效。标签"C Elements of ...
The Elements of Programming Style 2nd edition
Programming Finite Elements in Java™ will also be of interest to senior undergraduates doing special studies encompassing the FEM. Researchers and practicing engineers already familiar with the FEM ...
Unlike other texts that cover only one aspect of the field, The Elements of Computing Systems gives students an integrated and rigorous picture of applied computer science, as its comes to play in ...