有人设计了依赖完整数据的代码;XML 总是包含所有元素。数据源现在正在发送稀疏 XML;如果它以前是空的,现在它就不见了。因此,是时候在修复错误的同时进行重构了。
有 100 多行这样的代码:
functionDoSomething(foo, bar, getRoot().getChild("1").getChild("A").
getChild("oo").getContent());
除了现在,getChild("A") 可能返回 null。或者任何 getChild(xxx) 方法都可以。
作为一个额外的转折,实际上有四个单独的方法而不是 getChild(),它们只能以特定顺序出现。有人建议使用可变参数调用,这不是一个坏主意,但不会像我想的那样干净利落。
清理这个最快的方法是什么?最好的?建议在每一行周围“尝试/捕捉”,但是伙计,这很难看。将上述方法的第三个参数分解为它自己的函数可能会起作用……但这将需要 100 多个新方法,虽然不那么难看,但感觉很丑。
getChild(xxx) 调用的数量在每行 6 到 10 次之间,没有固定的深度。也没有办法为此获得正确的 DTD。稍后将在没有事先提醒的情况下添加内容,并且在发生这种情况时我希望在日志中显示警告,需要优雅地处理 XML 中的额外行。
想法?
getChild() 实际上是一种方便的方法。我想到的最干净的方法是让便捷方法返回一个有效的 Child 对象,但让那个“空”的 Child 的 getContent() 始终返回“”。