# Ligne de code

La ligne de code, ou ligne de code source (SLOC en anglais) est une métrique logicielle servant à mesurer la taille d’un programme informatique en dénombrant le nombre de lignes de son code source.
Les lignes de code sont habituellement employées pour quantifier l'effort qui sera exigé pour développer un programme informatique, ainsi que pour estimer la valeur d'un logiciel produit.

## Difficulté de la mesure

La ligne de code est un indicateur. Il est imparfait, et comporte des défauts. Cependant, c'est un élément, parmi d'autres, qui permet d'évaluer le coût d'un programme.
Il y a plusieurs manières de mesurer la taille d'un programme:
* nombre de lignes contenues dans les fichiers source : lignes physiques terminées par un retour chariot.
* nombre de lignes de code contenues dans les fichiers source : lignes physiques - lignes vides - lignes contenant seulement des Commentaires (informatique).
* nombre de lignes de code avec des instructions contenues dans les fichiers source : lignes physiques - lignes vides - lignes contenant seulement des commentaires - lignes contenant seulement des accolades ou parenthèses.
* nombre d'instructions

### Incertitudes liées aux programmeurs

Suivant les programmeurs et leurs habitudes de programmation, le nombre de lignes peut varier.
Exemple :
Donne le même résultat que :
Cette différence en apparence importante (on passe d'une ligne à quatre) dans cet exemple, simple, s'estompe avec des programmes plus importants, de plusieurs milliers de lignes.

### Incertitudes liées au langage de programmation

Le nombre de lignes de code source nécessaires pour mettre en œuvre une opération donnée dépend du langage de programmation dans lequel est écrit le code. Une opération écrite en 30 lignes en langage Smalltalk nécessitera 50 lignes en langage Java, 80 lignes en COBOL, 140 lignes en C et 210 lignes en assembleur.
Suivant le langage utilisé, le nombre de lignes nécessaires peut considérablement différer.
Par exemple entre le C et le COBOL :
| Langage | C | COBOL |
| Code | #include <stdio.h> int main(void) { printf("Hello World"); return 0; } | 000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. HELLOWORLD. 000300 000400* 000500 ENVIRONMENT DIVISION. 000600 CONFIGURATION SECTION. 000700 SOURCE-COMPUTER. RM-COBOL. 000800 OBJECT-COMPUTER. RM-COBOL. 000900 001000 DATA DIVISION. 001100 FILE SECTION. 001200 100000 PROCEDURE DIVISION. 100100 100200 MAIN-LOGIC SECTION. 100300 BEGIN. 100400 DISPLAY " " LINE 1 POSITION 1 ERASE EOS. 100500 DISPLAY "Hello world!" LINE 15 POSITION 10. 100600 STOP RUN. 100700 MAIN-LOGIC-EXIT. 100800 EXIT. |
| Nombre de lignes (sans compter les espaces) | 5 | 17 |

## Mesure alternative

Une autre unité de mesure est l'année-homme, c'est-à-dire le nombre d'années de programmation pour un programmeur unique. Par exemple, et en théorie, un programme de 20 années-hommes pourrait être réalisé en 20 ans par un programmeur unique, ou en un an par une équipe de 20 programmeurs.
Cependant cette notion théorique comporte dans la pratique ses limites comme l’a souligné Frederick Brooks dès 1975 dans son livre Le Mythe du mois-homme. Il y explique que toute tâche n’est pas forcément fractionnable, et que l’ajout de personnel introduit par exemple des délais supplémentaires en formation, et en coordination qui peuvent fortement réduire la productivité.

### Outils

* Testwell CMT++
* Testwell CMTJava