用Java优化代码

时间:2016-02-22 17:39:27

标签: java performance

我的项目中有(java类的)包。需要根据某些要求删除。 我必须将我的项目编译为目标

  

高端

  

低端

需求限制

  
      
  1. 包裹需要在Highend中存在,不应该在那里用于低端。
  2.   
  3. 我的代码库对于两个目标都是相同的
  4.   

为了实现这一要求,我想要一种定义方式

class myclass{
static final boolean isEnable = false;
public void  API1(){
if(isEnabled){
//function logic
}
}
public boolean  API2(){
if(isEnabled){
//function logic
//return value
}
else
return false;
}
}

虽然"静态决赛"私有变量提供了一个减少我的类大小的解决方案,因为isEnabled代码是false。编译器从编译的类中删除字节码。但是使用它我认为它不会解决我的问题,它减少了低端目标的类大小但是函数持久化返回一些默认值。     有没有更好的方法或设计模式来解决这个问题,因为当前的解决方案我必须对包中存在的类的所有API进行更改,虽然我必须删除所有完整的包。

此要求与Android中的java包相关,因此我将其包含在标签

中的Android中

1 个答案:

答案 0 :(得分:0)

您可能希望重新构建代码,以便API2包含在一个在低端版本中完全消除的类中。此外,由于API2的调用者在下端版本中没有得到合理的答案,您也可以消除API2内部的测试。我的意思是以下

  • 没有人使用包含API2
  • 的类
  • 整个班级被淘汰
  • 该方法不需要isEnabled检查

虽然这对我来说听起来不错,但请注意,这只是一个设计目标,不要过于努力地遵循它,这样你就不会以一些疯狂的设计结束。如果有几十isEnabled次检查,那么您(可能)做错了。

您可能还希望使用由高端实现(如

)覆盖的简单低端实现
class LowendSomething {
    boolean doFancyStuff() {
        throw new BuyTheHighendVersionException();
    }
}

class HighendSomething {
    boolean doFancyStuff() {
        ... do fancy stuff
    }
}

这样的行一起
LowendSomething something =
    isEnabled ? new HighendSomething() : new LowendSomething();