【发布时间】:2014-05-22 23:34:05
【问题描述】:
我有一个类使用 EPPlus 从电子表格中读取文本。它可以工作,并且完全符合我的要求,但我觉得我这样做的方式是不好的做法,但对于我的生活,我无法找到一个更少硬编码和使用更少 if 语句的替代方案。 该类包含诸如
之类的常量private static string configUserName;
private static string configPassword;
private static string configUrl;
private static string configDatabase;
//etc
其中大约有 40 个。该类通过电子表格循环读取所有值,检查它是什么样的值:
int i = 1;
object isRow = currentWorksheet.Cells[i, 1].Value;
while (isRow != null)
{
if (isRow.ToString().Trim().Equals("change_bank_details_policy"))
{
if (currentWorksheet.Cells[i, 2].Value != null)
{
change_bank_details_policy =c currentWorksheet.Cells[i,2].Value.ToString().Trim();
}
}
else if //etc 40 more if statements
然后因为值是私有的,所以有 40 种方法,例如
public static string GetConfigUserName()
{
return configUserName;
}
一定有更好的方法来做到这一点? 电子表格看起来像
change_bank_details_policy,11459676
change_DD_date_policy,11441975
[40 more rows....]
【问题讨论】:
-
你可以通过使用 switch 语句使它更干净。
-
你有没有想过使用map String -> Function?
-
@MikeStrobel 还有另一个用于“change_bank_details_policy”的公共字符串