Coding standards and Best practices tools

With a few months of programming experience, you can write 'working applications'. But doing it the most efficient way requires more work than just making it work! Writing 'Efficient Code' requires skills and practice makes perfect.

But there are few tools which can help you achieve it to an extent.

  1. Resharper
    ReSharper is a refactoring and productivity extension by JetBrains that extends native functionality of Microsoft Visual Studio 2003, 2005, 2008 and 2010.

    ReSharper executes solution-wide static code analysis (error detection on-the-fly, without the need to compile), provides additional features for error correction, code completion, navigation, search, syntax highlighting, formatting, code generation and optimization, carries out 40 automated refactorings, and streamlines unit testing using NUnit and MSTest, among other features.

    More Info: http://www.jetbrains.com/resharper/

  2. Gendarme
    Gendarme is a static code analysis tool that runs tests on our code, checking for avoidable bugs etc. It would also suggest how to optimise the codes. Gendarme is an extensible rule based tool to find problems in .Net applications and libraries. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .Net) and looks for common problems with the code, problems that compiler do not typicall check or have not historically checked.

    More Info: http://www.mono-project.com/Gendarme

  3. StyleCop
    StyleCop analyzes C# source code to enforce a set of style and consistency rules. It can be run from inside of Visual Studio or integrated into an MSBuild project.

    More Info: http://stylecop.codeplex.com

  4. Pair Programming Review
    If time permits it is good to have some review of the code frequently. The easiest possible way would be pairing the programmers and reviewing each other code.


Useful developer and programming tools

Microsoft developer tools are the best for programming. They make developer job very easy and convinient. But they do not offer everything you need to accomplish your task in the best possible way.

Here some very useful developer (free) tools which can make the programming more convinient.

  1. SoupUI
    Simulating and testing Soap web services. soapUI is a tool for functional testing, mainly of Web Services like SOAP based Web Services and REST Web Services, but also HTTP based services and databases.

    More Info: http://www.soapui.org/

  2. Reflector
    Explore and analyze compiled .NET assemblies and viewing them in C#, Visual Basic and IL. Converts compiles assembly code into C#, Visual Basic programming language code.

    More Info: http://www.red-gate.com/products/reflector/

  3. BareTail
    Very useful tool if you are viewing/monitoring log files. Configurable text highlighting and real time file viewing.

    More Info: http://www.baremetalsoft.com/baretail/index.php

  4. IETester
    Using this application you can test websites for IE5.5, IE6, IE7, IE8 browsers. Allows you to have the rendering and JavaScript engines of several versions of IE in the same application.

    More Info: http://www.my-debugbar.com/ietester/index_all.php

  5. SQL Data Compare
    SQL Data Compare is a very useful tool to compare and synchronise databases. This would compare two databases, individual tables and rows in each table. This would give good knowledge if you want to understand what happened to data before and after a complex SQL transaction.

    More Info: http://www.red-gate.com/products/SQL_Data_Compare/index.htm

  6. XML Spy
    XMLSpy is an advanced XML editor for modeling, editing, transforming, and debugging XML-related technologies. The XML editor delivers the power you need to create the most advanced XML and Web applications.

    More Info: http://www.altova.com/xml-editor/

  7. SVNMonitor
    Another great subversion client. Acts as a front-end to Tortoise SVN for all your projects.

    More Info: http://www.svnmonitor.com

  8. NDoc
    NDoc generates class library documentation from .NET assemblies and the XML documentation files generated by the C# compiler. NDoc uses pluggable documenters to generate documentation in several different formats, including the MSDN-style HTML Help format (.chm), the Visual Studio .NET Help format (HTML Help 2), and MSDN-online style web pages.

    More Info: http://ndoc.sourceforge.net/

  9. GhostDoc
    Another documentation generation tool. GhostDoc is an awesome tool that takes some of the drudgery out of documentation. It's an addin for VS and it's free; right-click on a method or property and it will parse the name and figure out the proper summary for you. It's pretty smart when it comes to inheritance documentation and the override methods.

    More Info: http://submain.com/products/ghostdoc.aspx

  10. LINQPad
    LINQPad lets you interactively query databases in a modern query language: LINQ. LINQPad is also a great way to learn LINQ. LINQPad is more than just a LINQ tool: it's an ergonomic C#/VB scratchpad that instantly executes any C#/VB expression, statement block or program with rich output formatting.

    More Info: http://www.linqpad.net/

  11. NAAK – the .NET Accessibility Analysis Kit
    NAAK is a .Net control which can be placed bottom of each page in your web application to notify you of any known accessibility issues. This helps ensure compliance in two ways. First, it clearly exposes accessibility issues to each developer, QA analyst, and application reviewer. Second, and more importantly, because it is returned as HTML with each page, it can be checked using any web user interface testing framework.

    More Info: http://code.google.com/p/naak/

  12. Blueprint CSS Framework
    Blueprint is a CSS framework, which aims to cut down on your development time and eliminates the discrepancies across browsers. It gives you a solid foundation to build your project on top of, with an easy-to-use grid, sensible typography, useful plugins.

    More Info: http://www.blueprintcss.org/

  13. Firebug
    Firebug is a Mozilla Firefox extension that gives you plenty of web development tools and features. Firebug has a built-in JavaScript debugger that lets you step through your script as well as allowing you to perform benchmarks to see why your script is slow/sluggish. You can quickly hunt down CSS, HTML, JavaScript, and XML errors through Firebug, and it even allows you to filter and search for specific errors. Another handy feature is the DOM inspector pane which outlines a web page structure.

    More Info: http://getfirebug.com/

  14. Web Developer
    Web Developer extension is a very handy and time-saving extension for Firefox. You can rapidly validate your XHTML, find JavaScript/CSS errors, visualize a web page’s structure, quickly fill out web forms for testing purposes, clear your cache with a shortcut key, change XHTML on-the-fly, inspect HTTP headers information, and much more.

    More Info: http://chrispederick.com/work/web-developer/

  15. Internet Explorer Developer Toolbar
    IE Developer Toolbar is the IE add-on that provides the such as the DOM inspector option or the CSS Information option. It also supports JavaScript debugging.

    More Info: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=95e06cbe-4940-4218-b75d-b8856fced535


