[PHP] Un mauvais développeur PHP en 41 points

Bonjour à tous,

php

Hop, comme Witalk j’ai reçu la petite chaine décrivant un mauvais déveur PHP en 41 points… C’est parfois un peu extrême, mais cela dit l’esprit est bon !

L’utilité d’une telle liste n’est pas de se faire traiter de nuls, mais plutôt de voir les points importants que l’on peu doit améliorer.

Witalk a fermé les commentaires sur son billet, je ne le ferais pas. Vous pouvez donc m’insulter et me traiter de newbie tant que vous voulez :D

La version française :

Vous êtes « mauvais » si:

1. Vous ne commentez pas votre code comme le veut le manuel phpDoc

2. Vous ne voyez pas la nécessité et / ou les avantages d’une bonne programmation IDE comme Zend Studio ou Eclipse PDT

3. Vous n’avez jamais utilisé une certaine forme de contrôle de version comme Subclipse

4. Vous n’adoptez pas les normes de codage et de “nommage”, de conventions générales et de s’en tenir à eux au moins tout au long du projet

5.Vous n’utilisez pas une méthodologie cohérente

6. Vous n’échappez pas et / ou ne validez pas correctement entrée ou de requêtes sql

7. Vous ne planifiez pas votre demande de manière approfondie avant de commencer à coder

8. Vous n’utilisez pas de test axé sur le développement

9. Vous ne programmez pas, ni testez avec des rapports d’erreurs

10. Vous ne voyez pas les avantages d’un “débugger”

11. Vous ne factorisez pas votre code

12. Vous ne conservez pas les différentes couches séparées en utilisant quelque chose comme MVC

13. Vous ne savez pas ce que représentent : KISS, DRY, MVC, POO, REST

14. Vous ne retournez pas le contenu, mais l’écho ou l’imprimé de vos fonctions ou de vos classes

15. Vous n’avez jamais vu l’avantage des tests unitaires ou d’essai en général

16. Les sorties sont toujours du HTML et ne sont ni des données, ni du texte, ni des objets.

17. Code dur messages et les paramètres de configuration

18. Vous n’optimisez pas vos requêtes sql

19. Vous n’utilisez pas __autoload

20. Vous ne permettez pas de gestion des erreurs intelligentes

21. Vous utilisez $ _GET au lieu de $ _POST pour toute action destructrice

22. Vous ne savez pas comment utiliser les expressions régulières

23. Vous n’avez jamais entendu parler de sql injection ou cross-site scripting

24. Vous ne permettez pas la simple configuration, les paramètres peuvent être transmis à un constructeur de la classe, set / get méthodes appelées plus tard, ou constantes définies à un moment de l’exécution.

25. Vous ne comprenez pas les avantages et les limites de la “programmation orientée objets”

26. Détournement POO / tout ce que vous écrivez, quel que soit ce qui est petit est POO

27. Vous pensez que les logiciels réutilisables pour votre code nécessitent d’être POO

28. Vous ne choisissez pas de défaut intelligent

29. Vous n’avez pas un seul fichier de configuration

30. Vous ne voulez pas que le contenu du fichier soit vu, alors vous lui donnez une extension .Inc au lieu de .Php

31. Vous n’utilisez pas de couche d’abstraction de base de données

32. Ne pas tenir compte du DRY (Dont repeat Yourself). Si vous devez copier et coller ou dupliquer quelque chose de votre dessin ou modèle doit être améliorer.

33. Vous ne faites pas de fonction / classe / méthode pour faire une seule chose et ne pas les faire interagir.

34. Vous n’essayez pas de tirer parti des caractéristiques spécifiques comme la POO résumé / interface classes, héritage polymorphisme et l’accès préférentielle.

35. Vous n’optimisez pas votre conception d’application établie avec les schémas de design

36. Vous ne permettez pas à votre utilisateur de définir le répertoire de base si vous avez plusieurs fichiers et / ou répertoires

37. Vous polluez l’espace de “nommage” global, une option serait de préfixer les fonctions dans votre bibliothèque avec une chaine de caractères

38. Vous ne permettez pas de préfixe de table lors de l’utilisation de tables de bases de données

39. Vous utilisez un moteur de template

40. Vous ne jetez pas un coup d’œil à établir des cadres d’inspiration php, la plupart d’entre eux ont avancé des concepts de dev web et de bon code

