As all developers are aware, developing software can be hard. And I’m not even talking about the actual process of sitting down and coding. There are thousands of details that have to be accounted for in order for a software application to work. It is a significant challenge to conform every requirement with the ‘big picture’. The UI should look great and be intuitive. The workflow and logic should be accurate and guide you down the path of success.
Writing great software requires a combination of logic and creativity. Steve Jobs said, “it’s the programmer’s job to adapt the computer to the user, not the user’s job to adapt to the computer.” I agree. And, having been at this task for some time now, I’ve found a few tools that have proven quite helpful. I’ll share:
- FxCop – FxCop checks your code based on a collection of rules. There are rules for performance, best practices, globalization, and more. As a human, if you do the same thing 100 times you are probably going to do it differently at some point. You can write your own rules that ensure consistency in the way you write code. It can also help ensure that the entire development team adheres to a set of standards. Link: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6544
- StyleCop – This tool is used internally by Microsoft. It is used to ensure that their public APIs are consistent and effective. It helps with naming conventions, class structure, etc. Link: http://stylecop.codeplex.com/
- GhostDoc – Writing documentation can be an unpleasant chore. GhostDoc automates documentation authoring based on method names and parameters. As long as you follow best practices, GhostDoc does a really good job of inferring what the documentation should be. It gets you 80% of the way done and the remaining 20% can be authored by hand. Without a tool like GhostDoc, frequently documentation goes undone. There are free and paid editions. The paid editions are not very expensive. Link: http://submain.com/products/ghostdoc.aspx
Using these tools can help you deliver great software. What are your favorite tools that help you in your work?
These tools are directed at the .net framework. What are your favorite tools for Java, Ruby, LAMP, and others?