代码之家  ›  专栏  ›  技术社区  ›  aliteralmind

在什么时候,大型函数应该是静态的?[已关闭]

  •  -3
  • aliteralmind  · 技术社区  · 11 年前

    当函数变大时,我通常会将其更改为静态。例如,如果类 toString() 变大了,我通常会把它改成

    public String toString()  {
       return  ClassName.toString(this);
    }
    
    private static final String toString(ClassName c_n)  {
        //.........
    }
    

    如果函数不是过大,那么这样做是否过分?


    编辑

    我在这里被击落了

    我理解静态修饰符通常应该如何使用(对于单实例,对于与特定实例无关的对象,对于实用函数)。我是从一个 优化 观点:避免在内存中为类的每个实例复制大型函数的字节代码。我对它的工作原理显然是错的。

    3 回复  |  直到 11 年前
        1
  •  5
  •   Abimaran Kugathasan    11 年前

    根据函数的长度使函数静态是完全错误的。静态变量/方法属于类,而不是实例。

    因此,如果实例之间有共同的功能,而不依赖于任何实例,那么它们可以是静态的。

    在这里,您已经 toString() 作为静态。但是,这种方法应该描述一个实例。将其设置为静态将产生容易出错的结果。

    即使尚未构造对象,调用此方法是否合理?“如果是这样,它肯定应该是静态的。否则,它应该是实例方法。”

        2
  •  3
  •   Christian Tapia    11 年前

    你应该制定一个方法 static 如果它不依赖于实例 声明它的类的。它有 与函数的长度无关 .

        3
  •  0
  •   user1196549 user1196549    11 年前

    代码(方法)不是每个实例复制的,它不需要复制,因为它对所有实例都是相同的,并且不会被修改。

    只复制实例数据(财产)。