c'est légèrement à côté compte tenu du but du topic, mais je suis obligé de nuancer vos propos.
Académiquement, on enseigne les constantes.
Mais en vrai, on s'en contrefout si la valeur n'est pas répétée partout.
ex:
- Code: Tout sélectionner
function getMonth(date){
var d = date.getDayIndex()//returns 0-365
var months = [31,28,31,30,31,...]the number of days per month
//this function must return the correct month index
}
ci dessus, il ne fait absolument AUCUN intérêt de remplacer respectivement les constantes par NB_DAYS_JANUARY, NB_DAYS,... ce qui serait inutilement verbeux. Un lecteur normalement constitué devrait comprendre ...
Par ailleurs, concernant les directives de preprocesseur, l'argument est mal choisi concernant le changement de paramètres, car il faudrait recompiler le programme, ce qui est stupide! Cela implique d'avoir un fichier, ou de gérer des arguments, ce qui dans les deux cas implique un développement supplémentaire qui n'est pas forcément le but escompté.
D'une manière générale, je vais dans le sens de valentin03, une valeur numérique a
parfois le mérite pour l'implémenteur de ne pas avoir à se soucier outremesure du -contrat- de fonction (quid du boulet qui remplace la constante par une valeur inappropriée).
Bref, je suis ok pour les constantes, ou littéraux pour désigner des valeurs, mais il ne faut pas TOUJOURS jurer par ca car ça ajoute de l'entropie (valeurs modifiées, validité de fonctions, test unitaires, commentaires, contrat de fonction inutilement complexe, etc).
tout dépend de pourquoi on fait le programme, pour qui (des idiots, des gens avec un minimum de bagage,...), quelle est sa durée de vie, etc