返回

ViewBinding封装无用论

Android

ViewBinding使用封装的弊端

对于ViewBinding的使用封装,开发人员普遍存在以下误区:

  • 认为ViewBinding的封装可以提高代码复用率。
  • 认为ViewBinding的封装可以简化代码,提高开发效率。
  • 认为ViewBinding的封装可以提高代码的可维护性。

然而,经过实际验证,这些观点并不成立。

初试

尝试抽取一层Base类进行封装

public abstract class BaseActivity<T extends ViewBinding> extends AppCompatActivity {
    protected T binding;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try {
            Class<T> bindingClass = (Class<T>) ((ParameterizedType) getClass()
                    .getGenericSuperclass()).getActualTypeArguments()[0];
            Method inflateMethod = bindingClass.getMethod("inflate", LayoutInflater.class);
            binding = (T) inflateMethod.invoke(null, getLayoutInflater());
            setContentView(binding.getRoot());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用时:

public class MainActivity extends BaseActivity<ActivityMainBinding> {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 使用binding
    }
}

验证结果:无用

经过测试,使用上述封装方式并不能提高代码复用率,反而增加了代码量,降低了开发效率。

深究

ViewBinding的使用特点

ViewBinding的使用特点决定了其封装的无用性。ViewBinding本质上是一种代码生成技术,用于自动生成将视图与代码绑定在一起的代码。这种自动生成的代码通常非常冗长,而且与特定的布局文件强绑定,难以复用。

代码复用的局限性

代码复用是软件工程中提高开发效率的重要手段,但代码复用也存在一定的局限性。对于ViewBinding的使用封装来说,由于ViewBinding代码与特定的布局文件强绑定,因此其复用性非常有限。

过度封装的危害

过度封装会给代码维护带来很大的不便。当需要修改某个布局文件时,如果ViewBinding代码被过度封装,那么就需要修改多处代码,这无疑增加了维护难度。

优化开发效率的思路

既然ViewBinding的封装无用,那么我们应该如何优化开发效率呢?

以下是一些建议:

  • 避免过度封装ViewBinding。
  • 将ViewBinding代码与布局文件放在同一个文件中。
  • 使用代码生成工具来生成ViewBinding代码。
  • 使用ViewBinding库来简化ViewBinding的使用。

结语

通过对ViewBinding的使用封装问题的探讨,我们得出结论:ViewBinding的封装无用。因此,我们应该避免过度封装ViewBinding,并采用其他优化开发效率的思路。