Bonjour,
Tout est discutable, et les règles citées ici le sont autant que le reste. Ce ne sont pas forcément les premières à mettre en avant.
1. Récursivité
À condition de ne pas considérer la programmation fonctionnelle, c'est vrai. Mais il ne faut pas oublier que la programmation fonctionnelle est vérifiable, avec récursivité.
2. Boucles avec une limite supérieure fixe
Soit je suis bête (ce qui n'est pas exclu), soit je ne comprends pas comment faire avec une liste chaînée (ce n'est qu'un exemple). Si j'ai une liste chaînée, c'est justement que je ne connais pas le nombre d'éléments, donc à quoi est-ce que ça sert d'ajouter un compteur arbitraire au nombre d'éléments de ma liste ?
Si je connais le nombre d'éléments max, je peux utiliser d'autres structures que la liste chaînée.
Si je ne connais pas le nombre d'éléments max, la valeur arbitraire sera probablement débile, et donc absolument inutile. Et elle va à l'encontre de la règle 1 qui est, en gros, de faire du code simple et lisible.
3. pas d'allocation dynamique de mémoire après initialisation
Ben si, mais il faut savoir ce que l'on fait.
Si je ne peux pas utiliser l'allocation dynamique après l'init, à quoi ça sert d'utiliser une allocation dynamique ???
Le principe de l'allocation dynamique, c'est que je ne connais pas à l'avance la taille dont j'ai besoin. Donc je l'alloue au moment où j'en ai besoin, et je la réalloue lorsque nécessaire (si si, c'est l'intérêt principal). Si je connais la taille à la compilation, ou à l'initialisation, j'utilise une allocation statique.
Ah, et bien sûr j'utilise des outils de profiling pour m'assurer que je n'ai pas de fuites ni d'écrasements ni autres bugs.
Et enfin, utiliser un tableau n'empêche aucunement d'accéder à une case non allouée (qui n'a jamais déclaré un tableau de N éléments (accessibles de tab[0] à tab[N-1]) puis a accédé à tab[N] ?)
4. Fonctions trop longues
Non. Du moins pas dans un gros programme. Ceux sur lesquels je travaille ont environ 1 million de lignes de code (c'est peut-être trop, mais c'est un autre débat). Si je respecte les 60 lignes par fonctions, ça me fait un peu plus de 16 600 fonctions, ce qui est beaucoup trop.
Je veux bien limiter la taille des fonctions, mais aussi leur nombre, ça ne sert à rien de couper une fonction juste pour qu'elle "ne soit pas trop longue" (déjà vu).
Ce qui est vrai, c'est qu'une fonction devrait être minimale, et ne concerner que ce qu'elle doit faire, et ne pas chercher à faire le travail de la fonction d'en face.
6 |
0 |