Je ne suis qu'un développeur débutant, mais mon travail m'oblige à travailler avec un code PHP vraiment épouvantable (pensez au pire code PHP que vous avez vu; puis pensez au code deux fois plus mauvais). J'essaie généralement de corriger les bugs et de me battre avec la base de code pour ajouter de nouvelles fonctionnalités. Parfois, on me commande de faire fonctionner les choses le plus rapidement possible, ce qui implique le plus souvent des hacks sales.
Le produit était auparavant open source et je crains qu'il ne le devienne à l'avenir. J'aurais honte si quelqu'un (surtout des employeurs potentiels) pouvait trouver mon nom à côté de certains des changesets. Que puis-je faire pour protéger ma réputation?
Je ne sais pas si cela est pertinent, mais j'ajouterai que ni mon chef ni mes collègues ne veulent admettre que le code est mauvais, mais je ne suis pas sûr de pouvoir leur en vouloir, car nombre d'entre eux premier travail.
la source
Réponses:
Rome ne s'est pas construite en un jour, mais vous pouvez être un bon "scout". Chaque fois que vous touchez le code, laissez-le meilleur qu'avant. Il ne faut pas beaucoup de temps pour utiliser des noms de fonctions sensibles, de bonnes normes de codage et des commentaires honnêtes lorsque vous travaillez.
Je pense que le danger est de penser que c'est tout ou rien. Ce n’est pas parce que vous ne pouvez pas passer le temps que vous voulez écrire du code élégant que vous devez abandonner totalement et écrire des ordures.
la source
Every time you touch the code, leave it better than it was before.
D'accord avec S.Lott à partir de commentaires * (pour une fois :) Personne ne vous oblige à écrire un code incorrect. La chose est, junior dev. souvent (ce site est également à blâmer pour cela) se perdre dans les meilleures pratiques, "beau code", ... comme vous voulez l'appeler ... et ils ne font pas grand-chose; ou ils le font mais perdent beaucoup de temps. En leur disant d'écrire du mauvais code (c'est-à-dire du code qui fonctionne également), cela leur donne plus que "grâce à cela"; À mesure que le temps passe, il en résulte qu'un jeune développeur (qui n'est plus maintenant :) trouve très rapidement une solution rapide et sale, mais passe le reste du temps à l’améliorer. Et à mesure que le temps passe, vous en apprenez plus et à un moment donné, vous commencez à fournir des solutions rapides et compliquées qui constituent en fait un bon code.
Mais si vous aviez essayé et écrit du code parfait dès le début, vous auriez probablement passé beaucoup de temps et presque rien fait.
Alors ... écrivez du mauvais code, ... beaucoup ... du code qui fonctionne à peine, puis ITERATE. Chaque itération un peu mieux!
Personne n'a écrit la solution parfaite la première fois.
* ceci, s'il avait été plus court, cela aurait été un commentaire.
la source
Les commentaires de code sont votre ami ici.
Chaque fois que vous sentez que vous devez écrire un hack pas cher à cause de la pression, dites quelque chose du type "Ce code fait X à cause des contraintes de temps. Idéalement, je ferais plutôt Y. - Ashamed One, 5 juillet 2011"
Ensuite, si les employeurs potentiels le voient, ils comprendront que vous préférez écrire du bon code, mais vous êtes également disposé à adapter votre style de codage aux besoins de votre entreprise. La plupart des employeurs verront ces deux choses comme de bonnes choses.
la source
Cela dépend de la façon dont ils vous forcent.
D'après mon expérience, il y a deux possibilités:
Vous vous sentez obligé par un calendrier serré, code hérité, etc.
Dans ce cas, comme la plupart des autres réponses le disent déjà, il vous incombe d’optimiser pour vous rafraîchir. Vous n’avez peut-être pas le temps de réécrire la base de code sur MVC, mais dans un premier temps, par exemple, vous pouvez arrêter de coller manuellement votre code SQL et écrire à la place un script agréable
execute_sql($query, $params)
, qui jette les bases d’abstractions telles quefetch_customer($filter_params)
, etc. En fin de compte, les pratiques permettent à votre patron d’obtenir un produit plus tôt, il n’ya donc qu’un conflit quant au temps qu’il faut pour investir dans le futur par rapport au présent.Lorsque vous définissez le bon contexte ("dans les 6 mois, sans délai supplémentaire, je refactore le code monolithique en MVC"), vous devez laisser votre nom sur le code et essayer d'être fier comme un thérapeute, qui apprend à une victime d'accident vasculaire cérébral dites encore des mots simples.
Vous êtes explicitement chargé de le mettre en œuvre de la manière que vous jugez inapte
Essayer de séparer la vue du modèle ne survit pas à la révision, car "c'est trop compliqué, pourquoi ne pas simplement faire des requêtes SQL simples?". Vous
execute_sql
êtes mis en veilleuse, car «un codeur discipliné n'a pas besoin de ça».Cette affaire est nul. D'après mon expérience, il s'agit généralement de microgestion et de chefs d'équipe qui ont été promus là-bas pour des raisons politiques et non pour leurs succès. Le vrai problème est que vous êtes chargé de quelque chose (le code) que vous ne pouvez pas contrôler (vous devez le faire à leur manière). La meilleure solution serait de résoudre la cause première (c.-à-d. Que vous êtes traité comme un grognement). La deuxième solution (et selon mon expérience, la solution habituelle) consiste à arrêter de fumer.
L'avantage est que, dans ce scénario, votre nom ne sera probablement pas publié de toute façon, car le chef d'équipe prend le crédit de tout succès.
la source
Je suis persuadé que votre patron vous demande de livrer rapidement quelque chose, mais pas que vous fassiez un effort supplémentaire pour le rendre délibérément mauvais. Ce qui signifie que chaque fois que vous avez le choix entre un très mauvais code et un code légèrement moins mauvais, et que les deux options vous prennent autant de temps à mettre en œuvre, vous optez pour l'option légèrement moins mauvaise. C'est la solution à court terme, qui ne nécessite aucun effort.
Pour le long terme, parlez à votre patron. Expliquez comment investir 15 minutes ici peut vous faire gagner des heures. Assurez-vous d’avoir des exemples convaincants - pas le type "si j’ai fait ceci et cela ici, j’espère que je serais capable de faire cette autre chose l’année prochaine", mais plutôt "regardez, j’ai fait ça ici, et parce de cela, il m’a fallu trois heures pour trouver le problème là-bas; si je l’avais fait ceci et cela, le bogue aurait été apparent tout de suite ". Un avertissement ici: bien qu'un code élégant et maintenable se sente beaucoup mieux et plus efficace, parfois il ne l'est pas. Il existe des situations dans lesquelles une solution rapide bâclée est parfaitement justifiée: vous écrivez parfois du code à usage unique, parfois vous gardez un bloc obsolète en vie, en attente de la réalité; Parfois, le bénéfice d'une solution appropriée ne
Si tout échoue, allez chercher un autre emploi.
la source
Personne ne vous oblige à écrire du mauvais code. Vous pouvez inverser la situation et en faire une situation positive. Pionnier du changement pour les politiques et les procédures. Et vous ne pouvez pas toujours être le "oui" homme / femme non plus. S'ils disent qu'ils ont besoin d'une fonctionnalité x avant la fin de la journée, dites-leur que ce n'est pas faisable, mais donnez des justifications pour expliquer pourquoi ce n'est pas le cas. En cas de problème, proposez des solutions. Pas seulement un œil aveugle, ou pire ... en plus.
Votre dev shop n'est pas le premier à respecter des délais rigoureux, tout en souhaitant conserver un code bien conçu.
la source
Toute entreprise doit trouver un équilibre entre l'écriture de code brillant, une documentation exhaustive et des tests unitaires et la mise sur le marché de produits dans des budgets et des délais raisonnables.
Le meilleur code au monde n'a pas d'importance s'il est obsolète avant sa sortie.
Être pragmatique, c'est essayer de trouver cet équilibre. Obtenir des fonctionnalités corrigées rapidement peut être commercialement essentiel pour le moment, cela ne signifie pas que cela le sera toujours.
Il faut beaucoup d'expérience (plus que la plupart des codeurs) pour obtenir cet équilibre. Il est très facile d'opter pour l'un ou l'autre extrême. Il est plus difficile de trouver un moyen terme.
Je ne dis pas que votre patron a raison. En tant que codeur, il est tentant d'essayer de créer en permanence un code magnifique, qui n'est pas viable commercialement. Être conscient de cette tentation peut vous aider à réaliser que certains de ces hacks ne sont pas si mauvais.
La plupart du code, après un temps suffisant, contiendra des piratages pour des situations spécifiques trop coûteuses pour être restructurés dans un cadre général.
la source
Je voudrais ajouter que vous ne devriez pas simplement continuer comme vous le faites maintenant, ne rien dire et juste du piratage et du piratage.
Vous devez vous lever, pointer du code concret et leur dire ce qui est nul. Soyez précis et utilisez des métriques de code pour sauvegarder vos revendications. Rien n’est plus embarrassant que de prétendre qu’un code est mauvais alors qu’en fait, vous n’avez pas compris ce qui se faisait.
Je suis sûr qu'il existe de nombreux outils disponibles gratuitement pour l'analyse de code PHP http://en.wikipedia.org/wiki/Code_analysis
Aussi, bien sûr, ce http://en.wikipedia.org/wiki/Code_smell
Lisez-le, résumez ce que vous pouvez trouver dans votre application et, bien sûr, énumérez des alternatives . C'est une mauvaise pratique que de se lever et de crier "Je n'aime pas la façon dont cela est fait" sans présenter une meilleure (de préférence) meilleure façon de le faire.
Les hacks rapides coûtent de l'argent. Et ne le voyez pas de manière totalement négative - Vous pouvez apprendre beaucoup de ce travail maintenant et tirer profit des expériences que vous faites maintenant dans votre prochain.
hth
la source
Avant toute chose, vous utilisez le contrôle de code source, non? Sinon, commencez par là. Cela vous aidera d'abord et sera rapidement adopté par le reste de l'équipe.
Si vous avez le contrôle de code source, vous ne devez pas entrer votre nom dans le code, mais simplement le nom de votre entreprise. Il est courant, dans un code incorrect, de placer un historique de révision dans les commentaires en haut des fichiers. Il est préférable de le déléguer au contrôle de source.
Maintenant, en ce qui concerne la qualité du code, vous ne pourrez pas le changer comme une approche big bang. Lentement, un par un, ajoutez de nouvelles approches à différents problèmes. Si vous le faites correctement, cela vous fera gagner un peu de temps et vous l'utiliserez pour améliorer la qualité générale.
Pour vous donner un exemple, je suis arrivé une fois au milieu d'un projet avec une application Perl / CGI où tout le code HTML était dans le code. L'ensemble de l'application était dans un seul fichier sans structure claire. Rien n'était versionionné. J'ai commencé par configurer un dépôt CVS (pas de SVN disponible à ce moment-là), et y ai mis une interface Web. Au début, je m'occupais moi-même des commits de mes collègues. Ensuite, je scinde toutes les méthodes dans différents modules (fichiers). À ce moment-là, les collègues ont commencé à adopter CVS. Ensuite, j'ai sorti le code HTML du code. Ensuite, chaque fois que je devais apporter une modification à une partie du code, je prenais un peu de temps pour la refactoriser. Au final, la vitesse de développement avait tellement augmenté que le client était extrêmement heureux. Ils demanderaient un changement cosmétique et au lieu de nous leur dire "cela prendra 2 jours",
Cette approche ne fonctionnera cependant que si vous maîtrisez suffisamment le code général. Si vous ne comprenez pas la situation dans son ensemble, si certaines parties de l'application restent incompréhensibles, cela rendra votre travail très difficile.
Une dernière chose, une réécriture complète est parfois la seule solution mais il est généralement très difficile de justifier son coût pour la direction.
la source
Puisque vous êtes un développeur junior, c'est en fait une bonne chose. Etre jeté au milieu d'un grand bazar de code vous en apprendra beaucoup plus sur ce qu'il ne faut pas faire que travailler uniquement avec du code parfaitement «propre». Tirez parti de la situation et apprenez à reformuler le code défectueux et à le convertir lentement en quelque chose de plus gérable. Et ne vous plaignez pas d'être obligé d'être dès que possible. C'est le point - apprendre à refactoriser et nettoyer le code tout en faisant les choses dans des délais serrés. Après tout, n'importe qui peut écrire du code parfait s'il dispose de temps infini.
la source