编辑
2023-05-18
我当开发
00

在创建一个方法的时候,有时候会遇见这样的情况,比如 方法 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);

所以大家在写这种自引用方法的时候,应该根据场景增加参数,让方法本身失去意义

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:没想好

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!