有什么方法可以取代为了标识状态而创建的很多参数

发布于 2022-09-04 13:11:35 字数 312 浏览 16 评论 0

在平时的开发中经常会出现这样的代码

    private boolean loadMoreEnable = false;
    private boolean isPatchOperation = false;
    private boolean isSelectAll = false;

为了标识一个状态,后面很多操作要根据这个状态来判断,然后进行后面的操作,而且状态频繁改变又需要不断的去修改它的值,操作多了代码可读性很差,也很容易出现一些隐蔽的bug,想问下大家碰到这样的问题的时候一般是怎么设计自己的代码,或者有什么巧妙的方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

深府石板幽径 2022-09-11 13:11:35

有些状态是不可避免的,有些可以根据数据的状态来判断。比如:

boolean dataLoaded = false;
if (dataLoaded) {}

// 不如直接:
DataX dataX = null;
if (dataX != null) }{}


boolean hasSelect = false;
if (hasSelect) {}

// 不如直接:
List<T> selectList = new ArrayList<>();
if (selectList.size() > 0) {}

实在无法避免的状态,可以考虑封装成类。
还有一些可以叠加的、语义上有关联的状态,可以考虑使用位运算。

长不大的小祸害 2022-09-11 13:11:35

android可以用控件本身的某些属性关联,isSelectAll应该是复选框的吧,可以和复选框checked关联起来

耶耶耶 2022-09-11 13:11:35

一个long可以表示64个bit,也就是64个boolean类型的字段,一个long就可以替代了,使用位操作,jdk里有个bitset类你可以看看

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文