Java中的优秀编程实践是什么?

时间:2012-12-01 10:20:31

标签: java oop coding-style

您在Java中思考的优秀编程实践是什么?

我问这个问题:

我总是怀疑自己是否采取了错误的做法,所以我想了解更多关于良好做法的信息。

我总是困惑的一件事:

我是否应该始终使用this.xxx来引用实例变量,以便将它们与局部变量区分开来?

5 个答案:

答案 0 :(得分:2)

有几种方法可以看待'良好的编码实践'

  • 编码不易出错的样式/习语,防止引入新错误,从而导致“正确”的代码
  • 更容易让他人阅读和维护的风格/习语

在第一种情况下,程序员采用某些样式来防止引入可能潜入其代码的“意外”错误:

对于C中的示例,以下代码有效(但有一个微妙的错误)

if (x = 1)  // always evaluates to 'true' (programmer meant '==', not '=')
{
   // do something
}

因此,为了强制编译器捕获此错误,您可以采用诸如

之类的样式
if (1 == x) // if you accidentally typed '1 = x' the compiler will flag an error
{
   // do something 
}

这些风格/习语被认为是“好”的做法,在'Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin'

等书中可以找到很多可以用于Java的文章。

关于第二种情况,编写' this.xxx '使代码的读者可以区分本地/实例变量,因此本着代码可读性的精神,它比直接更好将变量引用为'xxx'。

答案 1 :(得分:0)

我的建议是在有助于解决潜在歧义的情况下使用this。 当您需要使用成员变量而不是同名的本地方法参数时,需要this.

使用whwn情况如下:

public class ravi {

    public int x;
    public static float y;    

    public float getX(int x) {
        return this.x;
    }

答案 2 :(得分:0)

this.xxx问题而言,是的,这是区分的一种方式。另一种方法是让局部变量以'p'为前缀,表示它是一个方法参数,这样你就可以实现这样的目的:

public void setField(Field pField) {
    field = pField; // instead of this.field = field, assuming field was the method argument.
}

答案 3 :(得分:0)

对于一般编码约定,这是一本好书:Java样式元素http://www.ambysoft.com/books/elementsJavaStyle.html

答案 4 :(得分:0)

如果您选择要拼写的参数名称与您的类成员完全相同,我只在构造函数和setter函数中使用this.xx进行赋值。例如:

public void setName(String name)
{
     this.name = name;
}

这是为了区分您的班级名称成员与参数名称。

在一个类中,不要编写this.xxx(尽管语法上仍然正确),特别是如果你想要做的就是获取它的值。例如,以下是“丑陋的”:

public String getFullName()
{
     return this.firstName + " " + this.lastName;
}

只需返回firstName +“”+ lastName;那不是写作。

您将遇到比是否编写this.xxx更重要的决策,例如是使用内联函数还是将它们作为类的单独函数,或者决定类是“是”还是“有一个“班级。