我在一个类中发现了以下代码片段,它们有3种不同的方法:
if (errCode == IN_ERR_CONST_1)
throw new CustomException(OutErrorType.TYPE_A);
if (errCode == IN_ERR_CONST_2)
throw new CustomException(OutErrorType.TYPE_A);
...
if (errCode == IN_ERR_CONST_9)
throw new CustomException(OutErrorType.TYPE_B);
if (errCode == IN_ERR_CONST_10)
throw new CustomException(OutErrorType.TYPE_B);
我最初想通过将其全部放在一个方法中并使用一些Map来重构它,但后来我意识到每个方法中的ifs序列略有不同,即其中一个ifs语句后面是不同的代码块。
例如,在一种方法中,我们可以:
if (errCode == IN_ERR_CONST_2)
throw new CustomException(OutErrorType.TYPE_A);
第二种方法是:
if (errCode == IN_ERR_CONST_2)
throw new CustomException(OutErrorType.TYPE_B);
其他一切都一样。
我怎样才能解决这个问题?
2条答案
按热度按时间qjp7pelc1#
你能做一些这样的策略吗;
您将合并此枚举上的所有配置,并且可以在没有任何if的情况下获取
i86rm4rw2#
您可以将map用于这样的情况(例如,在类构造函数中):
那你就用