這取決於。不希望你第一次找到合適的解決方案。把它寫下來然後去。如果您遇到了一些問題的退貨和重新編寫。這是編程中的慣例
你現在可以做的主要事情是開發一種不會隨時變化的契約(或接口)。最簡單的合約將是Collection<String> getCorrectEmails()
。可能Iterable<String> getCorrectEmails()
會更好,因爲你可以用流/數據庫/微服務實現它/不管
修訂 既然你有電子郵件的只有1000這可能是不改變,你可以硬編碼它們。爲了避免源代碼膨脹,我建議在另一個文件中介紹的支架:
class ValidEmailHolder {
// note method is non-static. It WILL help you in the future
/* use Collection instead List isn't necessary but a good practice
to return more broad interface when you assume it could be changed in next 10 years */
public Collection<String> getEmails() {
return EMAILS;
}
private static final List<String> EMAILS = Arrays.asList(
"[email protected]",
"[email protected]",
// many lines here
"[email protected]"
);
}
,然後用它在你的類
public Collection<String> getValidEmails() {
ValidEmailHolder.getEmails();
}
注意到我只是叫ValidEmailHolder.getEmails()內法。這是一個Bridge pattern,這裏它會幫助你,如果你想改變行爲。很可能你會想要在外部文件中引入電子郵件列表,可能是在數據庫中,甚至是在系統屬性中。然後,您可以寫下ValidEmailFileHolder
,然後只需更改呼叫。你也可以添加這樣的邏輯
Collection<String> result = ValidEmailDbHolder.getEmails();
if (result == null || result.isEmpty()) {
result = ValidEmailHolder.getEmails();
}
return result;
但可能你不需要這個。你可以輕鬆做到這一點
來源
2017-06-02 09:58:50
ADS
當你說'最好的方式'時,你是什麼意思?性能最好? Mainentantability?你的教師學位?較少的代碼? – ADS
我的意思是性能和速度 – Victor
請澄清。什麼速度?你打算使用clasters?你確定會有1000封電子郵件,而且從來沒有1,001封嗎? – ADS