除了一行之外,重构方法大致相同

时间:2014-10-04 12:52:46

标签: c++ refactoring

注意:编辑测试为x == 1

if(x==1) {
  statement1();
  statement2();
  special1();
  statement3();
  statement4();
else {
  statement1();
  statement2();
  special2();
  statement3();
  statement4();
}

尽可能减少因素的正确方法是什么。我正在考虑创建一个抽象基类(使用一个执行语句1-4的方法),它实现了一个纯虚拟特殊方法(可以执行special1或2) - 并且让子类实现该方法。 if else会导致。

 Checker myChecker = (x==1) ? Specal1Checker() : Special2Checker();
 myChecker.doCheck();

1 个答案:

答案 0 :(得分:0)

假设x=1是一个拼写错误,它应该是x==1,这里是用C ++做的:

bool const descriptive_name = (x == 1);
statement1();
statement2();
if( descriptive_name ) { special1(); } else { special2(); }
statement3();
statement4();

在Java中表达这一点仍然是一种练习。


在发布时,要重构的原始代码是

if(x=1) {
  statement1();
  statement2();
  special1();
  statement3();
  statement4();
else {
  statement1();
  statement2();
  special2();
  statement3();
  statement4();
}