Pq déclarer des variables inchangeables ?

Résolu/Fermé
moussecp Messages postés 58 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 10 mai 2012 - 4 août 2011 à 12:22
 aceryo - 6 août 2011 à 14:57
Bonjour,

Voici plusieurs années que je suis familier avec différents langages de programmation (Java, C++, Matlab, ...) et je me suis souvent demandé quel était l'intérêt de déclarer des variables en précisant qu'il était impossible de les modifier par après. D'en faire des constantes quoi...

Par exemple, j'ai sous mes yeux un livre de référence en Java qui me donne un exemple :
public static void main (String args[]){
final int ARRAY_LENGTH = 10;
int array[] = new int[ARRAY_LENGTH];

...


Donc dans ce cas-ci on précise que ARRAY_LENGTH est final, empêchant ainsi toute modification ultérieur de sa valeur. Certes je comprends parfaitement qu'il est parfois crucial pour le bon fonctionnement du programme que des variables restent inchangées. Cependant je maintiens que si le programmeur sait ce qu'il fait, il ne va pas délibérément se mettre des bâtons dans les roues.

De même, en considérant que l'on exporte notre code à d'autres, ceux-ci sont quand même supposé savoir un minimum ce que ce code fait avant d'y ajouter des modifs et il serait parfaitement débile de vouloir modifier une variable portant un nom de constante tel que "ARRAY_LENGTH" sans réfléchir.

Excusez-moi si ma question est bête. Je sais très bien aussi qu'elle n'a pas beaucoup d'importance. Cependant disons que ça me turlupine. Je comprends que ce soit important de pouvoir définir des constantes mais ce que je ne comprends pas, c'est pourquoi les programmeurs s'obstinent à le faire de manière systématique.

Merci pour vos réponses à ce léger coup de gueule. :)



4 réponses

DasSium95 Messages postés 673 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 13 avril 2016 134
4 août 2011 à 12:24
Comme tu l'as dit toi même ton code est amené à être utilisé par d'autres. Il est donc essentiel de bloquer la valeur de certaines variable pour garantir le bon fonctionnement de ton programme
1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
4 août 2011 à 12:36
Salut.
En effet, dans le meilleur des mondes le plus parfait avec les meilleurs gens, ça n'aurait pas d'intérêt. Maintenant dans notre monde, il ne faut pas espérer compter sur l'intelligence des gens (sinon pas besoin de préciser de ne pas mettre de chat dans le micro onde) et surtout une erreur est vite arrivé. Une variable constante c'est un garde supplémentaire, ça blinde un peu. Et certaines constantes n'ont pas un nom très explicite et ça pourrait être tentant de la modifier selon ce qu'on veut faire.
Les constantes sont avant tout là pour palier aux erreur humaines.
Un exemple, en C++, si tu passes une variable qui n'a pas à être modifier en argument d'une fonction qui la modifie (on peut tout imaginer : connerie, changement de la fonction sans que l'utilisateur soit au courant...) tu es bien ennuyé pour trouver le bug.
Après, il y a peut etre des raisons plus profondes.
1
Salut,

Alors imagine toi un jeu ou le personnage à 100 vie, il te faudrait bien une constantes pour avoir comme valeur 100, et si tu veux que ce personnage ne peux pas avoir plus de 100 vie, une constante est une bonne solution. =]
1
Utilisateur anonyme
4 août 2011 à 19:34
Saut,

Citation de moussecp "...et il serait parfaitement débile de vouloir modifier une variable portant un nom de constante tel que "ARRAY_LENGTH" sans réfléchir."

Une variable ne doit pas avoir pour nom ARRAY_LENGTH (qui correspond au nom d'une donnée "final"), à la rigueur array_length ou arrayLength...

Mais combien de programmeurs respectent les conventions de nommage ?

Maintenant pourquoi utiliser ces constantes ? Il y a des tas de raisons... ou aucune, c'est selon...

Dan
-1