StyleCop与DependencyProperties

时间:2009-10-01 09:22:45

标签: stylecop

我总是倾向于将所有属于依赖属性的东西(注册,clr属性,更改回调,强制回调等)组合到一个区域中。但这违反了stylecop会员订购规则。这也是生成多个成员的codesnippets的一般问题,因为片段无法在我的文件中的不同位置生成代码。你对此有何看法?你是否取消了stylecop规则,或者你把所有东西放在“正确”的地方?

另外我个人认为stylcop不应该抱怨这个:

/// <summary>
/// RepeatX Dependency Property
/// </summary>
public static readonly DependencyProperty RepeatXProperty =
    DependencyProperty.Register(
        "RepeatX", 
        typeof(int), 
        typeof(GeometryViewbox), 
        new FrameworkPropertyMetadata
            {
                DefaultValue = 1, 
                AffectsRender = true, 
                AffectsParentMeasure = true, 
                PropertyChangedCallback = OnRepeatXChanged, 
                CoerceValueCallback = CoerceRepeatXValue
            });

Stylcop应该为我们做出额外的工作。在上面的例子中,坚持使用stylcecop会降低你的工作效率,而且代码变得不那么可读,因为你不得不将上面的代码放在静态ctor中(而不是字段初始化),以便能够将FrameworkPropertyMetadata转换为临时变量。每个依赖项属性的一个额外临时变量不会使代码更易读/可维护,而且您不能再使用codesnippets。

2 个答案:

答案 0 :(得分:5)

  

在上面的例子中,坚持使用stylcecop会降低你的工作效率   加上代码变得不那么可读了

如果你真的相信那就不要使用它。没有人强迫你使用它,就像没有人强迫你停止使用匈牙利符号,如果你想。如果你是一个单独的开发人员,没有人会看到你的源代码然后格式化它然而让你开心,你是那个必须维护它的人。如果你在一个更大的团队中,那么你应该得到一些编码标准,这样你就可以轻松地阅读彼此的代码 - 但如果你不想这样做,你就不必使用stylecop。

仅仅因为工具可用并不意味着它能够满足您的需求而且您必须使用它。你可以自己思考。

答案 1 :(得分:4)

我们倾向于把所有东西都像Stylecop建议的那样。这样更简单。减少麻烦。如果你在所有情况下遵守规则,你总是知道在哪里寻找东西。此外,您可以使用该下拉菜单直接跳转到成员声明。

FWIW,我们也从不使用地区。事情就这样混乱了。