当开发人员传递不存在的resourceKey时,我通过使用' as'来抓住他的失败。操作
option1 :
var image = resourceManager.GetObject(resourceKey) as Bitmap;
return image;
选项2
var image = resourceManager.GetObject(resourceKey) as Bitmap
我应该在这里检查并抛出自定义执行("给定密钥的图像不存在!")
我"假设"每个开发人员测试他的代码,因此将不存在的 resourcekey作为字符串传递应该会导致GetObject-Method调用出现异常。
当开发人员返回null并且没有显示任何内容时,开发人员有什么好处?实际上没有任何好处。
但我的同事们有不同意见......
答案 0 :(得分:2)
在实施公共图书馆时遇到了同样的问题。
我认为通常最好确保开发人员了解他们的所作所为。如果某个值可以为null或抛出异常,则需要注意这一点。
该方法显示GetBitmap
,它没有说PleaseTryGetBitmap
或FindBitmap
(查找意味着可能找不到某些内容)。因此,方法的契约明确地说应该为给定的名称提取位图。任何其他事情都是例外情况,因此应抛出异常。
所以我会为您的问题建议2个解决方案:
<强> 1。抛出异常并添加<exception>
以记录您的方法。
包含抛出异常中失败的密钥。它使调试变得更容易。
/// <exception cref="ArgumentException"></exception>
public Bitmap GetBitmap(string resourceKey)
{
var bitmap = resourceManager.GetObject(resourceKey) as Bitmap;
if (bitmap == null) throw new ArgumentOutOfRangeException("resourceKey", resourceKey, "Failed to find resource with the specified name.");
return bitmap != null;
}
<强> 2。使用tryGet
样式方法,如下所示。
这将强制开发人员检查该值是否存在并根据此行为。
public bool TryGetBitmap(string resourceKey, out Bitmap bitmap)
{
bitmap = resourceManager.GetObject(resourceKey) as Bitmap;
return bitmap != null;
}