除了一行之外,重构方法基本相同

Refactoring method that is mostly the same except for one line

本文关键字:方法 重构 一行      更新时间:2023-10-16

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

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

什么是正确的方式来尽可能减少这种情况。我在考虑制作一个抽象基类(使用一个执行语句1-4的方法),实现一个纯虚拟的特殊方法(执行special1或2),并让子类实现该方法。否则会导致.

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

假设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();
}