有人设计了依赖于完整数据的代码; XML 总是包含每个元素。数据源现在正在发送稀疏 XML;如果它以前是空的,现在它不见了。因此,是时候在修复错误的同时进行重构了。

有 100 多行代码是这样的:

functionDoSomething(foo, bar, getRoot().getChild("1").getChild("A").
    getChild("oo").getContent());

除了现在, getChild("A") 可能返回 null。或者任何 getChild(xxx) 方法都可以。

作为另一种替代方法,实际上有四个单独的方法而不是getChild(),它们只能按某些顺序发生。有人建议使用 varargs 调用,这不是一个坏主意,但不会像我希望的那样干净。

清理这个的最快方法是什么?最好的?建议在每一行周围使用“try/catch”,但是伙计,这很丑陋。将上述方法的第三个参数分解为它自己的函数可能会起作用……但这将需要 100 多个新方法,尽管不那么好,但感觉很丑陋。

getChild(xxx) 调用的数量在每行六到十次之间,没有固定的深度。也没有可能为此获得正确的 DTD;稍后将在没有事先提醒的情况下添加内容,并且我希望在发生这种情况时在日志中发出警告,需要妥善处理 XML 中的额外行。

想法?

getChild() 实际上是一个方便的方法。我想到的最干净的方法是让便利方法返回一个有效的 Child 对象,但是让“空”的 Child 的 getContent() 总是返回“”。

最佳答案

您所描述的(返回一个特殊的子对象)是 NullObject 模式的一种形式,这可能是这里最好的解决方案。

关于java - 空指针无处不在,因为数据突然变得稀疏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1683698/

10-09 01:22