11

我正在研究一个按值(例如按名称)从容器(例如数组)返回对象的函数。如果对象不存在,则创建并返回对象的默认副本(默认构造函数)。

这样,该函数总是返回一个对象,无论该对象在调用该函数之前是否存在。

现在我的问题是:如何命名这个函数?GetOrCreateThenGet听起来很愚蠢。有任何想法吗?

编辑:我觉得这样的东西更接近函数的本质:GetForSure ...

4

3 回答 3

11

最适合该功能的名称是“提供”,例如,如果您提供商品,您可以从仓库发货或制作/购买新商品然后交付。

于 2017-01-04T20:45:03.780 回答
6

为什么你需要除getXXX(). 任何具有and/or意味着它正在做很多事情并且正在混合关注点并严重破坏Single Responsibility Principle.

如果调用者只需要从合约中获取对象,那么调用者是否应该真正关心对象是否是按需创建的?

getOrCreate意味着您将得到它但不会返回get的对象。orcreated

再说一遍,我为什么要关心这个create部分?

如果我真的应该关心它,那将getOrCreateAndGet是语义上正确的,但高度非正统,并且容易与同行讨论处理许多事情的方法,混合关注点并打破Single Responsiblity Principle? 仅仅因为其他人将事情命名为古怪和无意义的事情也不是做错事的好借口。

于 2013-04-24T22:13:42.370 回答
-1

GetGuaranteed seems to cover all the caller needs to know...

于 2013-04-24T20:31:56.797 回答