我有一个非常复杂的java类,有超过60种小帮助方法,用于简化可读性和理解。只是想知道,你认为在一个类中使用这么多方法会以任何方式影响性能吗?
class MyClass() {
//Some static final variables
MyInnerClass m = loadAllVariables();
private void update(){
}
...
//All 60 methods come here
....
private MyInnerClass loadAllVariables() {
MyInnerClass m = new MyInnerClass();
//load all variables with pre-initialized values
}
private MyInnerClass() {
int a, b, c; //In reality, I have over 20 variables
}
}
答案 0 :(得分:4)
没有。方法中的方法数量并不重要。只有所用的方法才真正加载。如果您有数以千计的方法,这对您(开发人员)来说更可能是一个问题
保持代码简单明了更有可能提高性能。
答案 1 :(得分:2)
性能不会受到太大影响。只要确保你没有实现上帝的反模式。
从工程角度来看,其他开发人员可能会因为复杂的内部类层次结构而导致混乱。
答案 2 :(得分:1)
您可能需要使用Extract Class。这是解决Feature Envy代码嗅觉的常用方法(这些都来自Martin Fowler's Refactoring)。
关于一个类中的许多方法 - 我重新启动我已阅读somewhere JVM将优化您的代码,内联方法等。
答案 3 :(得分:0)
依赖!!!
首先,它喜欢Peter Lawrey所说的,只是你在答案中使用的方法需要一些时间。例如:
public void update(){
if (sth) methodA();
else if(sth other) methodB();
else if(sth other) methodC();
}
在上面的例子中,总是会调用一个方法。
Seconly,这取决于您的平台。如果您正在为桌面开发,那么60种方法会产生废话,除非您使用上千种方法。但是如果你在Android上开发,一个update()
函数的60种方法确实是一个大问题。这就是为什么许多专家说你不应该在移动平台上使用Getter / Setter。当然,这项工作将再次反对Design pattern
:))这就是为什么当您在移动平台上开发时,您将在性能和维护之间做出艰难的选择。 (这意味着您的代码将清晰易读)
希望你能清楚:)
答案 4 :(得分:0)
很抱歉,答案是错误的,或者没有解决非常重要的问题。
上述课程中的所有方法都是私有的。这意味着没有多态发生,JVM可以直接调用该方法而不是通过调用动态调用。 "私人"暗示" final"。
此外,所有小方法都被JIT内联。所以没有性能差异。