//INDENT 8 SPACES TO AVOID VERY DEEP INDENTS private static synchronized horkingLongMethodName(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) { ... }
if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如: //DON’T USE THIS INDENTATION if ((condition1 && condition2) (condition3 && condition4) !(condition5 && condition6)) { //BAD WRAPS doSomethingAboutIt(); //MAKE THIS LINE EASY TO MISS }
//USE THIS INDENTATION INSTEAD if ((condition1 && condition2) (condition3 && condition4) !(condition5 && condition6)) { doSomethingAboutIt(); }
//OR USE THIS if ((condition1 && condition2) (condition3 && condition4) !(condition5 && condition6)) { doSomethingAboutIt(); }
注重:空格不应该置于方法名与其左括号之间。这将有助于区分要害字和方法调用。 - 空白应该位于参数列表中逗号的后面 - 所有的二元运算符,除了".",应该使用空格将之与操作数分开。一元操作符和操作数之间不因该加空格,比如:负号("-")、自增("++")和自减("--")。例如: a += c + d; a = (a + b) / (c * d);
while (d++ = s++) { n++; } printSize("size is " + foo + "");
不要使用内嵌(embedded)赋值运算符试图提高运行时的效率,这是编译器的工作。例如: d = (a = b + c) + r; // AVOID!
应该写成 a = b + c; d = a + r;
10.5 其它惯例(Miscellaneous Practices) 10.5.1 圆括号(Parentheses) 一般而言,在含有多种运算符的表达式中使用圆括号来避免运算符优先级问题,是个好方法。即使运算符的优先级对你而言可能很清楚,但对其他人未必如此。你不能假设别的程序员和你一样清楚运算符的优先级。 if (a == b && c == d) // AVOID! if ((a == b) && (c == d)) // RIGHT
10.5.3 条件运算符"?"前的表达式(Expressions before ´?´ in the Conditional Operator) 假如一个包含二元运算符的表达式出现在三元运算符" ? : "的"?"之前,那么应该给表达式添上一对圆括号。例如: (x >= 0) ? x : -x;
10.5.4 非凡注释(Special Comments) 在注释中使用XXX来标识某些未实现(bogus)的但可以工作(works)的内容。用FIXME来标识某些假的和错误的内容。 11 代码范例(Code Examples) 11.1 Java源文件范例(Java Source File Example) 下面的例子,展示了如何合理布局一个包含单一公共类的Java源程序。接口的布局与其相似。更多信息参见"类和接口声明"以及"文挡注释"。 /* * @(#)Blah.java 1.82 99/03/18 * * Copyright (c) 1994-1999 Sun Microsystems, Inc. * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. * All rights reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. */
package java.blah;
import java.blah.blahdy.BlahBlah;
/** * Class description goes here. * * @version 1.82 18 Mar 1999 * @author Firstname Lastname */ public class Blah extends SomeClass { /* A class implementation comment can go here. */
/** classVar1 documentation comment */ public static int classVar1;
/** * classVar2 documentation comment that happens to be * more than one line long */ private static Object classVar2;
/** instanceVar1 documentation comment */ public Object instanceVar1;
/** instanceVar2 documentation comment */ protected int instanceVar2;