命名“get/create & get”函数的约定[已关闭]

问题描述 投票:0回答:3

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

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

现在我的问题:是否有任何约定来命名这样的函数,以便使用我的库的人们不需要阅读下面的代码来弄清楚它的作用?类似于

GetOrCreateThenGet
GetForSure

naming conventions
3个回答
12
投票

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


6
投票

为什么除了

getXXX()
之外你还需要其他东西。任何具有
and
/
or
的方法都意味着它做得太多,并且混合了关注点并严重破坏了
Single Responsibility Principle

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

getOrCreate
意味着您将
get
对象
or
它将是
created
但不会返回。

我为什么要关心

create
部分?

如果我真的应该关心的话,那么

getOrCreateAndGet
在语义上是正确的,但非常非正统,并且容易与同行讨论方法做很多事情,混合关注点并打破
Single Responsiblity Principle
?仅仅因为其他人将事物命名为古怪和无意义,也不能成为做错事的好借口。


-1
投票

GetGuaranteed似乎涵盖了呼叫者需要知道的所有...

© www.soinside.com 2019 - 2024. All rights reserved.