我在20多名开发人员的团队中工作,其中包括最近涌入的新成员。我们的编码标准声明永远不应该使用IEnumerable的.First()扩展方法,而是应该始终使用FirstOrDefault()并检查null返回。
我感谢某些成员可能想要讨论有关培训,执行编码标准或单元测试以获取此类违规行为,但原则上是否可能导致尝试使用会产生编译时错误?< / p>
答案 0 :(得分:9)
在编译时帮助方面你能做的最好的事情是:
制作名为“First”的OWN扩展方法,除了抛出异常外什么都不做。
将该方法标记为“OBSOLETE”,以便获得编译时警告。
我认为这是你能做的最好的事情。
(一些评论提到了对命名空间的关注......你只需使用与Microsoft [System.Linq]相同的命名空间,以便编译器同时看到它们。)
答案 1 :(得分:4)
您可以为StyleCop编写自己的规则,并在构建期间强制执行。
我个人认为浪费时间。禁止一种特定方法真的如此重要吗?还有数以百万计的其他情况可以抛出NullReferenceException,并且它是编译时无法找到的东西。
答案 2 :(得分:0)
您可以尝试以下方法:
1)重载您要禁用的功能/方法。 2)向重载的函数/方法添加过时的属性。 3)将编译器设置设置为不构建错误或警告。
这样做会使构建失败并且任何违规代码都会立即引人注目,然后可以识别和训练违法者。