在使用模板引擎时,遇到了一个纠结的问题,现需要分析一下。
在界面完全一样的情况下,所需的变量,也就是put到标记语言中的内容不一样
时,是选择重写界面,还是选择在底层进行逻辑区分?
场景假设
:有27个界面,平均每个界面需要装载4个小界面,也就是4个
panel。有8种panel。
当然对于爱好偏向界面的我来说,
重写界面是最好、最快速的选择。可是从对产品负责的方面考虑,让我们来假设下不同选择的结果!
首先界面不需要重写,可以节约界面十分之三
的工作量(重写界面只需粘贴复制,修改模板语言标记)。在此假设108(=274)个页面,美工,css,浏览器差异为2个人日,108界面工作量为8
个人日,去处重复的100(=(108/8-1)8)个页面,也就是只需3个人日,节约了7个人日。
界面不重写,唯一能确定put的内容到底该
是什么值时需要根据你打开页面的瞬间,通过servlet传递的参数来进行区别。那么在底层,就需要很多的if…else…。在此有平均有4种类
型,每种类型有27个判别情况。也就是需要108次判别。即使你使用了设计模式,代码看起来可能简介,易于重构,可是到底层,还是一样的
if…else…。性能上面肯定存在一定的影响。这样姑且不说,节约的7个人日中至少有5个人日又被if…else..折磨殆尽,工作量上基
本是一样的。因此可见,重写模板是最好的选择。
产生此问题的原因
归结于整个系统的key不够灵活抽象,如果key根据4种
类型,27个情况,按照组合的方式进行定义,那么杯具就不会产生,同样的模板,只需要4次判别即可,也就是节约了重写模板的7个人日和底层
if…else…的5个人日,加起来共节约了11个人日(哇咔咔)。可惜木已成舟,我们需要的不是去责备和哀怨,只能寻找最适合的办法去解决它。