Pourquoi les grands sites utilisent-ils les «mauvaises pratiques»?

Je vois souvent des articles, des publications et des commentaires comme:

  • Les globals sont mauvais en javascript
  • Les étiquettes de script devraient être au bas de la page
  • CSS devrait être dans les fichiers externes et en haut de la page
  • Les scripts doivent être dans des fichiers externes, pas des scripts simples.
  • etc.

J'ai cherché la source HTML de certains grands sites et j'ai remarqué qu'ils disposaient d'un javascript simple et d'un CSS dans le balisage HTML. JavaScript et HTML sont toujours obscures, et ainsi de suite.

Il y a quelques problèmes distincts ici.

  1. Ce que vous voyez lorsque vous «visualisez la source» n'est généralement pas ce qu'ils développent avec. C'est généralement un formulaire compressé / optimisé généré à partir du code "source".
  2. Les réclamations concernant les «meilleures pratiques» sont nécessairement génériques et ne s'appliquent pas à tous les scénarios (surtout si vous êtes un grand site et avez besoin d'une optimisation spécialisée). Ces lignes directrices devraient être considérées individuellement pour chaque projet.
  3. La meilleure pratique, ou même le code propre, ne se traduit pas directement par le retour sur investissement. Il se peut-être agréable d'avoir des schémas de dénomination cohérents, mais vaut-il la peine de développer et d'appliquer le schéma dans 100 des développeurs?
  4. La paresse, l'incompétence ou le vendredi soir.

Tout simplement parce qu'un site est grand ne garantit pas la qualité du code.

Avez-vous déjà vu la source de la page de Google? Est-ce beau? Non. Est-ce que cela fonctionne? Oui!

Quelques raisons possibles:

  1. Certains codes Web ne sont tout simplement pas très grands ou compliqués, et cela n'a vraiment aucune différence quant à la pérennité, qu'il soit conforme aux meilleures pratiques ou non, et ça marche bien comme ça.
  2. Le code est souvent écrit par des programmeurs inexpérimentés, même sur de grands sites populaires, et n'est jamais amélioré car il fonctionne bien comme il l'est.
  3. Les meilleures pratiques changent de temps en temps et on considère comme un gaspillage de passer du temps à refaire votre code juste pour adhérer à la dernière, quand il fonctionne bien comme il l'est.
  4. L'ajout de nouvelles fonctionnalités est considéré comme plus important que le nettoyage d'un ancien code, surtout lorsque, à nouveau, l'ancien code fonctionne comme il se doit.

Vous pouvez sentir un thème récurrent ici. Rarement, les programmeurs estiment qu'il est nécessaire de réparer ce qui n'est pas interrompu.

Edit: Si j'écrivais ceci maintenant, plus de deux ans plus tard, je reformulerais cette dernière phrase pour dire: «Rarement, la direction ressent le besoin de réparer ce qui n'est pas interrompu». La plupart des programmeurs aiment réorganiser les choses peu élégantes, dans la mesure où elles doivent parfois être entravées par la direction afin d'expédier un produit. Je voudrais également citer la notion de dette technique .