General software utility tools

Here some general utility tools that I use in my daily life. These are not specific to any programming, but generally I find these are very convinient.

  1. Launchy
    Launchy is the most efficient way to open files, folders, websites, and programs on your computer. Nobody likes to hunt through the start menu to find an application, just to find that the application is hidden under some obscure folder named after a company you have never heard of! Instead, Launchy is a smart search program which tries to guess which program or file you are looking for and will launch it when you hit the enter key.

    More Info: http://www.launchy.net/

  2. IrfanView
    IrfanView is a very fast, small, compact and innovative graphic viewer for Windows with excellent features. It is easy to use for beginners and powerful for professionals.

    More Info: http://www.irfanview.com/

  3. File Renamer
    File Renamer is a bulk renaming tool to rename your thousands of files in few clicks with 40+ possible renaming rules. Powerful yet simple and easy to use interface with built in preview to see new names before rename.

    More Info: http://www.filerenamer.net/

  4. PowerGREP
    The best way to search file systems for content without enduring significant ageing. Faster search results on windows file system.

    More Info: http://www.powergrep.com/

  5. ColorPic
    Simple and easy to use ColorPic tool is for picking color from the desktop or any application.

    More Info: http://www.iconico.com/colorpic/

  6. Beyond Compare
    Beyond Compare is a great tool for comparing files and folders on your file system. You can visualize changes in your files and carefully reconcile them. You can merge or synchronize files and generate reports.

    More Info: http://www.scootersoftware.com/

  7. Notepad++
    Great notepad replacement application. Notepad++ is a free source code editor and supports several languages.

    More Info: http://notepad-plus-plus.org/

  8. Textpad
    Another excellent notepad replacement. TextPad is a powerful, general purpose Easy to use editor for plain text files and supports several languages.

    More Info: http://www.textpad.com/

  9. Greenshot
    Greenshot is a light-weight screenshot software tool for Windows. It is easy to understand and configurable. Create complete or partial screenshots quickly. Easily annotate, highlight or obfuscate parts of the screenshot. Send the screenshot to a file, the clipboard, a printer or as e-mail attachment.

    More Info: http://getgreenshot.org/

  10. FileZilla
    FileZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.

    More Info: http://filezilla-project.org/index.php


Test driven development tools and technologies

Test Driven Development is the practice of writing unit tests for your code before you actually write that code. By writing a test and then writing the code to make that test pass you have a much better idea of what the goal and purpose of your code is. Test Driven Development not only increases the quality of your code, but also allows you to refactor the internals of a method or class and quickly and easily test the outside interface of the object.

Some of the low cost tools and technologies for test driven development.

  1. TestDriven.Net
    TestDriven.Net is a unit testing add-in for Visual Studio. It supports multiple unit testing frameworks including NUnit, MbUnit, xUnit and MSTest.

    More Info: http://testdriven.net/

  2. NUnit
    NUnit is a open source unit-testing framework for all .Net languages. Using this the developer can write unit and integration tests and run using unit testing tool. It is written entirely in C# and has been completely redesigned to take advantage of many .NET language features.

    More Info: http://www.nunit.org/

  3. Typemock
    Typemock is a Mock Object Framework for Microsoft.Net. A Mock Object Framework enables you to simulate objects when testing your code. For example, you can use Typemock to simulate instantiating objects, calling object methods, and reading and setting object properties.

    When writing code using TDD, you constantly write and run unit tests. You run these tests over and over and over again. This means that a unit test must be fast. If your unit tests are not fast, then you’ll never get any work done because you’ll be sitting around all day waiting for your unit tests to complete.

    Using typemock isolator you can run your code in isolation and faster.

    More Info: http://www.typemock

  4. Selenium RC
    Selenium Remote Control (RC) is a test tool that allows you to write automated web application UI tests in any programming language against any HTTP website using any mainstream JavaScript-enabled browser.

    Using these test you can test your web application from a functional perspective, meaning that their aim is to cover the set of functionality available to the user, as opposed to testing internal implementation.

    More Info: http://seleniumhq.org/projects/remote-control/