用户提交一个由程序使用的 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,那么在抛出异常之前,我会知道未分配什么值。
所以,话虽这么说,具体问题是:
- 我在下面显示的解决方案是可接受的解决方案吗?
- 你能建议一些更优雅的东西吗?
最佳答案
我首先想到的是使用 ArrayList
来表示单个字段的名称是多余的。
为什么不直接定义一个 private String currentFieldName;
并在 try { }
中执行 currentFieldName = "Trim Space"
等? p>
另外,
p.setTrimSpace(currentLineArray[index].equals("yes") ? true : false);
也可以表示为
p.setTrimSpace(currentLineArray[index].equals("yes"));
如果你的代码涉及很多列,你绝对可以让它变得更加优雅。如果没有,您的时间最好花在项目的其他部分。
您的解决方案是否可接受的答案取决于需求,而测试套件将是提供"is"或“否”的理想选择。
关于java - 找到问题点的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3034637/