La version originale anglaise :

  1. don’t comment your code properly with something like phpDoc
  2. don’t see the need and/or benefits of a good programming IDE like Zend Studio or Eclipse PDT
  3. have never used some form of version control like Subclipse
  4. don’t adopt some coding & naming standards and general conventions and stick to to them at least throughout the project
  5. don’t use a consistent methodology
  6. don’t escape and/or validate properly input or sql queries
  7. don’t plan your application thoroughly before starting to code
  8. don’t use test-driven development
  9. don’t program & test with error reporting on
  10. don’t see the benefits of a debugger
  11. don’t refactor your code
  12. don’t keep the different layers seperated using something like MVC
  13. don’t know what these stand for: KISS, DRY, MVC, OOP, REST
  14. don’t return content but echo or print it from your functions or classes
  15. have never seen the advantage of unit tests or testing in general
  16. return HTML, not data, strings, or objects.
  17. hard code messages and configuration parameters
  18. don’t optimize your sql queries
  19. don’t use __autoload
  20. don’t allow intelligent error handling
  21. use $_GET instead of $_POST for any destructive actions
  22. don’t know how to use regular expressions
  23. you’ve never heard of sql injection or cross-site scripting
  24. don’t allow simple configuration, can be parameters passed to a class’s constructor, set/get methods called later, or constants defined at a runtime.
  25. don’t understand the benefits and limitations of Object Oriented Programming
  26. misuse OOP / everything you write , no matter how small is OOP
  27. you think reusable software equals/requires your code to be OOP
  28. don’t choose intelligent defaults
  29. don’t have one single configuration file
  30. don’t want the file contents to be seen, but give it a .inc extension instead of .php
  31. don’t use a database abstraction layer
  32. don’t keep it DRY, Don’t repeat yourself. If you have to copy and paste or duplicate something your design may be off.
  33. don’t make a function/class/method do just one thing and don’t make them interact.
  34. don’t try to take advantage of OOP specific features like abstract/interface classes, inheritage polymorphism & access modifiers.
  35. don’t optimize your application design with established design patterns
  36. don’t allow your user to define a base directory if you have multiple files and/or directories
  37. pollute the global namespace, one option is to prefix the functions in your library with a common string
  38. don’t allow a table prefix when using database tables
  39. use a separate template engine
  40. don’t take a look at established php frameworks for inspiration, most of them have advanced web dev

Je suis évidement un mauvais !

Un commentaire a faire?

Have fun,

Jaguie

[photo]

Partager et découvrir :
  • email
  • Twitter
  • PDF
  • Facebook
  • Netvibes
  • Posterous
  • Bluegger
  • Fuzz
  • Tapemoi
  • Scoopeo
  • Zataz
  • MisterWong Fr
  • Digg
  • Reddit
  • Technorati
  • Wikio
  • Wikio IT
  • Yahoo! Buzz

Billets similaires

Tags: PHP // 15 Commentaires »

