6

我一直使用类自引用this,无论它是否是强制性的。我相信它有助于代码的可读性,因为阅读它的人不必自己弄清楚变量所属的范围。

我想对静态范围进行类似的工作:在所有对静态上下文的引用之前加上一个static关键字,这样可以使代码更加不言自明。

然而,Java 不喜欢它。我知道从技术上讲,我可以只使用类名,但这看起来很难看,尤其是当类名很长的时候。我也可以在静态方法和属性的名称之前加上一个特殊的前缀,但我不想被视为偏执狂。

你们会认为这是一种好的 OOP 风格吗?或者我应该完全忘记前面的任何事情,让 javac 完成所有范围绑定?

4

5 回答 5

3

大多数 Java 程序员希望this只在需要解决歧义的地方看到关键字。按照您的建议随意应用它可能会使其他人产生不必要的怀疑。对于静力学,我想如果那是你的包,你可以使用一些匈牙利式的符号,但在审查代码时发现它们也不难(除非它是可怕的单片或其他东西)。

于 2013-02-10T01:25:50.213 回答
3

不要在工作中尝试这个:

public class Foo
{
    private static class This extends Foo{}

    static int x;
    static void f(int x){}

    void test()
    {
        This.f(This.x);
    }
}
于 2013-02-10T01:26:03.907 回答
3

有一些约定在所有成员字段(甚至方法)的使用前加上this. 还有一些为变量或类名添加前缀的约定(臭名昭著的匈牙利符号)。例如,官方的 Android 代码风格指南要求在私有成员字段名称前加上m-(例如private int mSize),在私有静态名称前加上s-.

就个人而言,我讨厌这两种约定,因为它们只会使已经非常冗长的 Java 代码变得混乱。现代 IDE 提供了一些视觉区分方法。例如在 Eclipse 中,局部变量是标准的黑色字体,而字段是蓝色的。静态方法或字段以斜体显示。

它们还提供了如何浏览源代码的好方法。Ctrl+单击变量/方法/类型的名称可以直接进入它的声明。有大纲视图。如果您将鼠标悬停在 Eclipse 上,它甚至会显示一个带有此类信息的工具提示。

是的,有人可能会说您有时不会在 IDE 中阅读代码,而是在简单的文本编辑器中阅读代码。我有时也会这样做以快速查看代码,但老实说,每当我想做一些严肃的编码时,不使用 IDE 只是一种自虐。

于 2013-02-10T01:41:58.657 回答
2

大多数 IDE 可以非常快速地找到所引用变量的来源。因此,现在认为添加关于它们的范围等的额外提示只是分散注意力。

总而言之,请不要this不必要地使用,请放弃所有的努力来握住追随你的程序员的手,当然,除了选择好名字、写好代码和添加好评论

于 2013-02-10T01:13:17.200 回答
1

您可以使用简单的命名方案将所有静态方法放在静态内部类中。例如:

public class Myclass {

    public void instanceMethod() {
        Static.doThing();
    }


    public static class Static {
        public static void doThing() {
            //blah
        }
    }
}
于 2013-02-10T01:20:31.273 回答