Visual Studio 2008推荐的TDD/敏捷/源代码控制插件

4
我正在寻找一组好用的插件来开发软件。目前,我正在一个项目中尝试使用TDD。最近,我对敏捷过程感到很兴奋,并想知道如何进一步整合工具,以帮助我完成项目并学习TDD。此外,我还在考虑与SVN或其他版本源控制存储库集成。我还希望将版本信息包含在构建中,因为我将公开发布版本里程碑以便得到反馈。我的愿望是最终学会创建强大且易于维护的软件,并跳出我长期停留在的牛仔编码世界。
一开始我有一点小心眼,不想安装太多插件,因为我担心如果我迷失了自己,或者没有按照预期使用它们,那么可能会带来更多麻烦。一些我想到的插件是 Style Cop / Fx Cop 用于保持编码标准, Visual SVN 用于 SVN 集成, Testdriven 与 NUnit(可能还有 Moq,但这只是因为我还没有研究 NUnit 的模拟库)。我还没有尝试过像 Resharper 这样的工具,但我正在考虑尝试,因为我听说它很好用。
我专门使用 C# 编写类库,用于 Unity3D 中,这是一个免费的游戏引擎,支持 .NET 2.0。然而,测试本身可以是任何我的安装支持的 .NET 版本。我听说过一些关于自动化测试的内容,可以在提交时让你失败,我很兴奋能尽早接触到它们,因为我相信这将促使我更好地学习 TDD。
如果你知道其他适合我的需求的插件,或者认为我应该选择其中之一,请告诉我。
由于我对插件还不太熟悉,所以如果你能解释何时和为什么使用它们,我会很感激的。我非常期待拥有一个良好的环境来提升我的技能。
谢谢你抽出时间阅读这篇文章,希望你能有所收获。

我希望分享一下关于使用默认设置的Style Cop的想法,以防止新开发人员在盲目决定使用它时发现它更加麻烦而不值得。我认为关键是要了解自己的需求,并确定某个特定功能是否有助于提高生产价值。

4个回答

5

测试驱动.NET

包括个人开发的免费版本。一个简单好用的插件,内存占用不高,学习使用它所需的时间也不长。

对于测试驱动开发来说,IDE内部运行测试是必须的。你会惊讶地发现,不需要为每个测试切换到外部运行器,可以节省很多时间。

我听说过一些自动化测试会导致提交失败

看看构建自动化 - MSBuild或NAnt等等。实质上,除非构建过程成功,否则你不会把代码提交到仓库中。例如,如果你破坏了某些代码,构建过程将失败。如果通过了,你就可以安全地提交你的代码。

对于.NET用户来说,MSBuild(Visual Studio在内部使用它)是一个不错的开始。查看MSDN上的官方网站,并搜索更多有关为什么构建自动化是一个好主意的文章。

其他工具

你的问题涉及到FxCop、StyleCop等工具的使用。与其在外部运行它们,不如将它们链接为构建过程的一部分。这需要一些设置的努力,但使用它们并将它们嵌入到构建过程中所节省的时间是巨大的。顺便说一下,无论何时使用它们,您的代码都会得到改进。

免费的Resharper

Resharper对于个人开发来说价格昂贵。如果您的公司提供它,请务必使用它。我能为个人开发辩解购买它吗?没有机会。相反,可以查看CodeRush Express。它类似于Resharper,并且比Resharper占用更少的内存。我发现它不会经常锁定Visual Studio。此外,它的某些功能非常不错。


顺便提一句,你的代码会得到改善。这正是我希望通过这一切获得的东西。我从小就开始写代码,但可耻地未能深入训练我的编码方式。我一直忙于学习新方法来制作酷炫的东西,没有太关注如何制作这些酷炫的东西,你明白我的意思吧。 - Statement
如果我理解正确的话,我将不得不涉足MSBuild,以在构建过程中集成自动化步骤,例如运行FxCop等?那么我认为第一个逻辑步骤应该是了解MSBuild的工作原理 :) - Statement
FxCop特别好用。我发现它能够检测到你通常不会考虑的问题。我相信其他有经验的开发人员也会同意这一点。一旦它突出某些问题,你会发现以后不会再犯同样的错误 ;) - Finglas
MSBuild/NAnt等工具很容易使用。互联网上有一些不错的教程。让所有工具正常运行并确保构建过程按照您想要的方式执行是耗时的部分。一旦完成(在项目开始时),那就是它了。您只需让它自动运行即可。任何未来的项目都可以重用构建脚本,只需进行一些小的修改即可。 - Finglas
哇,谢谢您提供的这些信息。我想我会评估一些我得到的建议。虽然这可能超出了此问题的范围,但您是否知道任何好的网站或邮件列表,以便了解 TDD 和敏捷过程的最新动态? - Statement
我投资了几本关于敏捷开发(和TDD)的书。至于博客,我无法评论任何一个。一两本好书应该能让你明白。Beck的《通过示例学习TDD》是关于TDD的经典之作。对于敏捷实践,任何在亚马逊上有好评的都可以考虑。 - Finglas

