您在Java中思考的优秀编程实践是什么?
我问这个问题:
我总是怀疑自己是否采取了错误的做法,所以我想了解更多关于良好做法的信息。
我总是困惑的一件事:
我是否应该始终使用this.xxx
来引用实例变量,以便将它们与局部变量区分开来?
答案 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更重要的决策,例如是使用内联函数还是将它们作为类的单独函数,或者决定类是“是”还是“有一个“班级。