5 conseils pour améliorer la lisibilité de vos codes MATLAB

Voici cinq conseils pour rendre vos codes MATLAB plus lisibles, surtout quand vous débutez avec MATLAB.

Ceci aura pour effet d’en simplifier la lecture et la compréhension pour d’autres développeurs, mais aussi pour vous-même si vous êtes amenés à travailler de nouveau sur un de vos codes au bout de plusieurs mois.

Bien entendu, la lisibilité est un critère parmi d’autres et n’est pas une fin en soit. Malgré tout, vous aurez tout intérêt à suivre ces conseils si vous êtes débutant avec MATLAB ou si vous développez de manière occasionnelle.

N’hésitez pas à apporter des compléments à ces conseils ou à discuter certains points en particulier.

1 – Utilisez l’indentation du code

L’indentation du code aligne verticalement le début de chaque ligne de code selon des règles propres à chaque langage.

En plus d’améliorer la lisibilité du code, l’indentation du code permet souvent de distinguer des erreurs à l’œil nu. Par contre, elle ne sert généralement à rien pour le compilateur ou l’interpréteur (sauf pour certains langages comme Python)

Pour effectuer une indentation correcte du code MATLAB, il faut sélectionner l’ensemble du code dans l’éditeur, puis utiliser le menu « Text > Smart Indent ». On peut aussi utiliser les raccourcis clavier suivants :

  • Windows : Ctrl+A (sélection) puis Ctrl+I (indentation)
  • Mac : ⌘+A (sélection) puis ⌘+I (indentation)
  • Linux (Emacs) : Ctrl+X,H (sélection) puis Ctrl+Alt+/ (indentation)

Exemple de code sans indentation :

M = rand(2,3);
for i = 1:2
for j = 1:3
if M(i,j)<=0.5
M(i,j) = 0;
else
M(i,j) = 1;
end
end
end
M

Le même code avec indentation :

M = rand(2,3);
for i = 1:2
    for j = 1:3
        if M(i,j)<=0.5
            M(i,j) = 0;
        else
            M(i,j) = 1;
        end
    end
end

2 – Mettez des espaces dans les lignes de code

a) Avec l’opérateur « = »

Ajouter un espace avant et après l’opérateur d’affection « = » améliore la lisibilité du code.

Par exemple :

M=rand(2,3);

La commande ci-dessus s’écrit plus lisiblement comme ceci :

M = rand(2,3);

Les termes de droite et de gauche sont directement identifiables.

Des espaces peuvent également être ajoutés autour du signe « = » de la première ligne des boucles for-end :

for i = 1:2

Certains préconisent également d’ajouter des espaces avec les autres opérateurs mathématiques.

Par exemple :

x = a/b+c;

L’équation ci-dessus pourrait aussi s’écrire :

x = a / b + c;

b) Avec les arguments d’une fonction

On peut également utiliser des caractères d’espacement après les virgules au niveau des arguments d’une fonction.

Par exemple :

[i,j,v] = find(M>0.5,1,'first');

L’appel à la fonction find devient :

[i, j, v] = find(M>0.5, 1, 'first');

L’identification de chaque argument est ainsi améliorée.

3 – Évitez d’utiliser des virgules pour séparer les éléments d’un tableau

En mathématiques, nous utilisons la virgule comme séparateur de décimales (les anglo-saxons utilisent le point).

Dans MATLAB, la virgule peut servir à séparer des valeurs numériques sur une même ligne d’un tableau.

Par exemple :

M = [1, 2, 3 ; 4, 5, 6 ; 7, 8, 9];

Les virgules sont ici inutiles pour MATLAB et peuvent, à tort, faire penser à une suite de nombres réels.

Leur suppression enlève donc cette possible confusion sans nuire à la lisibilité du code.

L’exemple devient :

M = [1 2 3 ; 4 5 6 ; 7 8 9];

4 – Ne supprimez pas le « 0 » pour les nombres réels dans l’intervalle ]-1,1[

La syntaxe MATLAB permet de ne pas utiliser le caractère « 0 » dans l’écriture des nombres réels contenus dans l’intervalle ]-1,1[.

Par exemple :

if M(i,j)<=0.5

Dans la condition précédente, la valeur 0.5 pourrait s'écrire .5 et la condition deviendrait :

if M(i,j)<=.5

On voit ici que le rapprochement des termes « <=. » diminue la lisibilité du code.

Ceci est encore plus vrai avec les valeurs négatives :

if M(i,j)<=-.5

5 – Supprimez les parenthèses superflues

a) Opérations mathématiques

Les parenthèses ne doivent être utilisées que pour assurer l’ordre de priorité des opérations.

Par exemple, dans le calcul suivant :

result = ((X(1)*35.1)+(X(5)*20.25)+(X(8)*2.5)-(X(9)*105.78));

Les parenthèses ne servent à rien et peuvent être avantageusement remplacées par des espaces :

result = X(1)*35.1 + X(5)*20.25 + X(8)*2.5 - X(9)*105.78;

b) Opérations logiques

Comme précédemment, selon l’ordre de priorité des opérateurs, certaines parenthèses peuvent être supprimées dans les conditions logiques.

Par exemple :

if (x(1)>0.5)&&((x(2)<1)||(x(3)>0.1))

La condition précédente peut se simplifier comme ceci :

if x(1)>0.5 && (x(2)<1 || x(3)>0.1)

Une réflexion au sujet de « 5 conseils pour améliorer la lisibilité de vos codes MATLAB »

  1. Jean-Charles (tachmou)

    « C’est dans les petits pots qu’on fait la meilleure confiture » qu’ils disaient…

    Moi je rajouterai : « Les conseils les plus simples sont parfois les meilleurs ».

    Bravo pour cet excellent billet, qui reflète clairement la qualité et la clarté de l’esprit de son rédacteur. Je conseille à tous les débutants d’appliquer ces règles d’or à la lettre, dès le début.

    Ce n’est pas du temps perdu : si vous appliquez ces petits conseils (cela ne vous prendra pas beaucoup plus de temps que si vous ne les appliquez pas), par la suite, ce sera autant de temps gagné lorsque vous aurez besoin de vous relire.

    En effet :
    – si vous n’appliquez pas ces conseils, une relecture peut prendre plusieurs dizaines de minutes à déchiffrer
    – si vous appliquez ces conseils (vous perdez au maximum quelques secondes à le faire), une relecture prendra jusqu’à 10 fois moins de temps – sans exagérer ! (c’est l’expérience qui parle)

    Conclusion : simplifiez vous la vie… appliquez ces conseils gratuits !

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>