【问题标题】:What is the good programming practices in Java? [closed]Java中有哪些好的编程实践? [关闭]
【发布时间】:2012-12-01 10:20:30
【问题描述】:

您认为 Java 中有哪些好的编程实践?

我问这个问题的原因:

我总是想知道我是否以错误的方式做事,所以我想了解更多关于良好做法的信息。

我一直很困惑的一件事:

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

【问题讨论】:

  • 在这方面没有最佳实践。有些项目定义了这样的规则,有些则没有。就个人而言,我觉得这种做法非常令人反感。

标签: java oop coding-style


【解决方案1】:

有几种方法可以查看“良好的编码实践”

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

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

对于 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”。

【讨论】:

  • 感谢您的回复。这是最长最全面的答案:)
【解决方案2】:

我的建议是在有助于解决潜在歧义时使用thisthis.在需要使用成员变量而不是同名的本地方法参数时是必需的。

使用whwn的情况是这样的:

public class ravi {

    public int x;
    public static float y;    

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        这是为了区分你的类名成员和参数名。

        在一个类中,不要写 this.xxx(尽管在语法上仍然是正确的),特别是如果你只想获得它的值。比如下面是“丑”:

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

        只需返回名字+“”+姓氏;写的少了。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-05
          • 1970-01-01
          相关资源
          最近更新 更多