2017-04-03 40 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的情况下有一个默认模式。