【发布时间】:2010-09-22 07:13:28
【问题描述】:
标题主要说明了这一点。我想在 C# 中的 Dictionary 基类中添加一个简单的扩展方法。一开始我打算把它命名为 Pop(TKey key),有点像 Stack 方法,但它接受一个用于查找的键。
那我本来打算做Take(TKey key),但是和同名的LINQ方法不谋而合……虽然C# 3.0可以让你做,但我不喜欢。
那么,您认为,还是坚持使用 Pop 还是有更好的术语来表示“查找并删除元素”?
(我觉得问这个问题有点尴尬,这似乎是一件微不足道的事情......但我喜欢使用标准,并且我对许多语言/环境没有丰富的经验。)
编辑:对不起,应该解释更多......在这种情况下,我不能使用术语删除,因为它已经由我使用新方法扩展的类定义。
编辑 2:好的,这就是我目前所拥有的,受到群众智慧的启发:
public static TValue Extract<TKey, TValue>
(
this Dictionary<TKey, TValue> dict,
TKey key
)
{
TValue value = dict[key];
dict.Remove(key);
return value;
}
public static bool TryExtract<TKey, TValue>
(
this Dictionary<TKey, TValue> dict,
TKey key,
out TValue value
)
{
if( !dict.TryGetValue(key, out value) )
{
return false;
}
dict.Remove(key);
return true;
}
【问题讨论】:
-
这个问题一点都不简单。最好提前选择一个好名字,然后不得不忍受它多年(或者更糟,让别人忍受它)
标签: data-structures programming-languages naming-conventions terminology naming