java - 如何降低onClick()方法内部的圈复杂度

让我们想象一个简单的构造:

public void onClick(View view) {
    switch (view.getId()) {
        case R.id.btn_first: {
            // some code
        }
            break;
        case R.id.btn_second: {
            // some code
        }
            break;
        case R.id.btn_third: {
            // some code
        }
            break;
        // and so on
    }
}


这是一段微不足道的代码,用于处理不同按钮的单击。但是随着按钮数量的增加-switch块的圈复杂性也随之增加。还有另一种方法可以表示这种代码结构,以减少onClick()方法的循环复杂性吗?提前致谢。

最佳答案

public void onClick(View view) {
    for (ClickHandler handler : allHandlers()) {
        if (handler.supports(view.getId())) {
            handler.onClick(view);
        }
    }
}

interface ClickHandler {
    boolean supports(int viewId);
    void onClick(View view);
}


为每个分支实现一个ClickHandler,并让allHandlers()建立它们的列表。

本文翻译自 https://stackoverflow.com/questions/14647732/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java android refactoring switch-statement cyclomatic-complexity


相关文章:

java - 飞碟:将多个HTML转换为1 PDF文档

android - 扩展AppCompatActivity后在搜索栏中显示错误

java - 如何从硬编码的静态配置文件切换到.properties文件?

java - 在Java中的foreach循环中调用remove

java - 在文件中写入多个对象并读取它们

java - 从字符串实例化BigDecimal的最快方法

android - 如何在onPictureTaken函数后恢复android摄像头预览?

android - 线性布局中的按钮重量

python - 如何在emacs中使ropmacs更快?

java - 如何减少每个类中的Logger.getLogger(…)样板