因此,我最近对代码进行了一些重大的重构。我试图做的主要事情之一就是将类分为数据对象和辅助对象。除其他外,这是由“ 清洁代码”的这一部分启发的:
杂种
这种混乱有时会导致不幸的混合数据结构,即一半对象和一半数据结构。它们具有执行重要功能的函数,也具有公共变量或公共访问器和更改器,它们出于所有意图和目的,将私有变量公开,从而诱使其他外部函数以程序程序将要使用的方式使用这些变量。数据结构。
这样的混合体很难添加新功能,但是也很难添加新的数据结构。他们是两全其美的。避免创建它们。它们表示设计混乱,其作者不确定(或者更糟,是无知)他们是否需要保护功能或类型。
最近,我正在查看我的一个工作对象(恰好实现了Visitor模式)的代码,并看到了:
@Override
public void visit(MarketTrade trade) {
this.data.handleTrade(trade);
updateRun(trade);
}
private void updateRun(MarketTrade newTrade) {
if(this.data.getLastAggressor() != newTrade.getAggressor()) {
this.data.setRunLength(0);
this.data.setLastAggressor(newTrade.getAggressor());
}
this.data.setRunLength(this.data.getRunLength() + newTrade.getLots());
}
我立即对自己说:“功能令人羡慕!这种逻辑应该在Data
类中-特别是在handleTrade
方法中。handleTrade
并且updateRun
应该始终一起发生”。但是后来我想到“数据类仅仅是一个public
数据结构,如果我开始这样做,那么它将成为一个混合对象!”
有什么更好的,为什么?您如何决定该做什么?