Foo*_*Bar 8 java refactoring anti-patterns
是否包含包含...等对象的对象的名称或特定规则.我正在使用一个复杂的系统,通常有5-10层深的物体.我听到为什么这样做的一个原因是一次性将大量数据从服务器传递到客户端,有更好的方法吗?
编辑:似乎它是一些反模式的组合.领域模型应该被清理,下面的反模式是气味:火车残骸模式,除厨房水槽地图以外的一切
小智 7
我不知道这种对象树的名称.但是一个众所周知的反模式是火车残骸模式,当代码使用过多的方法链时会出现这种模式.
objA.getChildB().getChildC().getChildD()....getChildZ().performSomeAction();
Run Code Online (Sandbox Code Playgroud)
包裹所有的是一个很好的经验法则
.getChildC().getChildD()....getChildZ().performSomeAction();
Run Code Online (Sandbox Code Playgroud)
进入一个方法
objA.getChildB()
Run Code Online (Sandbox Code Playgroud)
我们称之为这种方法performSomeActionDeepDownTheObjectTree().
这看起来像一个领域模型变坏(不是反模式名称,BTW :)它源于幻觉,有一个明确定义的域模型这样的事情.实际上,问题域的某些方面可以优雅地建模,但是在更精细的细节层面上,例外情况和特殊情况下的特殊情况都有例外情况,每个情况都特定于单一服务方法,这会破坏这种优雅.
许多嵌套对象的出现通常是将域模型"磨平"到更精细粒度的连续过程的结果,希望每个实例变量可以在不同的上下文中重用.有一个突破点,重用每个域属性的教条式命令只是停止有意义.
我的出路是停止尝试创建一个适合所有人的域模型,并使用专门为每个服务调用设计的对象.这些对象可能依赖于一些明确定义的域对象,但是以不干扰其他服务调用的方式单独添加任何特定信息.