概括/重构代码

Top*_*der 2 c++ refactoring

我的代码是这样的:

if(country == china)
{
getCNData();

}

else {
getDefaultDataForallCountries();

}
Run Code Online (Sandbox Code Playgroud)

现在我需要为其他一些国家的美国提供与CN类似的逻辑.我可以选择在条件允许的情况下添加一个国家/地区检查

if(country ==china && country==US){
getCNandUSData();

}

else {
getDefaultDataForallCountries();


}.
Run Code Online (Sandbox Code Playgroud)

1)我不太习惯这个解决方案,因为这不是通用的.如果明天我需要将相同的CN逻辑应用于另一个国家,请说法国.能否请您建议我如何使我的代码更好,更通用.

2)我也不满意命名约定.如果说我采用在If条件下添加US的方法,我应该将类名和函数名重构为getCNAndUSData()吗?

我不确定处理这些现有代码的正确方法是什么.感谢您的评论.

Dou*_*oug 10

通过使用抽象工厂实现策略模式,可以巧妙地处理这种类型的问题(过度使用"if"和"switch"语句).基本上,您希望在不改变实现的情况下更改算法,并反复复制代码.

请享用!