我有一个 Java 类,例如:
public class className{
public static void methodName(Object atr1, Object atr2, Object atr3, boolean flag){
//Code here ...
if(flag){
executeASingleInstruction();
}
//Code here ...
}
}
我知道使用标志参数是一种不好的味道,我想知道是否可以重构此方法以删除标志参数,或者是否最好保持此方法现在的方式。
最佳答案
请注意,代码中还有更多需要考虑重构的内容,但这里我将只关注 boolean 参数气味。
您可以通过拆分方法并决定在调用位置使用哪一个新方法来重构它。
这将使您在调用任一方法时的意图更加清晰,特别是如果它们具有漂亮的描述性名称。
如果我没记错的话,Robert C. Martin 的书中有一个关于它的章节:Clean Code: A Handbook of Agile Software Craftsmanship
public class className{
public static void methodName1(Object atr1, Object atr2, Object atr3){
encapsulation1(atr1, atr2, atr3);
executeASingleInstruction();
encapsulation2(atr1, atr2, atr3);
}
public static void methodName2(Object atr1, Object atr2, Object atr3){
encapsulation1(atr1, atr2, atr3);
// no execution of aforementioned instruction
encapsulation2(atr1, atr2, atr3);
}
}
关于java - 重构: Removing flags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27943988/