B. *_*non 2 c# validation properties
在设置端口号的应用程序中,我想将可分配给端口号的值限制在49152和65535(含)之间.
我写了一些测试方法,测试超出此范围的任何内容都会导致测试失败.它们确实失败了(正如预期的那样,因为代码还没有考虑到这一点).
所以我的问题是:将强制无效值的代码放到有效值的最佳位置是什么 - 这里:
public int Port
{
get
{
return port;
}
set
{
port = value;
}
}
Run Code Online (Sandbox Code Playgroud)
如:
public int Port
{
get
{
return port;
}
set
{
if ((value < 49152) || (value > 65535))
{
value = 55555;
}
port = value;
}
}
Run Code Online (Sandbox Code Playgroud)
...或者别的地方?
Eri*_*ert 15
将强制无效值的代码放到有效值的最佳位置是什么?
最好的地方是无处可去.强制将无效值强制为随机有效值会隐藏调用方中的错误.调用者可以提前知道他们尝试设置的值是否有效,如果他们做错了就会崩溃.抛出异常,不要忽略错误并猜测它们的含义.
ken*_*ken 12
您可以在验证器中放置验证逻辑,但是如果验证失败,您可能应该让某人知道.
即:
private static int minimumPortNumber = 49152;
private static int maximumPortNumber = 65535;
public int Port
{
get
{
return port;
}
set
{
if ((value < minimumPortNumber) || (value > maximumPortNumber))
{
throw new ArgumentOutOfRangeException("port", string.Format("The port number is out of range. It must be between {0} and {1}", minimumPortNumber, maximumPortNumber));
}
port = value;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2346 次 |
| 最近记录: |