這可能是一種常見現象,可能是一個愚蠢的問題,但我真的很想知道別人是如何處理這個問題的。簡化if(做一些操作),然後返回
說我有:
private void actionPerformed(ActionEvent evt){
String text = textfield.getText();
if(isValid(text)){
// do something eg:
list.add(text);
}
}
private boolean isValid(String text){
if(text.isEmpty()){
displayErrorMessage("empty string!");
return false;
}
if(hasInvalidChars(text)){
displayErrorMessage("Invalid chars");
return false;
}
....
return true;
}
和isValid(String)方法感覺怪怪的,我覺得一個方法應該只做一個簡單的事情,但isValid()的肯定違反了它,它會顯示一個錯誤信息,然後返回一個布爾值。
這樣好嗎?還是有其他方法來解決它?
另一個沒有那麼優雅的解決方法,我能想到的是執行一個標誌。即:
private void actionPerformed(ActionEvent evt){
String text = textfield.getText();
verify(text);
if(!errorIsDisplayed){
list.add(text);
}
}
private boolean verify(String text){
if(text.isEmpty()){
displayErrorMessage("empty string!");
errorIsDisplayed = true;
}
if(hasInvalidChars(text)){
displayErrorMessage("Invalid chars");
errorIsDisplayed = true;
}
....
errorIsDisplayed = false;
}
我希望你可以清楚地看到,我正在試圖解決這個問題,我覺得這是我失蹤,可能是由於睡眠不足和天氣,我不要一個簡單的解決方案不知道。其他人如何實施這個?
不是在方法內部顯示消息,而是可以根據isValid返回的內容在外部顯示它們,但是這樣就無法區分兩種情況。除了感覺奇怪之外,你現在擁有的東西還有問題嗎? – MC10
是的,這是我當前的行動點,在actionPerformed()本身內移動isValid()的實現。我只是覺得像actionPerformed()會混亂。我認爲有一個像isValid()這樣的方法會以某種方式讓更多的代碼可讀,同時顯示意圖。 – yev