2010-06-14 39 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