有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对静态上下文的引用类似于类selfreference'this',经常使用'this'作为编码样式

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

我希望与静态范围类似:在所有对静态上下文的引用之前加一个static关键字,这样代码就更容易解释了

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

你们会觉得这是一个好的OOP风格吗?或者我应该完全忘记上面提到的任何事情,让javac完成所有的范围绑定吗


共 (5) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

    总之,请不要不必要地使用this,请放弃你所有的努力,去抓住你身后的程序员的手,当然,除了选择好的名字、编写好的代码和添加好的评论之外

  3. # 3 楼答案

    不要在工作中尝试这一点:

    public class Foo
    {
        private static class This extends Foo{}
    
        static int x;
        static void f(int x){}
    
        void test()
        {
            This.f(This.x);
        }
    }
    
  4. # 4 楼答案

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

    public class Myclass {
    
        public void instanceMethod() {
            Static.doThing();
        }
    
    
        public static class Static {
            public static void doThing() {
                //blah
            }
        }
    }
    
  5. # 5 楼答案

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

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

    它们还提供了浏览源代码的好方法。按住Ctrl键并单击变量/方法/类型的名称将直接进入其声明。这里有大纲视图。Eclipse甚至会在鼠标悬停在工具提示上时显示有关此类信息的工具提示

    是的,有人可能会提出这样的论点:您有时不在IDE中读取代码,而是在一个简单的文本编辑器中读取代码。我有时也会这样做,以便快速浏览代码,但老实说,每当我想做一些严肃的编码时,不使用IDE只是一种受虐狂