根据http://martinfowler.com/bliki/CQRS.html我认为getOrCreate函数是反模式。
function getOrCreateObj(something) {
let f = find(something, db);
if (f) return f;
else return createObj(something);
}
我应该怎样做才能避免它?
答案 0 :(得分:2)
最好有无副作用的函数返回特定类型或null。
因此,您将拥有get
和create
方法,并在应用程序逻辑或上面的抽象中检查是否存在something
// pseudo code
get( INT: id ); // Returns SomeObj or NULL
create( INT:id ):: SomeObj;
// In service or application layer or other abstraction
foo = get( 1 ) || create( 1 );