我正在开发一个函数,该函数按值(例如按名称)从容器(例如数组)返回对象。如果该对象尚不存在,则会创建并返回该对象的默认副本(默认构造函数)。
这样,该函数始终返回一个对象,无论该对象在调用该函数之前是否存在。
现在我的问题:是否有任何约定来命名这样的函数,以便使用我的库的人们不需要阅读下面的代码来弄清楚它的作用?类似于
GetOrCreateThenGet
或 GetForSure
?
该功能最合适的名称是“提供”,就像如果您提供货物,您可以从仓库发货或制造/购买新货物然后交付。
为什么除了
getXXX()
之外你还需要其他东西。任何具有 and
/or
的方法都意味着它做得太多,并且混合了关注点并严重破坏了 Single Responsibility Principle
。
如果调用者从合约中需要的只是获取对象,那么他们是否应该真正关心对象是否是按需创建的?
getOrCreate
意味着您将 get
对象 or
它将是 created
但不会返回。
我为什么要关心
create
部分?
如果我真的应该关心的话,那么
getOrCreateAndGet
在语义上是正确的,但非常非正统,并且容易与同行讨论方法做很多事情,混合关注点并打破Single Responsiblity Principle
?仅仅因为其他人将事物命名为古怪和无意义,也不能成为做错事的好借口。
GetGuaranteed似乎涵盖了呼叫者需要知道的所有...