工欲善其事, its prerequisite.
n Many years ago, Microsoft's official website has issued the 10 tools required under. NET, n years passed, the time shift, a lot of things have changed, the list also seems old. Moreover, this article is only 10 kinds of tools independent introduction, it appears that some of the list of feelings, is not every tool is equally important, tools and tools have a link between? And so forth, the elaboration was not clear.
Here, I would like to re-summarize an updated more realistic arsenal from another corner cliff. Update, because there are a lot of tools/frameworks that came out in recent years, more realistically, because my own projects are totally dependent on use.
Visual Studio
This seems to be self-evident, but from a rigorous point of view, also listed here. In fact, there is also an open source IDE development environment is also good, called SharpDevelop. I did not look carefully, dare not judge. And I'm going to use the resharper that I'm going to talk about, forcing me to use vs.
Resharper---refactoring prerequisites
Whether it is from its name, or the actual function, ReSharper is absolutely known as a sharp weapon, once you have cooked you can no longer leave it. I changed my job last year, a big part of the reason is because the original unit does not let me use ReSharper. A few interviews, I also always repeat my request. Up until the latest version 6.1, ReSharper is already a versatile person. In the early days, it was just a refactoring tool, and now it's an anti-compiler (the original reflector.net is useless), a Code-review tool (code-spec review), or a code-generator (which doesn't work), and finally, it's used for the organization of keyboard shortcuts. Extremely beneficial for mouse-free operation. In a word, resharper can greatly improve the efficiency of coding, sharp weapon is a heavy device.
Fluent nHibernate---Domain-driven ddd Prerequisites
This weapon is actually divided into two parts, one is fluent, the other is nhibernate (this is not nonsense). NHibernate know a lot of people, is an ORM tool, and after the addition of fluent and know very little. Functionally, fluent is just a layer of encapsulation on the original ORM Tool Foundation, with the API of using NHibernate in the form of fluent interface. But don't underestimate this layer of encapsulation, Fluent NHibernate has excellent efficacy from experience and efficiency improvements. In my personal experience, it is after fluent nhibernate, only really use, love on NHibernate itself. The creation of a mapping XML culture that most people have a headache with is replaced by all C # files and can even be omitted altogether. It can be said that these two parts are a perfect combination, the latter provides the powerful foundation function, the former provides the perfect use interface. This is not a successful software must be two elements? What is ORM, no, let the dog search and know. I just want to emphasize that it is not just a function library, it is a powerful tool for architecture design. From an architectural standpoint, it isolates the business domain from the data layer, making it possible to design the data model and the business domain model independently. The impact of this is very far-reaching.
NUnit + machine Specification + Rhino Mock + automocking---unit test prerequisites
Alas, No. On a weapon, I immediately introduced two, this time white send four. This also embodies the guiding ideology of my writing this article, from the point of view of development use and not from the tool provider. These four packages are perfect together! NUnit is also a well-known testing framework that provides the basic functions and concepts of testing. Mspec from the perspective of BDD, encapsulated a bit of nunit, can also be said to reconstruct the syntax, so that the test can be readable, provide a good test organization structure, and then can be tested, directly generate a perfect test results document. Rhino Mock is also a regular, but there are new in the old, the new version also added some commendable new performance, such as the so-called AAA syntax (Arrange, Action, Assert this with mspec establish, Because, it keyword fully fit )。 And from my point of view, the highlight is still the improvement of readability. Finally, the appearance of automock makes things easier, even the statements that create the mock object are omitted, as long as you declare the dependent class interface in the constructor of the class being tested, Automock automatically creates a mock object for you, as if it were the name of the automatic mock. Of course, there are high-level applications, not to be redundant.
SQLite---integration test essentials
What, a database? Yes, but here SQLite is not my product database, but the use of its memory database for integration testing work, can be said to be a tool for integration testing. I\o Reading and writing has historically been a bottleneck in performance, and agile programming is highly dependent on testing and a high requirement for test performance. Even high-coverage unit tests are still not enough, and we still want to be able to run integration tests automatically each time in continuous build (CI). If you want to have a truly independent, clean integration/Use case testing, it is best to completely rebuild the database each test case, reset the test data, such a requirement, only the memory data to get good performance. With the SQLite memory library, not only the set or the server can easily complete the integration test. The developer is local, and the integration test runs out quickly. In this way, our agile processes include not only unit testing, but also integration testing. Its name is called User story.
However, this tool has a small problem, because SQLite was developed based on C, for 32-bit and 64-bit systems, it released two sets of controls, so you must be based on your platform, 3 reference different DLL files. Also, the VS Project compilation setting must explicitly indicate whether it is x86 or x64 and cannot be set to any CPU. For this by the question, I was very headache for a few days, finally found this solution bin case. With the use of fluent nHibernate, in addition to the configuration, there is no need to make any changes to the code. If you want to change it, it's not really an integration test, is it?
Git---Source code management Prerequisites
If you can finish the code in one day, you don't need source control, can you? As a rookie of source code management, Git's development is extremely rapid. I am optimistic about it, is its excellent bottom-level design, excellent business model. If you want to know what is ddd,git is a very good example. General source control is based on a single file versioning, and Git begins with a design that is based on each commit (the code file tree) to trace the version. You might disagree with me, because a lot of code control still provides a project-level branch or version, which is actually just a fake image. At the bottom of the Vss,svn,tfs, the file versioning is the basis for the functionality of the project version. GIF, however, is exactly the opposite. Is this important? Yes, the difference is very big. Referring to the thinking of DDD, that is, from the user's point of view, the code control version is based on the file tree, why is your business model not? So, I put the rake vss,svn such realization way, as a patch/repair method, one day, fill up the stack, as for the end, can not be repaired. And a little bit of Git is a distributed code management repository.
TeamCity---Continue building the essentials
Hush (sweat), finally to the last one, has been written too long and too much, the writer tired, watching people bored. After upgrading from the originator of CI tools to teamcity, it feels ccnet, Niaoqianghuanpao. Why CI, as if not my this essay can be discussed clearly.
TC Benefits, First: is commercial software and free, generally these two points are difficult to appear at the same time. Of course there is a limit, if you only make a compiler agent service, this is enough for me. Second: It does a great job of supporting a lot of three-party tools. such as, NUnit, Mspec,git and so on. The most important thing is that it is a CI server!
Well, this is my weapon right now, and it's enough to make the development process smooth and your new ideas come true. Where agile is, it's in these tools. Whether it is useful for you, welcome reviews, feedback. Still looking at some other tools, hoping to add more members to this recommendation list after actually using the benefits.
(This article is copyright belongs to Qin ' an ©2012-2013 | Reprint please indicate author and source wanghaoblog.com)