根据New Recommendations for Using Strings in Microsoft .NET 2.0中发布的指南,字符串中的数据可能会出现以下类型的行为之一:
鉴于此,我想知道在公共API中传达字符串参数的最佳方式。我无法在Framework Design Guidelines中找到答案。
考虑以下方法:
f(string this_is_a_linguistic_string)
g(string this_is_a_symbolic_identifier_so_use_ordinal_compares)
变量命名和XML文档是我能做的最好的吗?我可以用某种方式使用属性来标记字符串的要求吗?
现在考虑以下情况:
h(Dictionary<string, object> dictionary)
请注意,字典实例由调用者创建。如何通知被调用者期望IEqualityComparer&lt; string&gt;字典所持有的对象,例如,不区分大小写的序数比较?
答案 0 :(得分:5)
使用文档语法:
/// <param name="dictionary">
/// ... string is case sensitive ordinal ...
/// </param>
答案 1 :(得分:1)
您可以随时使用修改后的匈牙利语约定(我的意思是Joel-approved kind):
cs
(非语言)ci
(非语言)cil
csl
“i”和“s”在这里具有一致的含义,即使它们可能意味着两种不同的东西,这取决于上下文,这是一个有用的属性。 “我”的意思是“不关心”(关于案例/文化),“s”的意思是“关心”。
当然,作为免责声明,我从不这样做,因为对于我处理的绝大多数字符串,这些类型的字符串之间的区别最多是模糊的。但如果它们具有语义含义,那么这将是依赖XML文档的合理替代方法。特别是当你将它们用作私有方法的参数时,大多数人都不会为它们编写XML文档。