gpt4 book ai didi

naming-conventions - 获取或创建对象的方法的好名称是什么?

转载 作者:行者123 更新时间:2023-12-03 06:13:34 25 4
gpt4 key购买 nike

假设您有一个缓存,以及一个执行如下操作的方法:

if (wanted Foo is not in cache)
cache.Add(new Foo())
Return Foo from cache

你会怎么称呼这个方法? GetFoo()GetOrCreateFoo() 还是其他(以及更好的)?或者这真的应该分为两种方法吗?

最佳答案

在大多数情况下,一个简单的 GetFoo 就足够了,因为调用者不需要知道您正在创建和缓存它。这就是封装的意义所在。

但是,在某些情况下,创建是一项昂贵的操作,因此了解您可能正在按需创建某些内容并且在某些情况下会很慢是很有用的。在这种情况下,不同的命名约定使调用者更清楚。 GetOrCreate()Get(Options.CreateIfMissing) 是对调用者的一个很好的提示。

(当然应该在文档中注明该行为,但是最好使用一个方法名称来提醒人们在阅读代码时注意副作用,而无需他们提出并阅读每个方法的文档被称为)

我发现这种情况最常发生的情况是(例如)当查找树节点(例如在 XML 文档中)时,您可能有 CreateNode (创建一个节点而不添加它)到树)和AddNode(将现有节点添加到树)。在这种情况下,“添加节点(如果尚不存在)”需要有一个不同的描述性名称,因此我将使用类似 EnsureNodeExists 的内容来区分它并明确目的。

关于naming-conventions - 获取或创建对象的方法的好名称是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3184197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com