2017-04-03 53 views
2

我有一個模式,將在屬性文件或數據庫中可用。這將有夾着文字文本和事情是,整個格式化模式可以根據需求的變化,也就是重新洗牌的任何時間:DateTimeFormatter - 動態模式

pattern = "4pm on Wednesday"; 
pattern = "at 4pm on Wednesday"; 
pattern = "on Wednesday at 4pm"; 

所以這種格局將被傳遞給DateTimeFormatter:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern); 

所以現在我們有了解耦和未來證明的代碼,不是嗎?因爲代碼不必準確知道每個模式部分(即EEE/a/HH:MM等)的位置。

但是爲了表明文字文本,我們需要使用引號,比如說'on'或者'at',這個人把它放在db或property文件中,必須謹慎地知道並且不要錯過。

所以,如果這傢伙忘了把報價,那麼代碼將打破。所以我的問題是,最好保持模式並讓代碼不知道確切的模式?或者將代碼與模式耦合更好,即代碼必須準確知道每個模式部分的位置,並且每次需求都要求更改時,開發人員必須在代碼中更改它以防止破壞代碼?

+0

如果litteral文本內容和位置根據使用哪種模式而有所不同,那麼應該在您的litteral文本和各種模式之間進行某種映射=>至少在某種映射中區分模式 – alainlompo

+0

這取決於。如果需求最終將在實施之前解決爲固定模式,那麼將其包含在代碼中。如果需求可能在實施後發生變化,但不經常更改而不必立即生效,則仍將其包含在代碼中。用戶將不得不等待下一次部署。如果需求可能在實施後發生變化,並且必須立即生效,那麼將其保持在外部以便更新。 –

回答

0

這取決於! :p

如果你的嘗試是要有非常靈活的模式,也許你可以在它存儲的時刻測試模式。或者,也許你可以在FormatException的情況下有一個默認模式。