小编Swi*_*wim的帖子

在派生类型上使用类的静态成员?

使用Resharper 4.1,我遇到了这个有趣的警告:"通过派生类型访问类型的静态成员".以下是发生这种情况的代码示例:

class A {
    public static void SomethingStatic() {
       //[do that thing you do...]
    }
}

class B : A {
}

class SampleUsage {
    public static void Usage() {
        B.SomethingStatic(); // <-- Resharper warning occurs here
    }
}
Run Code Online (Sandbox Code Playgroud)

当通过B使用A的静态成员时,有没有人知道有什么问题(如果有的话)?

c# resharper static

73
推荐指数
3
解决办法
1万
查看次数

如何关闭ReSharper的"查找所有用法"

我给ReSharper C#一个旋转.我发现我更喜欢Visual Studio更简单的"查找所有引用"而不是ReSharper更详细的"Find All Usages"."查找所有引用"找到我需要的所有内容95 +%的时间.有没有人知道如何关闭"查找所有用法"并恢复VS的实现?

resharper

25
推荐指数
2
解决办法
5523
查看次数

过早的重构?

我们都听说过早优化,但您如何看待过早的重构?你认为有这样的事吗?这是我得到的.

首先,阅读Martin Fowler的开创性作品"重构"在字面上改变了我在编程方面的生活.

然而,我注意到的一件事是,如果我开始过快地重构一个类或框架,我有时会发现自己编码到一个角落里就可以说了.现在,我怀疑这个问题本身并不是真正的重构,但可能是过早/糟糕的设计决策/假设.

您对此问题有何看法,见解和/或意见?您对此问题有任何建议或共同的反模式吗?

编辑:

从阅读你的答案和更多地反思这个问题,我想我已经认识到,在这种情况下我的问题实际上是"过早设计"的问题,而不一定是"过早的重构".在编码过程的早期,我一直在设计和重构这个方向.我保持一定程度的设计不可知性并专注于对清洁代码进行重构,这让我有点耐心,这使我无法走下这些设计兔子的道路.

refactoring anti-patterns

17
推荐指数
3
解决办法
1656
查看次数

泛型,继承和新的运算符

以下是我发现自己不时使用的内容,我只是希望得到一些关于实践优点的反馈.

让我们说我有一个基类:

abstract class RealBase {
    protected RealBase(object arg) {
        Arg = arg;
    }

    public object Arg { get; private set; }

    public abstract void DoThatThingYouDo();
}
Run Code Online (Sandbox Code Playgroud)

我经常创建一个通用的第二个基类,它处理从基类中的"object"类型到"T"类型的转换,如下所示:

abstract class GenericBase<T> : RealBase {
    protected GenericBase(T arg)
        : base( arg ) {
    }

    new public T Arg { get { return (T) base.Arg; } }
}
Run Code Online (Sandbox Code Playgroud)

这允许我在没有强制转换操作的情况下访问"Arg"作为其显式类型:

class Concrete : GenericBase<string> {
    public Concrete( string arg )
        : base( arg ) {
    }

    public override void DoThatThingYouDo() {
        // NOTE: …
Run Code Online (Sandbox Code Playgroud)

c# oop generics inheritance

2
推荐指数
2
解决办法
613
查看次数