从类似方法中删除冗余
Remove redundancy from similar methods
我有典型的 'clean code' 自然问题。我有两种方法。他们很相似
public void setValue(String arg1, String arg2){
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
doSomething(arg2);
}
public void setValue(String arg1){
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
doSomething();
}
我正在尝试找到解决方案,如何消除冗余并将两种相似的方法转化为不那么重复的方法。
我考虑过删除第二种方法并检查 arg2 是否为 null,但我尽量不使用 null 作为我的问题的解决方案,尤其是我不认为调用方法 setValue("FirstArgument" , "") 是个好习惯。
public void setValue(String arg1, String arg2){
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
if(arg2 != null)
doSomething(arg2);
else
doSomething();
}
我也考虑过'Optional'的说法。你怎么看待这件事?我尽量使我的代码尽可能干净,因此重构是我工作结束时的典型任务。
有几种方法可以解决这个问题。正如您提到的 null
方式的检查,但这里有一些其他方式。
从另一个 (alt 1) 使用较少的参数调用方法:
public void setValue(String arg1) {
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
doSomething();
}
public void setValue(String arg1, String arg2) {
setValue(arg1);
doSomething(arg2);
}
(请注意,这将调用 doSomething
两次。这可能不适合您。)
从另一个 (alt 2) 使用较少的参数调用方法:
public void setValue(String arg1) {
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
}
public void setValue(String arg1, String arg2) {
setValue(arg1);
doSomething(arg2);
}
(如果doSomething()
(不带参数)实际上并没有做太多。)
创建从两个 public
方法调用的第三个 private
方法。此方法将包含两种 public
方法通用的代码:
(方法不能调用setValue(String)
,那样会和public方法冲突。起个好名字,描述它的作用。)
private void setValuePrivate(String arg1) {
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
}
public void setValue(String arg1) {
setValuePrivate(arg1);
doSomething();
}
public void setValue(String arg1, String arg2) {
setValuePrivate(arg1);
doSomething(arg2);
}
可能还有其他我没有提到的方法。
我有典型的 'clean code' 自然问题。我有两种方法。他们很相似
public void setValue(String arg1, String arg2){
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
doSomething(arg2);
}
public void setValue(String arg1){
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
doSomething();
}
我正在尝试找到解决方案,如何消除冗余并将两种相似的方法转化为不那么重复的方法。
我考虑过删除第二种方法并检查 arg2 是否为 null,但我尽量不使用 null 作为我的问题的解决方案,尤其是我不认为调用方法 setValue("FirstArgument" , "") 是个好习惯。
public void setValue(String arg1, String arg2){
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
if(arg2 != null)
doSomething(arg2);
else
doSomething();
}
我也考虑过'Optional'的说法。你怎么看待这件事?我尽量使我的代码尽可能干净,因此重构是我工作结束时的典型任务。
有几种方法可以解决这个问题。正如您提到的 null
方式的检查,但这里有一些其他方式。
从另一个 (alt 1) 使用较少的参数调用方法:
public void setValue(String arg1) {
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
doSomething();
}
public void setValue(String arg1, String arg2) {
setValue(arg1);
doSomething(arg2);
}
(请注意,这将调用 doSomething
两次。这可能不适合您。)
从另一个 (alt 2) 使用较少的参数调用方法:
public void setValue(String arg1) {
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
}
public void setValue(String arg1, String arg2) {
setValue(arg1);
doSomething(arg2);
}
(如果doSomething()
(不带参数)实际上并没有做太多。)
创建从两个 public
方法调用的第三个 private
方法。此方法将包含两种 public
方法通用的代码:
(方法不能调用setValue(String)
,那样会和public方法冲突。起个好名字,描述它的作用。)
private void setValuePrivate(String arg1) {
Fragment frag1 = foundElem(arg1);
// ... do something with frag1, do something else
}
public void setValue(String arg1) {
setValuePrivate(arg1);
doSomething();
}
public void setValue(String arg1, String arg2) {
setValuePrivate(arg1);
doSomething(arg2);
}
可能还有其他我没有提到的方法。