ms0*_*007 172 c# naming-conventions
如果方法名称以"Try"开头,我们正在与我们的同事讨论它意味着什么.
有以下意见:
什么是官方定义?"尝试"在方法名称中说什么?有关于此的官方指南吗?
Eri*_*oom 145
这被称为TryParse模式,并已由Microsoft记录.该官员异常和性能MSDN页说:
考虑可能在常见场景中抛出异常的成员的TryParse模式,以避免与异常相关的性能问题.
因此,如果你有一个常规用例意味着它可能抛出异常(例如解析int)的代码,那么TryParse模式是有意义的.
not*_*row 117
(更正)正如Erik建议的那样,有正式的指导方针.
当我看到TrySomething
方法时,我会假设它
bool
Something
方法,允许我自己处理任何异常.(编辑,Jesse Webb建议)我想你应该try
在你想继续时使用.方法返回某个值并不重要.
案例1:如果它返回正常,你可以以某种方式继续.
案例2:如果它没有返回:它仍然很好; 你可以用其他方式继续.
如果您希望某个值作为该方法的输出,则使用该out
参数.
int value
if (dictionary.TryGetValue("key", out value))
{
// Proceed in some way
}
else
{
// Proceed in some other way
}
Run Code Online (Sandbox Code Playgroud)
当你想要表明方法invokation可能产生无效结果的事实时,你必须在方法名称中使用"Try".继.NET标准是,顺便说一句,而不是引发异常的函数,但返回的一些功能VALID
或NON_VALID
从程序的角度来看,价值.
最后,这一切都与您决定在组中使用的命名约定有关.
确保try
在您的methodname中包含以下内容:
bool TrySomething(input, out yourReturn)
所以基本上如果我们使用try
-methods,我们只得到一个布尔结果.
所以下面的代码不会抛出任何异常:
string input = "blabla";
int number;
if (int.TryParse(input, out number))
{
// wooohooo we got an int!
} else
{
//dooh!
}
Run Code Online (Sandbox Code Playgroud)
而这段代码可以(在这种情况下)抛出异常:
string input = "blabla";
int number;
try
{
number = int.Parse(input); //throws an exception
}
catch (Exception)
{
//dooh!
}
Run Code Online (Sandbox Code Playgroud)
使用Try方法是一种更安全,更防御的代码方式.如果代码片段#2不是整数,那么代码片段#2也会执行更多性能.