首页
学习
活动
专区
圈层
工具
发布

C#抗体
EN

Stack Overflow用户
提问于 2009-10-07 05:12:42
回答 38查看 34.5K关注 0票数 55

长话短说:我发现Java反模式是一个不可或缺的资源。初学者和专业人士一样。我还没有为C#找到这样的东西。因此,我将以社区wiki的形式提出这个问题,并邀请大家分享他们对此的知识。由于我是C#新手,我对此非常感兴趣,但不能从一些反模式开始:/

以下是我发现的C#语言的具体答案,而不是其他语言。

我只是复制/粘贴了这些!也可以考虑看一下这些评论。

NullReferenceException

抛出错误的异常:

代码语言:javascript
复制
if (FooLicenceKeyHolder == null)
    throw new NullReferenceException();

属性与公共变量

类中的公共变量(改为使用属性)。

,除非类是一个简单的数据传输对象。

不理解bool是一种真正的类型,而不仅仅是一种惯例

代码语言:javascript
复制
if (myBooleanVariable == true)
{
    ...
}

或者,更好的

代码语言:javascript
复制
if (myBooleanVariable != false)
{
    ...
}

CC++开发人员经常使用这样的构造,其中布尔值的概念只是一种约定(0 == false,任何其他东西都是真的);在C#或其他具有真正布尔值的语言中,这是不必要的(或可取的)。

using()

在适当情况下不使用using

代码语言:javascript
复制
object variable;
variable.close(); //Old code, use IDisposable if available.
variable.Dispose(); //Same as close.  Avoid if possible use the using() { } pattern.
variable = null; //1. in release optimised away.  2. C# is GC so this doesn't do what was intended anyway.
EN

回答 38

Stack Overflow用户

发布于 2009-10-07 05:30:01

错误地重新抛出异常。若要重新抛出异常:

代码语言:javascript
复制
try
{
    // do some stuff here
}
catch (Exception ex)
{
    throw ex;  // INCORRECT
    throw;     // CORRECT
    throw new Exception("There was an error"); // INCORRECT
    throw new Exception("There was an error", ex); // CORRECT
}
票数 62
EN

Stack Overflow用户

发布于 2009-10-07 05:25:41

GC.Collect()来收集垃圾收集器而不是信任它。

票数 40
EN

Stack Overflow用户

发布于 2009-10-07 05:55:42

我看到这一点太多了,无论是在Java还是C#.

代码语言:javascript
复制
if(something == true){
  somethingelse = true;
}

加分,如果它也有

代码语言:javascript
复制
else{
  somethingelse = false;
}
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1529604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档