15 Réponses pour “[PHP] Un mauvais développeur PHP en 41 points”

  1. Je ne comprend pas ce que l’utilisation d’un moteur de template viens faire ici…

    Excuse-moi, mais si on veut respecter les principes DRY/KISS/MVC et ne pas réinventer la roue à chaque projet, l’utilisation d’un moteur de template est un pré-requis lourd il me semble…

    Il faut également savoir dimensionner ses réalisations, genre utiliser CakePHP (tenté soit que ce fut-ce possible) pour un site perso Free ou trois pages pour le site d’un artisan boucher, franchement…

    En fait j’ai l’impression qu’il ne respecte pas lui-même le KISS…

    Pour dire les choses plus crument, on dirait que cette liste a été écrite par un noob qui vient d’être félicité pour un projet où il a fait mumuse avec les dernières techno et qui se sent le droit de juger tout le monde…

  2. Oui j’ai lu ça aussi ce matin dans le twitt de Korben… Bien vu mais pas complètement juste comme liste. Notamment lorsqu’on développe sous Linux on s’en sort proprement avec le combo Terminal / Bloc Note / Mercurial…. les IDE du style d’eclipse Zend etc ne sont pas indispensables pour le Web d’après moi.

  3. Oups je me reconnaît dans plusieurs points, c’est grave docteur ? ^^

  4. J’adore :D

  5. trop geek pour moi… :( mais bientot je serais experte en lotusscript sous domino designer… ça c’est la classe! :P

  6. Pas mal de trucs que je fais ou ne fais pas (et qui sont dénoncées), ce qui doit prouver que je suis encore « mauvais », mais y a quelques petits trucs qui me chagrinent… Comme @Kane, je vois pas ce que l’utilisation d’un moteur de template a de mal (je suppose que la personne en question est anti-template, mais c’est un sujet qui est franchement discutable, tout dépendant d’un choix [propreté contre rapidité]).

    Ah et la 32. est très mal traduite en français ! ;)

  7. Entièrement d’accord au sujet des templates… Ne serai ce que pour une question de SEO …

    Ensuite, je suis assez d’accord avec Kane dans son analyse. Mais l’utilité d’une telle liste est de voir les points que l’on peut améliorer comme j’ai déjà pu le dire.

  8. [...] [PHP] Un mauvais développeur PHP en 41 points | ChroGeekwww.chrogeek.com/2009/02/php-un-mauvais-developpeur-php-en-4… par jaguie il y a quelques secondes [...]

  9. @Arcus : chacun sa tech, sérieux, j’étais fan de bluefish, j’ai test Eclipse PDT, limite je me sens sale tellement j’ai connu un gain de productivité malsain.
    |
    @Priest : désolé, ça se soigne pas XD et le pire c’est que c’est une maladie dégénérative sur long terme et non létale… :P
    |
    @DeLpH : c’est pas geek, c’est juste pas ton truc, te rabaisse pas comme ça :D
    |
    @Adrian Gaudebert : je viens de me mettre à Smarty, bah je n’ai pas constaté trop de perte de vitesse, plus le cache intégré, et facile à prendre en main par les graphistes, il est vrai j’ai pas maté les sources encore, mais vu par qui s’est soutenu, je pense que le code sent bon l’acajou… mais bon, comme on dit souvent, question de point de vue, de feeling.
    |
    @jaguie : dans l’esprit open source je pense faire une liste, après tout je suis comme tout le monde, j’ai même moins de diplômes officiels que certains ici, donc why not ?!.
    |
    1. utilisation de globals
    2. patternite aïgue : utilise toujours des pattern pour le moindre truc, même celui qui devrait être en static ou fonctionnel selon le milieu dont on viens.
    3. anti-pattern user : utilisation massive de « classes dieu » qui font même le café, de « coulées de laves » et autres subtilité qui rendent l’obfuscation un art brut (genre « Tour aux figures » de Jean Dubuffet).
    4. artiste autiste : non respect de conventions de nommage, nommage « artistique » genre « pourquoi appeler l’itérateur $i ? C’est tellement mieux : $hortense ou $velo ou $_okzdd8982″.
    4. bis bonus. ne documente pas son code.
    5. Ne parle pas aux autres dév du projet, fait ce qu’on lui demande dans son coin.
    6. produit du code efficace mais suivant une logique totalement absconne et loin du raisonnement « IRL ». voir 4.bis.
    7. Ne prend pas en compte l’encodage du serveur, de la BDD et de ses pages.
    8. Perroquet bavard : nombreux « ctrl-c ctrl-v » de code = non factorisation.
    9. Trust the User Input : ne sécurise pas les entrées de ses logiques (métier ou app indifféremment)
    10. Laisse error_reporting à true en production sans faire une fonction perso qui cache les messages à l’user et report dans un log ou équivalent.

    *vous êtes libre de rajoutez ici ce que vous pensez (voir license GNU)(pour ceux qui seraient amené à le penser, oui je suis un connard de libriste XP), sinon je me limite à 10 points perso, donc …*

  10. En effet dans la liste certains points ne sont pas forcement obligatoires. Tout comme l’a dit kane cela me fait également penser à une liste d’une personne qui veut faire bien car il à utilisé toutes les dernières technologies dans son projet :-)

  11. Pour moi le point que je ne comprend pas c’est le deuxième. Comment un truc écrit en Java peut aider à la productivité. Franchement j’ai beau me creusé, je voit pas. En plus il prend Eclipse, qui pour moi est une usine à gaz sans nom.

    @Kane : chacun sa tech, sérieux, j’étais fan de bluefish, j’ai test Eclipse PDT, limite je me sens sale tellement j’ai connu un gain de productivité malsain.

    Bah déjà t’as réussi à l’installer, pour moi c’est déjà un exploit en soit.
    Perso j’utilise Quanta, il fait exactement ce que tu as besoin et très simplement. Je voit tellement de gars dire qu’il bosse sous Eclipse et quand on leur demande pourquoi il te réponde :  » Eclipse c’est ce qu’il y a de mieux. » mais non soit jamais essayer autre chose ou bien il ne peuvent pas tenir un argumentaire sur la plus value de cet éléphant.

    Enfin tous est relatif, je suis apparemment un très mauvais codeur. Quelque part je suis un peu rassuré c’est pas mon métier et je n’est pas la prétention d’être The Coder.

    @Kane ne voit pas dans ma remarque quelque forme de jugement. C’est juste que je suis un Anti-Eclipse/Java.

  12. Bon, j’ai visiblement encore du boulot…

  13. Olala… je dois être un terrible développeur alors !

  14. La traduction est pas tip top non plus.

  15. Si vous utilisez PHP, vous etes un mauvais developpeur.

Laissez un commentaire