2010-06-14 31 views
0

用户提交程序使用的CSV文件。在整个程序中使用的值都来自CSV,如果错过了值,这是一个问题。以下是我的解决方案。捕捉故障点的更好方法

叶顶部

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); 
} 

的想法有如果用户未能提交价值,我会最终得到空,抛出异常之前,我会知道什么值未分配。

所以,这是说,具体的问题:

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

回答

3

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

为什么不只是定义一个private String currentFieldName;而在你的try { }里面currentFieldName = "Trim Space"等等呢?

此外,

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

可以一样好地如果你的代码经过许多列表示

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

,你肯定可以使其更加优雅。如果没有,你的时间可能会更好地花在项目的其他部分。

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

+0

+1表示使用“多余” – cdonner 2010-06-14 02:09:22

+0

+1这个词来表示测试套件/单元测试。国际海事组织,这不是没有体面的单元测试的可接受的解 – 2010-06-14 02:17:03

+0

这真是太棒了! p.setTrimSpace(currentLineArray [指数] .equals( “是”)); – JAM 2010-06-14 02:21:41