如果getOrCreate是反模式,我该如何避免它?

时间:2015-11-24 11:39:24

标签: javascript design-patterns anti-patterns

根据http://martinfowler.com/bliki/CQRS.html我认为getOrCreate函数是反模式。

function getOrCreateObj(something) {
  let f = find(something, db); 
  if (f) return f;
  else return createObj(something);  
}

我应该怎样做才能避免它?

1 个答案:

答案 0 :(得分:2)

最好有无副作用的函数返回特定类型或null。

因此,您将拥有getcreate方法,并在应用程序逻辑或上面的抽象中检查是否存在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 );