FreeMarker代码质量真的很差
这里说的版本是:FreeMarker 2.3.10 (April 20, 2007)
freemarker.core.TemplateElement 第101行:
if (msg != null & !msg.equals("")) 没有用 短路与“&&” 而是 “&”,
当msg == null时, msg.equals("")总是会被调用,总是空指针异常!
else语句一点作用都没有。
freemarker.template.ObjectWrapper 第77行
if (msg != null & !msg.equals("")) 没有用 短路与“&&” 而是 “&”,
当msg == null时, msg.equals("")总是会被调用,总是空指针异常!
else语句一点作用都没有。
貌似用这个"&"才是短路与吧
if (msg != null & !msg.equals("")) 没有用 短路与“&&” 而是 “&”,
当msg == null时, msg.equals("")总是会被调用,总是空指针异常!
else语句一点作用都没有。
貌似用这个"&"才是短路与吧
&&才是短路的,&是非短路。已测。 14 楼 sg552 2007-08-16 一年前就听说FREEMAKER有很著名的BUG。
看来当初没学就对了。 15 楼 nihongye 2007-08-16 很好用的说,一些差的代码不会改变我对它的喜欢。楼主指出问题来值得称赞。 16 楼 Torr 2007-08-16 这些问题可以通过工具查出来. 要是设计上的问题, 那就很糟糕了. 呵呵
有一点很肯定, freemarker 的性能需要提升. 17 楼 hpq852 2007-08-17 Torr 写道这些问题可以通过工具查出来. 要是设计上的问题, 那就很糟糕了. 呵呵
有一点很肯定, freemarker 的性能需要提升.
Freemarker 就是一个典型的 Visitor 模式. 上面那些bug明显都是一些低级错误, 不影响使用就可以了. 18 楼 javatar 2007-08-17 Torr 写道这些问题可以通过工具查出来. 要是设计上的问题, 那就很糟糕了. 呵呵
有一点很肯定, freemarker 的性能需要提升.
Freemarker 在设计上的缺陷更大,所有包都存在循环依赖,
你可以用JDepend试一下,所有包都是“感叹号”,
并且没有任何层次结构,更别说朝着稳定的方向依赖了,
REP, CRP, CCP, ADP, SDP, SAP等原则无一遵守。
其Visitor实现也很难扩展,这可能是Visitor通病。
主要领域对象的生命周期事件也没有。
宁愿每个对象做Wrapper,也不用总体装饰器或AOP拦截器,搞得Wrapper满天飞。
太多了,有空再总结。
还有我以前发的关于TemplateLoader的缺陷:
http://javatar.iteye.com/blog/80197
19 楼 Classicning 2007-08-19 觉得功能上还可以,可能代码里面还是比较粗糙的吧,加油加油啊 20 楼 hongliang 2007-08-19 楼主精神可嘉!
不过回过头来说,这些代码都是internal的,对用户不可见,问题不像想象中的那么大。 21 楼 together 2007-08-21 代码确实很差劲.
一直在使用velocity,大小应用都还没出现过什么问题. 22 楼 kevinming 2007-08-21 楼主的钻研值得学习~ 23 楼 geszJava 2007-08-21 喜欢velocity,freemark没有怎么用过,不过看到这两段代码,感觉很失败.完全就是刚毕业的新手写的.不管对用户影响大不大,这种不严谨的态度让人很失望. 24 楼 cnpollux 2007-08-21 幸好这是老外写的。要是国人写的,会不会又被骂个狗血喷头? 25 楼 zengjinliang 2007-08-21 本来想下来用用的,想不到那么多问题,汗~~~ 26 楼 javatar 2007-08-22 通用组件的设计与应用程序最大的不同就是其API导出后是不可以改变,因为向前兼容是组件生存的根本,如果API设计很差,也只好遗臭万年,如果扩展性设计不好,第三方无法进行扩展,当遇到特殊问题,用户只能眼巴巴等着作者在下一个版本加入此功能,如果作者没时间或力所不及,那就只好发点唠骚了事,牛点的可以自己修改源代码,但却无法再使用新版本修复的一些问题。 27 楼 dualface 2007-08-22 cnpollux 写道幸好这是老外写的。要是国人写的,会不会又被骂个狗血喷头?
必然的啦。。。。。