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

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

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

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

阅读 3k
3 个回答

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

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) {}

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题