我有一个类 SortelList
作为私有(private)字段:此列表的每个元素都有一个 string
作为键和自定义数据作为值。当我调用 Update
我的类的方法,我指定键和数据,并且:
- 如果列表不包含指定的键,则向列表添加一个新条目;
否则,当前数据将更新为指定的数据(因此不会抛出异常)。
public class Cache
{
private SortedList<string, Data> _list;
// ... constructors and other methods
public void Update(string key, Data value, int number)
{
Data data;
if (this._list.TryGetValue(key, out data))
{
// update data using value and number
//
// ...
_list[key] = data; // overwrite the previous data with the updated data
}
else
{
_list.Add(key, value);
}
}
}
因此,即使您指定了重复键,此类也永远不会抛出异常。但是number
的值argument 必须是正数,那么小于或等于零的值应该被忽略。排除这些值的更好方法是什么?
- 我可以忽略小于或等于零的值:
if (number <= 0) return;
- 我可以制作
Update
方法返回一个 bool 值,所以:if (number <= 0) return false;
- 我可以制作
Update
方法在非正数时抛出异常。
我会抛出 ArgumentOutOfRangeException ,像这样:
public void Update(string key, Data value, int number)
{
if (number <= 0)
{
throw new ArgumentOutOfRangeException("number must be positive");
}
// Rest of the method
}
这是绝大多数 .Net 框架在验证参数时遵循的模式。
另一种方法是让 Update
方法返回一个 bool 值,指示操作是否成功。这对于允许您的 API 用户调用该方法而不抛出异常(如使用 TryParse
方法)很有用,但是在这种情况下没有必要,因为该方法的用户已经可以简单地通过在调用方法之前检查 number
参数的值来简单地避免抛出异常。
我是一名优秀的程序员,十分优秀!