更好的方法来捕捉麻烦点

时间:2010-06-14 01:50:22

标签: java

用户提交程序使用的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,在抛出异常之前,我将知道未分配的值。

所以,这就是具体问题:

  1. 我在下面显示的是可接受的解决方案吗?
  2. 你能推荐更优雅的东西吗?

1 个答案:

答案 0 :(得分:3)

我想到的第一件事是使用ArrayList来表示单个字段的名称是多余的。

为什么不定义private String currentFieldName;并在try { }currentFieldName = "Trim Space"等内部?

此外,

p.setTrimSpace(currentLineArray[index].equals("yes") ? true : false);

也可以表示为

p.setTrimSpace(currentLineArray[index].equals("yes"));

如果您的代码经历了很多列,那么您肯定可以使它更优雅。如果没有,您的时间可能会更好地花在项目的其他部分上。

您的解决方案是否可接受的答案取决于要求,并且测试套件将是提供是或否的理想方。