mit*_*_au 10 java coding-style
我正在从一位同事(另一位学生)那里进行Java代码的"静态"代码演练
对我来说,这没有意义; 从上到下阅读这些"组件"对象在声明之前进行实例化(稍后在构造函数中使用).但是,代码很乐意编译并运行.这是不好的做法吗?
Public Class theObject {
private static final long aVariable = 123123123123123;
public theObject(...){
componentOne = new Component(...);
componentTwo = new Component(...);
...
...
componentOne.doSomething(...);
}
private Component componentOne;
private Component componentTwo;
}
Run Code Online (Sandbox Code Playgroud)
Ted*_*opp 39
Sun Microsystems(现在由Oracle接管)于1998年发布了Java编码风格指南,其中他们向一个特定的组织推荐了类声明:
请注意,这会将数据声明放在文件的顶部.(1997年早期的Sun出版物没有涵盖上面列表中的所有内容.)唯一重要的排序是在静态字段和实例字段中,然后仅当字段包含引用其他字段的初始化程序时.在初始化之前,您不能在初始化程序中使用字段.类似地,初始化程序(项目3或6)不能对字段进行前向引用,除非作为赋值的目标.(有关此类前向引用的更多信息,请参阅Java语言规范,第8.3.3节.)据我所知,订单无关紧要.
[*]上面列表中的术语(从1998年指南中逐字逐句)对于第4项和第8项是过时的.具体来说,从嵌套类的Java教程:
术语:嵌套类分为两类:静态和非静态.声明
static的嵌套类称为静态嵌套类.非静态嵌套类称为内部类.
在现代用法中,没有"静态成员内部类"这样的东西.
对此没有真正的共识.大多数人会在类实现的顶部声明类变量,然后是方法,但这不是必需的.像Code Complete这样的一些书建议将变量尽可能接近地宣布为首次使用.这有助于将变量的范围减小到最小.
java中的一般声明顺序,(参考:Java编码风格指南)
public class DeclarationOrder {
// Class (static) variables
public static int publicClassVariable;
protected static int protectedClassVariable;
static int defaultClassVariable;
private static int privateClassVariable;
// Instance variables
public int publicInstanceVariable;
protected int protectedInstanceVariable;
int defaultInstanceVariable;
private int privateInstanceVariable;
// Constructors
public DeclarationOrder() {
// Public Constructor
}
protected DeclarationOrder(int var) {
// Protected Constructor
}
DeclarationOrder(String var) {
// Default Constructor
}
private DeclarationOrder(Double var) {
// private Constructor
}
// Class (static) Methods
public static void publicClassMethod(){}
protected static void protectedStaticMethod(){}
static void defaultStaticMethod() {}
private static void privateStaticMethod(){}
// Instance Methods
public void publicInstaceMethod() {}
protected void protectedInstanceMethod() {}
void defaultInstanceMethod() {}
private void privateInstanceMethod() {}
}
Run Code Online (Sandbox Code Playgroud)
每组中的顺序应该是,
不会在声明之前将它们实例化.初始化的顺序是固定的Java和它没有关系,其中的代码,你把你的声明和构造函数.
至于惯例,它实际上取决于你喜欢什么.虽然事实上的惯例是首先声明文件,然后是构造函数,但只要不符合您的性质或公司规定,您的方法就像其他任何方法一样有效.
此外,代码中存在更多危险的东西,使其不易读取,例如单字母变量或大量使用不太常见的结构(例如,复杂条件下的三元运算符).组织代码是一个较小的问题,因为任何体面的IDE都可以通过你放置的任何设置重新组织代码.