来源:好完美 浏览次数: 发布时间:2022-12-21 13:47:39
工欲善其事,必先利其器。
多年前,微软官网就发布了它。 许多年过去了,时代变了。 很多事情都变了,列表似乎已经过时了。 而且,本文只是对十大工具的独立介绍,显得有点罗列。 每个工具都同样重要吗,工具之间有什么联系吗? 等等,这还不清楚。
在这里,我想从另一个角落悬崖上总结出一个更新更实用的武器库。 更新是因为有很多工具/框架库是近几年才出来的,比较实用完美世界武器怎么改代码大全,因为我自己的项目完全依赖使用。
视觉工作室
这看似不言而喻,但从严谨的角度来说,也列在这里。 其实现在有一个开源的IDE开发环境也发展的不错,叫做. 没仔细看,不敢妄下判断。 而且因为要用Resharper,后面会讲到,也逼着我只能用VS了。
Resharper无论是从名字还是实际功能来看,绝对是一款利器。 一旦熟悉,就离不开它。 去年换了工作,很大程度上是因为原单位不让我用Resharper。 在几次采访中,我总是重复我的要求。 直到最新的6.1版本,Resharper已经是一个多面手了。 早期只是一个重构工具,现在是反编译器(原来的Reflector.Net已经不用了),代码审查工具(代码规范审查),或者代码生成器(Code Smith也没有用更多),最后,它有条理地使用键盘快捷键对于无鼠标操作极为有利。 总之,Resharper可以大大提高编码效率,利器更重要。
这个利器其实分为两部分,一个是Fluent,一个是nHibernate(这不是废话)。 nHibernate知道的人很多,它是一个ORM工具,加上Fluent之后,知之甚少。 在功能上,Fluent只是在原有ORM工具的基础上加了一层封装,以Fluent Interface的形式提供了使用nHibernate的API。 但是不要小看这层封装。 Fluent nHibernate在用户体验和效率提升方面有着极好的效果。 就我个人的体验而言,是在Fluent nHibernate之后,我才真正用上它,爱上了nHibernate本身。 创建映射 XML 文化,这个让大多数人头疼的问题,被所有的 C# 文件所取代,甚至可以完全省略。 可以说这两部分是一个完美的结合,后者提供了强大的基础功能,前者提供了完善的用户界面。 这两个要素不是一个成功的软件所必需的吗? 什么是ORM完美世界武器怎么改代码大全,没办法,你去谷歌搜索一下就知道了。 我只是想强调的是,不要仅仅把它看成一个函数库,它是建筑设计的利器。 从架构上看,它将业务领域与数据层隔离开来,使得独立设计数据模型和业务领域模型成为可能。 这件事的影响是非常深远的。
+ + +
啊,不。 最后一把武器,一次性介绍两把,这次白送四把。 这也体现了我写这篇文章的指导思想,即从开发和使用的角度而不是从工具提供者的角度来描述。 这四款组合在一起简直太完美了! nUnit是另一个著名的测试框架,它提供了测试的基本功能和概念。 从BDD的角度来看,MSpec对nUnit进行了封装,也可以说是重构了语法,让测试具有可读性,提供了良好的测试组织结构,测试完成后可以直接生成完美的测试结果文档. Rhino Mock 也是老客户了,但是老中有新,新版本也加入了一些很了不起的新特性,比如所谓的 AAA 语法(Arrange, Action, Assert 和 MSpec 的 Establish 是一样的) , Because, It 关键字非常合适)。 在我看来,亮点仍然是可读性的提高。 最后,AutoMock 的出现让事情变得简单了。 连创建 Mock 对象的语句都省略了。 只要你在被测类的构造函数中声明依赖类的接口,AutoMock就会自动为你创建一个Mock。 顾名思义,该对象是一个自动 Mock。 当然,还有高级的应用,这里就不多说了。
什么,数据库也算? 是的,但是这里的sqlite并不是我的产品数据库,而是它的用于集成测试的内存数据库,可以说是集成测试的利器。 I\O读写一直是性能的瓶颈,敏捷编程对测试的高度依赖也是对测试性能的高要求。 即使是高覆盖率的单元测试仍然不够,我们仍然希望在持续构建(CI)中每次都自动运行集成测试。 而如果有真正独立干净的集成/用例测试,最好完全重建数据库,为每个测试用例重新设置测试数据。 这样的要求,只有内存数据才能获得好的性能。 使用sqlite认证的内存库后,无论是set还是server都可以快速完成集成测试。 本地开发人员还可以快速运行集成测试。 这样,在我们的敏捷过程中,不仅单元测试要通过,就连集成测试也要通过。 它的名字是用户故事。
但是这个工具有个小问题,因为sqlite是基于C开发的,针对32位和64位系统发布了两套控件,所以必须根据自己的平台引用不同的Dll文件。 而且VS工程编译设置也必须明确标明是x86还是x64,不能设置为Any cpu。 就是因为这个问题,头疼了几天,终于找到了这个解决办法。 在使用中,由于之前使用的是Fluent nHibernate,所以除了配置之外,代码不需要做任何改动。 如果你想改变它,它不是真正的集成测试,是吗?
如果您可以在一天内编写代码,您就不需要源代码控制,对吗? 作为源代码管理的新秀,Git 的发展速度非常快。 我看好它是因为它优秀的底层设计和优秀的商业模式。 如果你想了解 DDD 是什么,Git 是一个很好的例子。 一般的源代码管理是基于单个文件的版本控制,而 Git 最初的设计目的是基于每次提交(代码文件树)来跟踪版本。 你可能不同意我的看法,因为很多代码控件仍然提供项目级别的分支或版本,但这只是一种错觉。 VSS、SVN、TFS底层首先是文件版本控制,在此基础上提供项目版本的功能。 另一方面,GIF 正好相反。 这有关系吗? 是的,差别很大。 引用DDD的思想,既然从用户的角度来看,代码控制版本是基于文件树的,为什么你的业务模型不是呢? 所以,我把raking VSS、SVN等的实现当成打补丁/Repair的方法,总有一天,修来修去,到头来,再也修不下去了。 还有一点,Git是一个分布式的代码管理库。
嘘(擦汗),终于到最后一篇了,写得太长了,作者累了,读者也无聊了。 从CI工具的鼻祖CCNet升级到TeamCity之后,感觉真的不一样,鸟枪换炮。 为什么需要CI,我这篇短短的文章好像也讨论不清楚。
TC的好处,第一:它是商业软件,而且是免费的。 一般这两个点很难同时出现。 当然有一个限制,如果你只使用一个编译代理服务,这对我来说就足够了。 第二:很好地支持了很多第三方工具。 例如,nUnit、MSpec、Git 等。最棒的是它是一个 CI 服务器!
嗯,这就是我目前的利器,足以让开发过程顺利进行,让你的新想法成真。 敏捷在哪里,就在这些工具中。 是否对你有用,欢迎评论反馈。 还在看其他的一些工具,希望在实际使用受益后能给这个推荐列表增加更多的成员。
明月蓝天,原野如洗,走在卓越的路上