静态方法与否?全局变量?

时间:2010-11-19 04:18:43

标签: java oop static

我想知道哪种方式更有效率。

  1. 没有全局变量,通过参数传递变量,所有方法都是静态的

  2. 没有全局变量,只有main方法静态并在main中创建类对象来访问方法

  3. 仅使用全局变量,只使用main方法static并在main中创建类对象以访问方法

  4. 我目前正在使用方法3,但我想知道哪些更有效。这个类不会被它之外的任何其他类使用,它几乎是独立的。

    我的代码结构示例:

    public class myClass {
       private int globalVariable;
    
       public static void main(String args[]) {
          myClass c;
          c.someMethod(); // Changes global variable from method
          System.out.println(someMethod); // Prints solution
       }
    
       public void someMethod() {...}
    }
    

3 个答案:

答案 0 :(得分:11)

答案 1 :(得分:0)

表现无关紧要。您希望它尽可能易于阅读。

我会尽可能多地做2。当你真的需要常量和静力学时,请制作常量和静力学。

例如,null安全修剪是一个很好的静态方法。新的使用StringTrimmer是愚蠢的。如果将null设置为x,则在其他1000个中使用x else z是愚蠢的。

答案 2 :(得分:0)

我认为这可以追溯到1956年和1958年,当时人们发明了Lisp和ALGOL58,并思考 模块化,参考透明度和声音代码 结构作为解决方法不可穿透的意大利面条代码依赖于全局变量(并且倾向于展示相当于海森堡不确定性原理的软件。)

我认真地说,这是2011年,我们仍然想知道是否使用全局变量而不是封装字段或参数传递为quote-n-quote 效率 。我的意思是,认真。

我可能听起来很傲慢(也就是这样),但我会这样说:

我可以理解某些空间,您必须在这些空间中进行某种全局变量权衡(例如,非常受资源限制的嵌入式平台)。我能理解一个刚刚在CS开始的人(比如一个新生)会问这个问题。

但是,如果超出新生水平的人(更不用说那些以生活编码而不是在资源最贫瘠的环境中编码的人)要求甚至远程认为这是一个可接受的事情应该认真重新考虑回到基础知识(或重新考虑这个职业 - 我们已经有太多疯狂的代码了。)

简短回答:不,这没有道理。没有明显的游戏。这是不值得的。它导致了狡猾的代码。所有这些现在已经有50年了。