在创建一个方法的时候,有时候会遇见这样的情况,比如 方法 setEnabled ,字面意思是可用,或者启用;但是往往会加一个参数 bool 来判断 是否启用;这里我一直以为是多此一举
在创建一个方法的时候,有时候会遇见这样的情况,比如 方法 setEnabled ,字面意思是可用,或者启用
public static CheckBoxListExtension setEnabled(this CheckBoxListExtension f) { ... return f; }
但是往往会加一个参数 bool 来判断 是否启用
public static CheckBoxListExtension setEnabled(this CheckBoxListExtension f,bool isEnabled) { if(isEnabled) { ... } return f; }
这里我一直以为是多此一举,既然 setEnabled 本身就是设置启用,那为什么还要传一个bool呢,在调用时 checkbox1.setEnabled(false);
并没有什么意义,如果传false,我直接把这行注释掉就可以了,即使 需要判断 那我写成
if(isEnabled) checkbox1.setEnabled();
也可以,难道就为了省下一个 if 么?
其实就是为了省一个if
其实这里的使用场景就是满足 链式调用(瀑布式调用)
或者高大上叫 FluentAPI 设计模式
,
像这样
checkbox1.setText("").setEnabled().setValue("").SelectOnly();
这时如果setEnabled没有接参 而需要if判断时,代码就断开了
checkbox1.setText(""); if(isEnabled) checkbox1.setEnabled() checkbox1.setValue(""); if(isSelectOnly) checkbox1.SelectOnly();
为了提高可读性可维护性 所以使用接参的写法
checkbox1.setText("").setEnabled(isEnabled).setValue("").SelectOnly(isSelectOnly);
所以大家在写这种自引用方法的时候,应该根据场景增加参数,让方法本身失去意义
本文作者:没想好
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!