我收到 StyleCop 对我的文件发出的警告。
警告 1 CR0005:文件非常长,有 508 行。请考虑重构以使其少于 500 行。
警告 2 CR0002:方法太长。它有 58 行长。考虑重构以使其不超过 50 行。
你们是如何更改代码的?这方面的最佳做法是什么?我不知道把我的代码分成更小的代码——害怕让我的代码变得如此复杂。
所以,请帮助^_^!
南。
我收到 StyleCop 对我的文件发出的警告。
警告 1 CR0005:文件非常长,有 508 行。请考虑重构以使其少于 500 行。
警告 2 CR0002:方法太长。它有 58 行长。考虑重构以使其不超过 50 行。
你们是如何更改代码的?这方面的最佳做法是什么?我不知道把我的代码分成更小的代码——害怕让我的代码变得如此复杂。
所以,请帮助^_^!
南。
您应该阅读 Martin 的 Fowler 书“重构:改进现有代码的设计”和 Danijel Arsenovski 的“C# 和 ASP.NET 中的专业重构”。
班级尝试做很多事情吗?它可以分成多个更小的类,每个类都有更具体和更好定义的目的吗?如果是这样,请将其重构为多个类。
是否可以将方法中的一些代码提取到它自己的方法中以使其更易于理解?如果是这样,请这样做。
上述任何一项更改都会使代码更难理解吗?如果是这样,请忽略 StyleCop。请记住,它只是帮助您的代码更易于阅读的通用工具。几乎可以肯定,至少会有一些对您的情况没有意义的建议。
我会压制警告并担心更重要的事情。
我不确定对文件或方法的大小施加如此任意的限制是否有意义。与其说是数字 50 和 500 本身,不如说是有这样一个数字。它从何而来?为什么 50 行被认为是可读的,而 58 行不是?
如此处所示,专注于这些指标可能会适得其反,并将注意力从实际问题上转移开。也许可以更好地花费时间,更好地服务于良好的设计原则,例如确保适当的关注点分离。根据逻辑上应该包含的内容来拆分您的行和方法,而不是分解它们以满足任意大小标准。
好吧,“提取方法”重构对于缩短方法非常有用(通过将它们放入另一种方法中),我相信这是在 2010 年。(突出显示一些代码,右键单击它应该在某处的菜单中)。
分解文件的最佳方法(假设您只有一个类)是将一些功能提取到另一个类中。谷歌“提取类”,你会找到一些关于它的信息。
就像@Justin 说的那样,起初这样做可能看起来更复杂,因为要处理的文件/方法更多,但是因为每个文件/方法都更小,所以任何时候处理的东西都更少。一些(受人尊敬的)人真的走得很远。这需要一点时间来适应,但你的代码(可以说)会更好。
其他人提到了重构,并且还专注于将类分解为只做 1x 的责任(OOP 的 SOLID 规则的一部分)。然而; 如果您的课程仍然是 500x 行,并且执行一项职责,那么您的位置还不算太糟糕。
如果您的代码文件包含 XML 文档和空格,那么 500x 行只是稍微大一点(这取决于它的作用)。我的许多“简单”类一旦完成,就会有大约 350 行。越小越好,但简洁确实是您想要的。
另一本了解代码外观的好书是Robert C. Martin 的 Clean Code。它为设计经过深思熟虑的类和方法制定了许多好的规则。
可以将类或结构或接口的定义拆分为两个或多个源文件。每个源文件都包含类定义的一部分,并且在编译应用程序时将所有部分组合在一起。例如,这里的“bar”类在 foo1.cs 和 foo2.cs 之间拆分。
foo1.cs
public partial class Bar
{
public void bat()
{
}
}
foo2.cs
public partial class Bar
{
public void baz()
{
}
}
有关这方面的更多信息,请参阅部分类定义(C# 编程指南)
这不是 StyleCop 附带的规则。它是贵公司内部开发的东西吗?我很好奇这条规则背后的基本原理。500 行似乎是一个非常严格的限制。