用于创建某些内容的函数名称(如果尚未存在)

for*_*idt 5 language-agnostic naming coding-style function

我不时会编写一个函数来创建一些东西,如果它还没有,那么什么也不做.
名字喜欢CreateFooIfNecessary()EnsureThereIsAFoo()做工作,但他们觉得有点笨拙.

也可以说,GetFoo()但该名称并不意味着foo可以首先创建它,并且只有在函数返回句柄/指针/引用时它才有效foo.

那些熟悉英语的人能想出更好的方法来命名这些功能吗?

Sea*_*ean 18

GetOrCreate()怎么样


Nei*_*ell 13

UPDATE

这些天我知道的更好,因此将应用命令查询分离(CQS).CQS说的方法应该要么发生变异状态,返回一个结果,不可能兼顾.

因此,我目前的标准是:

Foo GetFoo(id); // Throws if Foo cannot be found for id
Foo FindFoo(id); // Returns null if the Foo cannot be found.
void CreateFoo(id[, args]); // Creates a Foo with supplied args.
Run Code Online (Sandbox Code Playgroud)

旧邮政 - IGNORE

我经常使用这个标准:

GetFoo(); // Always returns a Foo, so creates if there isn't one already.
FindFoo(); // Returns null if the Foo cannot be found.
Run Code Online (Sandbox Code Playgroud)

当您基于密钥加载员工或某事物时,在数据访问中特别有用,它可能存在也可能不存在.

具体而言 - 这是一个记录在案的编码标准.在代码库上工作的每个人都知道这个标准并以相同的方式实现它.这就是我们如何摆脱这些相当通用的好短名称.


Ric*_*dle 6

我会去EnsureFoo().