L'indentation est, selon moi, une des parties du code bien souvent négligée. Elle est pourtant bien essentielle. Et ce dans n'importe quel langage.
Et pourtant, c'est une chose que peu de développeurs font, indenter et organiser correctement son code.

La preuve par l'exemple

On va prendre une fonction en Javascript très basique, qui n'a pas beaucoup de sens si ce n'est de renvoyer une chaine avec des paramètres qu'on lui donne.

<input type="text" value="hello" id="element--active" />  
<div id="element2--active" data-id="20"> mon ID </div>  
function realiseMonAction(nombre, chaine){  
var elementQuiContientUneDonnee = $("#element--active").val(); var autreElementQuiContientUneDonnee = $("#element2--active").data('id');  
    var myText = null;
    if(nombre === "0")
        nombre = "20";
    if ( chaine === "undefined")
        chaine = "hello";
    alert(nombre);
        element1 = elementQuiContientUneDonnee.toString(); element2 = autreElementQuiContientUneDonnee.toString();
        myText = nombre * element1;
    myText += " est un nombre.";
    myText += element2 + " est une chaine";
}
alert(realiseMonAction("12", "coucou"));  

Ce code, actuellement, me renvoie undefined. Or, j'aimerais qu'il me renvoie quelque chose. Qu'il fasse son traitement correctement quoi !

Ma fonction est volontairement simple. On arrive à trouver les erreurs en quelques seconde sans trop de difficulté.
Cependant, avec une indentation légèrement différente, on gagne beaucoup:

  • en lisibilité
  • en efficacité
  • et donc en temps
  • le code est plus facilement compréhensible.
  • --le chef de projet nous paiera une bière car il est débuggé plus rapidement-- (bon, peut-être pas jusque là, quoi que ...).
  • notre code sera plus facilement débuggable autant dans une console que lors d'un rapport Sonarqube ou JSHint.
  • On peut prendre de bonnes habitudes pour les langages (Python) ou pseudos-langages (Markdown) qui nécessitent une indentation correcte.

Et bien indenté ?

Voici ce que cela donne :

function realiseMonAction(nombre, chaine){  
    var elementQuiContientUneDonnee = $("#element--active").val(),
        autreElementQuiContientUneDonnee = $("#element2--active").data('id'),
        myText = null;
    if(nombre === "0"){
        nombre = "20";
    }else{
        nombre = nombre * 2;
    }
    if ( chaine === "undefined") {
        chaine = "hello";
    }
    element1 = elementQuiContientUneDonnee.toString();
    element2 = autreElementQuiContientUneDonnee.toString();
    myText = nombre * element2;
    myText += " est un nombre.";
    myText += element1 + " est une chaine";
}
alert(realiseMonAction("12", "coucou"));  

On peut aussi remarquer l'utilisation d'accolades pour les conditions, qu'il n'y a pas de point virgule à la fin d'une condition ou encore on peut factoriser les créations de variables en début de fonction. Pensez même, et surtout, au nombre d'espace que prend vos tabulations, et uniformiser cela.
Si une tabulation prend 4 espaces, faites-en sorte que tous les éditeurs de texte que vous allez utiliser (ou vos collègues) fassent le même nombre de caractères (et utilisent le même encodage, UTF-8 par exemple).

On se red compte tout simplement que l'on a oublié de retourner une variable à la fin de la fonction, alors qu'il y a un alert() du résultat de la fonction.
Ceci dit, avec une bonne coloration syntaxique et un peu d'expérience, on aurait pu s'en rendre compte en moins de 10 secondes.

Et donc ?

function realiseMonAction(nombre, chaine){  
    var elementQuiContientUneDonnee = $("#element--active").val(),
        autreElementQuiContientUneDonnee = $("#element2--active").data('id'),
        myText = null;
    if(nombre === "0"){
        nombre = "20";
    }else{
        nombre = nombre * 2;
    }
    if ( chaine === "undefined") {
        chaine = "hello";
    }
    element1 = elementQuiContientUneDonnee.toString();
    element2 = autreElementQuiContientUneDonnee.toString();
    myText = nombre * element2;
    myText += " est un nombre.";
    myText += element1 + " est une chaine";
    return myText;
}
alert(realiseMonAction("12", "coucou"));  

Il existe beaucoup de façon d'indenter son code correctement. On peut voir différentes méthodes sur cet article Wikipedia.

[Edit] : Quelques articles pour aller plus loin :
http://www.vbforums.com/showthread.php?608301-What-is-indenting-and-why-should-I-do-it
et
http://mrbool.com/importance-of-code-indentation/29079