3
你似乎对插件和工具非常着迷,当然,工具可以帮助你很多,但我建议你把注意力放在你想学习的实际内容上,而不是工具和框架上。
你绝对需要的是:
  • SVN(TortoiseSVN就可以了)
  • Testdriven.Net用于运行测试
  • Teamcity或等价物用于进行持续集成
你不需要的是各种插件和框架来改进这些基础知识。专注于TDD和“构建故事”,也许还有发布管理——在学习过程中,你会发现自己需要哪些工具。

一个好的回答,虽然我同意仅依赖插件并不好,但我正在寻找让我想起那些可能性的方法。我最近才开始使用TDD,从我到目前为止所做的事情来看,我很喜欢它。然而,我觉得如果我有一些集成的测试控制,我就不会错过太多东西,因为我想在我的编码IDE中保持编码内容。我忘记提到的主要原因之一是,我想开始像专业软件开发人员一样思考,并且在一个良好的工作环境中也涉足你所期望的东西。 - Statement
我从未使用过Teamcity,但听起来不错。我会去看一下。 - Edgar Hernandez

2
我相信你对这些插件都很感兴趣,它们都很不错。
Resharper非常好用且功能强大,但需要占用大量内存。
像其他一些人所说的那样,TestDriven .NET几乎是必须的。它可以让你在VS IDE中运行测试。如果你的测试用NUnit编写,则它可以正常工作。
最后,我建议使用NCover来跟踪你的测试覆盖率。它有一个社区版本,并且也可以通过TestDriven .NET从IDE中执行。
当然,自动化构建需要nAnt和/或MSBuild。我更推荐使用nAnt。
希望这能帮到你。

TestDriven.NET带有NCover作为附加组件。 - Finglas
得到关于内存使用的小贴士是件好事,尤其对于初学者而言,这可能不是你首先考虑的。我认为,在全新的Windows安装中使用4GB RAM不会造成任何问题,但了解其代价还是很值得的。我一定会去查看NCover。 - Statement
哦,我不知道。因为我通常使用nAnt编译,所以它总是自己下载NCover。 - Edgar Hernandez
是的,我相信4GB的RAM足够了,但我认为这真的取决于项目的大小。我曾经参与过一些项目,仅仅是在Resharper激活的情况下加载项目就需要5到10分钟的时间(在我拥有4GB RAM之前,有时会崩溃),而没有它最多只需要1分钟。 - Edgar Hernandez
这是一个刚进行了一周的新项目,我不指望它会变得异常庞大。作为一个单独的开发者,我必须限制范围,以免自己被淹没和感到压力山大。我认为这是关于独立项目的最好的经验教训之一。 - Statement
我曾认为ReSharper是一种奢侈品,因为毕竟VS已经包含了一些重构工具,但一旦你尝试过它,就很难回头了。 - Mathias

1
你可能想要了解一下NDepend,它可以帮助你分析代码库并保持代码整洁。 (除此之外,我还推荐使用TestDriven.Net和ReSharper)。

这是我从未听说过的新事物。在观看完CodeRush介绍视频后,我得去查一下它。 - Statement
我必须说NDepend看起来真的很复杂。我想我得暂时把它搁置一下,稍后再去看。似乎你必须学会CQL才能使用它,而我现在不认为我已经准备好使用这个产品了。不过还是谢谢提供链接,它看起来很厉害(无论它是做什么的):D - Statement
1
我是通过 Patrick Smacchia 在 CodeBetter.com 上的帖子对 NDepend 产生了兴趣。他展示了它可以为一些项目的代码库提供什么样的洞察力,这可能会让您对它做了解更加深入 :) http://codebetter.com/blogs/patricksmacchia/archive/2009/03/15/analyzing-the-code-base-of-cruisecontrol-net.aspx - Mathias
你在自己的工作项目中经常使用这个工具吗? - Statement

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接