FreeMarker代码质量真的很差

这里说的版本是:FreeMarker 2.3.10 (April 20, 2007)

freemarker.core.TemplateElement 第101行:

public TemplateSequenceModel getChildNodes() {
if (nestedElements != null) {
return new SimpleSequence(nestedElements);
}
SimpleSequence result = null;
if (nestedBlock != null) {
result.add(nestedBlock);
}
return result;
}

居然在SimpleSequence result = null;后直接调用result.add(nestedBlock);
这行代码永远空指针异常!

freemarker.core.StopException 第84行:

public void printStackTrace(PrintStream ps) {
String msg = this.getMessage();
ps.print("Encountered stop instruction");
if (msg != null & !msg.equals("")) {
ps.println("\nCause given: " + msg);
} else ps.println();
super.printStackTrace(ps);
}

if (msg != null & !msg.equals("")) 没有用 短路与“&&” 而是 “&”,
当msg == null时, msg.equals("")总是会被调用,总是空指针异常!
else语句一点作用都没有。

freemarker.template.ObjectWrapper 第77行

ObjectWrapper DEFAULT_WRAPPER = DefaultObjectWrapper.instance;

freemarker.template.DefaultObjectWrapper 第70行

static final DefaultObjectWrapper instance = new DefaultObjectWrapper();

其中,DefaultObjectWrapper 是 ObjectWrapper 的子类。
他居然在父类静态块初始化过程中调用子类初始化方法,
晕倒,子类怎么能在父类之前实例化,这只会使构造失败,经常出一些莫明其妙的错误。

太多了,诸如此类问题用FindBugs就能查出几十个,
还有N多没用到的变量,方法,内部匿名类,到处乱七八糟,
不知道作者怎么对得起这么多用户。

同样的方法检查Spring和Hibernate,所有代码都写很严谨,也没有任何无用代码。
很无语...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值