用户提交程序使用的CSV文件。整个程序中使用的值来自CSV,如果错过了值,则自然会出现问题。以下是我的解决方案。
Ip在顶部
private List<String> currentFieldName = new ArrayList<String>();
作为方法的一部分:
try {
setCurrentFieldName("Trim Space");
p.setTrimSpace(currentLineArray[dc.getTRIM_POSITION()].equals("yes") ? true : false);
setCurrentFieldName("Ignore Case");
p.setIgnoreCase(currentLineArray[dc.getIGNORE_CASE_POSITION()].equals("yes") ? true : false);
} catch (NullPointerException e) {
throw new InputSpreadsheetValueUnassignedException("\"Type\" field not set: " + currentFieldName);
}
跟踪正在查看的当前字段的方法:
private void setCurrentFieldName(String fieldName) {
currentFieldName.clear();
currentFieldName.add(fieldName);
}
有这样的想法,如果用户无法提交值,我将最终获得null,在抛出异常之前,我将知道未分配的值。
所以,这就是具体问题:
答案 0 :(得分:3)
我想到的第一件事是使用ArrayList
来表示单个字段的名称是多余的。
为什么不定义private String currentFieldName;
并在try { }
做currentFieldName = "Trim Space"
等内部?
此外,
p.setTrimSpace(currentLineArray[index].equals("yes") ? true : false);
也可以表示为
p.setTrimSpace(currentLineArray[index].equals("yes"));
如果您的代码经历了很多列,那么您肯定可以使它更优雅。如果没有,您的时间可能会更好地花在项目的其他部分上。
您的解决方案是否可接受的答案取决于要求,并且测试套件将是提供是或否的理想方。