当我编写代码时,我有一个奇怪的习惯,就是用只抛出如下异常的代码启动我的方法
public WhateverType MethodName(CrazyObjectType crazyObject, string para2){
if(crazyObject == null){
throw new ArgumentNullException("crazyObject");
}
if(param2 == null){
throw new ArgumentNullException("param2");
}
if(para2.Lenght > 32){
throw new ArgumentOutOfBoundsException("para2");
}
...
}考虑一些方法有6个参数,允许它们中的非参数为null,有些方法是字符串,它们可能不会是空的,也不会比某些值长。您可以想象,在我进入实际的方法逻辑之前,我编写了相当多的代码+我的类将很难阅读。
有没有任何工具/VS插件/Resharper插件/注释/代码片段让我不必编写所有这些重复的代码?
理想的解决方案是一些声明性注释,类似于:
[NotNull("crazyObject, param2")] [StringLenght("para2", 0, 32)]
public WhateverType MethodName(CrazyObjectType crazyObject, string para2){
...
}我的理想映像更进一步,我设想我可以使用GUI来实现过程的自动化,这样我就可以选择方法,单击某个地方,选中一些不应该为null的参数复选框,然后为我生成注释。
像这样的东西存在吗?
注意:我想我总是可以创建代码片段来生成代码,但是声明性方法和GUI生成器会更好。
编辑:说“考虑一些方法有6个参数”只是一个例子--我认为我没有太多这样的方法。相反,我应该写“考虑到您有很多--许多抛出3-4 ArgumentExceptions的方法”。
EDIT2:不好的术语。我意识到,在这个问题中,我所称的“注释”--如果我正确地从我的.NET类中记住了它--我的评论应该在.NET中被称为"attributes“。
发布于 2011-03-24 12:54:48
虽然它不是严格的声明性的,但我认为您可能应该看看代码契约。
要想找到一种让零论点测试变得更便宜的奇怪且不太推荐的方法,请看一看这篇博客文章。不过,这只包含空参数检查--而不是其他类型的有效性。
顺便说一句,只执行参数验证的方法的第一部分没有什么奇怪的。这完全合理。
发布于 2011-03-24 13:04:10
我同意Jon关于使用代码契约的意见。您可能会发现其他一些有趣的东西是Fluent验证。
https://stackoverflow.com/questions/5419408
复制相似问题