将switch case重构为hashmaps:额外的内存使用量?

Ake*_*Jha 0 java sonarqube

我的开关中有79个案例.

switch (field) {
    case "ALL_STATUS":
        allowedAllStatus = allowedValues.split("=");
        break;
    case "APPLICATION_TYPE":
        allowedApplicationType = allowedValues.split("=");
        break;
    case "CONTACT_LOCATION":
        allowedContactLocation = allowedValues.split("=");
        break;
...
Run Code Online (Sandbox Code Playgroud)

当我将应用程序运行到sonarqube时,它要求我减少案例数量:

Reduce the number of switch cases from 79 to at most 30
Run Code Online (Sandbox Code Playgroud)

现在,在每种情况下我都需要执行相同的功能allowedValues.split("=").因此,我决定创建一个hashmap并将所有值放在那里,然后根据key字段调用该函数.

现在,我想问一下,按照我重构它的方式来做它是否有效 - 记忆明智还是时间明智?

dxd*_*xdy 7

一个79元素的switch-case语句几乎总是一个坏兆头.它不仅复制了许多类似的代码,而且还很难维护.如果你需要改变它的任何内容,我保证你会因为不同意处理它而生气.

在这种情况下,如果您希望按名称提供并从文件中读取多个String(Array?)属性,则Map是目前最优的解决方案.在这种情况下,没有10字节的内存差异会伤害到你.