Question:
Est-il éthique d'inclure des commentaires de code basés sur l'opinion pour les futurs développeurs?
CaptiveWolf
2017-06-27 15:24:59 UTC
view on stackexchange narkive permalink

Scénario: vous êtes un développeur travaillant seul pour une entreprise. Vous devez quitter l'entreprise dans un proche avenir et votre successeur ne commencera qu'après votre départ, ce qui signifie qu'aucune période de transfert ne sera transmise à certaines leçons clés que vous avez apprises. En tant que seul développeur, vous avez écrit du code qui, selon vous, se cassera à un moment donné. Vous en avez parlé à / averti votre équipe de direction (non technique) à ce sujet, vous avez quand même été invité à continuer et vous n'avez reçu aucun conseil sur la façon de rendre cela plus robuste. Vous avez également soigneusement examiné si le code peut être écrit de manière à ne pas casser et vous en êtes arrivé à la conclusion qu'en raison de failles système intégrées (que vous ne pouvez pas influencer), il ne peut pas être évité.

> Questions: Est-il éthique / professionnel de laisser des commentaires sur le code pertinent expliquant vos pensées / raisonnement qui peuvent être partiellement basés sur une opinion? Si vous étiez un employeur et que vous découvriez qu'un de vos anciens employés avait fait cela, qu'en pensez-vous? Sinon, comment cette situation pourrait-elle être gérée?

Exemple: Le type de commentaire que vous incluriez serait le suivant:

Note du développeur : Ce processus a été conçu comme une «preuve de concept» contre mon meilleur jugement et est susceptible de casser. Il existe des bogues connus et ce processus peut être difficile à maintenir. Désolé si vous devez maintenir cela, c'était la seule option disponible à l'époque.

OU:

Note du développeur: Ce processus est susceptible de s'interrompre si les volumes de données augmentent. Il aurait été préférable d'utiliser une exportation en vrac mais pas possible à l'époque. Il y a une configuration du journal des erreurs pour alerter si ce processus s'exécute trop longtemps et qu'il peut être trouvé à la place X.

Les commentaires ne sont pas destinés à une discussion approfondie;cette conversation a été [déplacée vers le chat] (http://chat.stackexchange.com/rooms/61305/discussion-on-question-by-captivewolf-is-it-ethical-to-include-opinion-based-cod).
[Réponse associée sur Stack Overflow] (https://stackoverflow.com/a/482129/974555)
Les commentaires dans le code lui-même doivent être aussi courts que possible et se rapporter uniquement au code qui le suit.Tout le reste (explications plus longues, processus métier, raisons de faire les choses d'une certaine manière) doit être placé dans la documentation séparée du projet / de l'application.
@MonicaCellio - Re "Les commentaires ne sont pas destinés à une discussion approfondie; cette conversation a été déplacée vers le chat."Il y a une délicieuse ironie dans ce commentaire concernant les commentaires dans le code.Les commentaires dans le code ne sont pas non plus destinés à une discussion approfondie.
Dix-neuf réponses:
Paolo
2017-06-27 15:31:28 UTC
view on stackexchange narkive permalink

Je n'appellerais pas cela éthique / contraire à l'éthique mais plutôt professionnel / non professionnel.

Votre deuxième note est celle que je choisirais car elle n'inclut aucune opinion et fournit les informations pertinentes au prochain développeur.

La première note me semble plus un coup de gueule qu'un commentaire utile.

En règle générale, j'essaie de fournir au moins un pointeur lors de l'écriture de code qui présente un risque ou qui est un hack pour contourner tout problème externe; cependant, c'est quelque chose que j'ai trouvé utile pour moi-même et l'est encore plus pour quelqu'un qui n'a pas développé ce code (laid).

Rendez les commentaires détectables en utilisant les préfixes bien connus ["XXX" ou "FIXME"] (http://www.catb.org/jargon/html/X/XXX.html).C’est quelque chose que le nouveau développeur doit vérifier quand il doit creuser dans la base de code, et aussi quelque chose que les IDE ont tendance à mettre en évidence, à collecter et à montrer dans une vue d’ensemble.
simplement, l'expression «contre mon meilleur jugement» est ridicule et ridicule.tout le reste est totalement normal et sans particularité.
Se mettre d'accord.Je pense que l'avertissement qu'il est prévu de casser est une documentation ** nécessaire **, mais le ton "hé, je ne voulais pas faire ça, pas vraiment de ma faute" du premier est une ventilation personnelle.Le second semble beaucoup plus "juste les faits" et professionnel.
@JonasWielicki TODO: est un autre outil assez chaud que la plupart des outils recherchent automatiquement.
@JonasWielicki J'utilise TODO, même si j'ai aussi vu FIXME et DEBUG.XXX est-il le code réel ou est-ce que cela signifie d'autres mots, comme TODO et FIXME?
@Anon234_4521 Au moins en Java, XXX * est * réellement utilisé et est livré avec par ex.Paramètres par défaut d'Eclipse.Plus particulièrement, il est inclus dans les conventions Oracle / Sun.Il semble également être utilisé dans d'autres endroits, et c'est une sorte de commentaire "fall-through" pour les endroits où FIXME et TODO sont trop spécifiques.
@Anon234_4521 `XXX` représente à peu près ce que vous pourriez imaginer:" ce bit est f *** ed up! "(c.-à-d. piratage / preuve de concept / non optimisé / susceptible de casser le code).Il est utilisé pour marquer le code qui fonctionne réellement, mais le développeur devrait vraiment savoir mieux et il devrait être amélioré par n'importe quel standard professionnel décent lorsque la poussière retombe et que quelqu'un a le bon sens de rendre le code plus maintenable.C'est à dire.exactement la situation décrite par OP.(Par opposition au code «FIXME» qui est par définition «cassé» et doit donc être corrigé, ou «TODO» qui n'est pas encore implémenté).
Ou soulevez plutôt un bogue dans votre système de suivi des problèmes.
Seer.The
2017-06-27 15:33:34 UTC
view on stackexchange narkive permalink

Soyez constructif.

Commentez des choses comme les bogues et les problèmes, car ils aident à la fois le projet et un nouveau développeur, mais évitez les commentaires comme "Désolé si vous avez besoin de maintenir cela", cela n'a pas d'intérêt en eux.

motosubatsu
2017-06-27 15:53:30 UTC
view on stackexchange narkive permalink

Le premier lit un IMO peu professionnel, et oserais-je le dire un peu pétulant avec les références à "contre mon meilleur jugement". Si je voyais cela en tant que responsable du développeur, je ne regarderais pas trop gentiment dessus.

Le second se lit beaucoup mieux, il est professionnel, succinct et fait passer les informations clés pour aider tout futur responsable le code. Ce serait un bon commentaire à mon avis.

+1 et je pense qu'il pourrait être amélioré en le déclarant comme une documentation informant les futurs responsables des hypothèses.Par exemple, "ce code est conçu uniquement pour des volumes inférieurs à X .... par seconde. Des volumes plus élevés peuvent entraîner une instabilité" Juste les faits, madame.
Je pense que la partie «contre mon meilleur jugement» est bien.Cela en dit long sur la qualité du code que vous pouvez vous attendre à trouver. "Si je voyais cela en tant que manager du développeur, je ne regarderais pas trop gentiment."-> Cela vous fait paraître mesquin et / ou incompétent.Si vous en tant que manager prenez une mauvaise décision technique, vous devez l'admettre.
@industry7 J'ai toujours été propriétaire des décisions techniques que j'ai prises en tant que manager, les bonnes et les mauvaises.Mes rapports ne sont pas toujours * d'accord * avec eux, ce qui est bien et je les encourage à faire valoir leurs opinions.Le sniping passif-agressif via des commentaires de code n'est cependant pas la bonne façon de le montrer.
@motosubatsu "Je les encourage à faire valoir leurs opinions. Le sniping passif-agressif via les commentaires de code n'est pas la bonne façon de le montrer." Les commentaires de code ne sont pas pour vous, le gestionnaire, ils sont pour d'autres programmeurs qui pourraient ne pas savoirque vous, le manager, avez forcé les développeurs à prendre une mauvaise décision technique.Et il est vraiment utile pour les développeurs de savoir POURQUOI une décision technique particulière a été prise et si la seule raison est "la direction l'a dit", alors il est vraiment utile d'avoir cette information dans les commentaires du code.
@industry7 Je ne pense pas que nous allons voir d'un oeil sur celui-ci, peut-être parce que pendant mes périodes de gestion, j'ai toujours été techniquement "pratique", donc les commentaires de code * sont * pour moi.
OldPadawan
2017-06-27 16:00:26 UTC
view on stackexchange narkive permalink

Est-il éthique / professionnel de laisser des commentaires sur le code concerné

Professionnel et obligatoire: celui (s) qui y travaille aura besoin de commentaires pour gagner du temps / de l'argent / maux de tête

expliquer vos pensées / raisonnement qui peuvent être partiellement basés sur des opinions?

Évitez cela. Tenez-vous en aux faits, gardez l'approche professionnelle et soyez constructif, comme également mentionné par @ Voyant. .

Commentez la partie technique de la bug, expliquez si nécessaire, utilisez une liste TODO, recommandez quelque chose d'utile tant que c'est professionnel et lié à votre travail / code.

Note du développeur: Ce processus est susceptible de casser si les volumes de données augmentent. Le journal des erreurs peut être trouvé [ICI] pour alerter si le processus s'exécute trop longtemps. À l'avenir, il pourrait être utile de ('Il était prévu de' / 'cela pourrait être utile de'): a) vérifier AAA b) modifier BBB c) tester CCC

Aucun responsable ou patron n'aimerait voir des critiques non constructives et basées sur des opinions.

  • Non

    • dire que c'est faux
    • pleurer
    • se plaindre
    • écrire des commentaires non techniques basés sur des opinions (*)
  • Préférez pour:

    • ajouter une liste de tâches
    • signaler des faits
    • donner des informations
    • être utile aux autres membres de l'équipe même si vous n'en faites plus partie

/ * (*) MODIFIER : 30/06/2017: ajout de "non technique" à la liste Ne pas pour la rendre plus claire, basée sur @ Wildcard commentaire. * /

Je pourrais ajouter Ne pas: "excusez-vous (ce n'est pas utile et la personne suivante ne vous connaîtra pas et ne s'offusquera pas; cela prend simplement de la place)"
* Les avis techniques * sont corrects."Nous n'avons probablement pas besoin de nous soucier de la prise en charge des versions de l'API foobar antérieures à 2.0; ou du moins, c'est trop de travail pour cette itération."Au moins donne un contexte pour expliquer pourquoi ils ne sont pas pris en charge.
Se mettre d'accord.J'ai pensé aux commentaires basés sur des opinions comme OP les a mentionnés.Mais les commentaires professionnels basés sur des opinions techniques sont les bienvenus
Ne mettez pas de todos dans le code;mettez-les dans votre système de suivi des problèmes.
Zaibis
2017-06-27 17:38:37 UTC
view on stackexchange narkive permalink

Chaque fois que je me suis retrouvé dans la situation de reprendre quelque chose, d'être laissé seul avec des documents et des commentaires sur le code de production et que je n'avais personne à qui parler,

J'aurais aimé trouver des conseils basés sur des opinions . Mais tout ce que je trouve généralement est:

  // TODO !!!!  

Donc je dirais, documentez-le aussi techniquement et précisément que possible , mais avant de laisser de côté une information importante , votre remplaçant vous pardonnera d'être basé sur l'opinion au lieu d'écrire simplement un autre "Je n'ai pas fini ce" -comment aka / * TODO !!!! * / .

Eh bien, au moins je le ferais.

Todo: Écrivez un commentaire constructif sur cette réponse.
-1
Le standard «TODO:» est accepté par des tonnes d'outils et de développeurs.
... mais serait mieux comme une entrée dans votre système de suivi des problèmes.
@LightnessRacesinOrbit: Bon point mais blagues à part: toutes les entreprises n'ont pas fait l'effort de maintenir un tel système, alors que je pense qu'il n'existe aucune entreprise qui n'ait pas encore tenu de commentaires.
Graham
2017-06-28 22:48:28 UTC
view on stackexchange narkive permalink

Puisque vous demandez "Comment cette situation pourrait-elle être gérée autrement?", je vais sortir un peu des sentiers battus et dire

Utilisez un outil de suivi des bogues - et si vous pensez même sur l'utilisation des commentaires de code, jetez un long regard critique sur vos pratiques de codage.

Sérieusement. Si vous pensez qu'il y a des bogues dans votre code, vous rédigez un rapport de bogue. Vous utilisez l'un des nombreux systèmes de suivi des problèmes (par exemple Bugzilla) qui sont disponibles gratuitement et faciles à utiliser et à entretenir. Enfer, utilisez une feuille de calcul Excel si vous le souhaitez. Les rapports de bogue peuvent être aussi détaillés ou spéculatifs que vous le souhaitez. Ils peuvent (et devraient!) Inclure des justifications expliquant pourquoi la direction a pu décider de ne pas les corriger. Ce sont toutes les meilleures pratiques pour le développement de logiciels.

Si je prends votre code pour le maintenir, je chercherai ce traqueur de bogues. Il y a de bonnes chances que je fasse de la maintenance car il y a un bogue qui doit être corrigé. Je vais donc supposer que nous avons une liste de bogues, et qu'elle est raisonnablement complète.

Si je trouve qu'il n'y a pas de traqueur de bogues, je serai inquiet. Pire que cela, si je trouve que le code est jonché de commentaires disant "c'est susceptible de casser", je vais maudire votre nom. Le seul moyen que j'aurai pour trouver les bogues que nous pourrions avoir dans le système est de parcourir chaque fichier, ligne par ligne, car je n'ai aucune idée des autres mines terrestres que vous avez laissées aux responsables de la maintenance.

Alors faites le travail correctement. Mettez vos rapports de bogues dans le suivi des bogues. Rendez-les aussi détaillés que vous le souhaitez. Incluez les noms des responsables qui ont pris la décision de ne pas corriger les bogues - ce sera une information vitale pour un futur responsable pour trouver la bonne personne à qui parler. Si vous voulez ajouter des commentaires dans votre code disant "Cela a un problème connu - voir CR1234 pour plus de détails" alors vous allez au-delà.

Mais vraiment pas envisager les commentaires de code seuls comme moyen approprié de signaler les bogues pour les responsables. Ils ne le sont pas.

Ce.Exactement ça.C'est du code;il * y aura * des bugs.La question n'est pas de savoir si du code fragile existe, mais de savoir si le code fragile est documenté - un commentaire `// HERE BE DRAGONS` n'est pas * documentation *.J'ajouterais seulement que * les journaux de modification et le suivi des problèmes n'appartiennent tout simplement pas aux commentaires de code *.Ils appartiennent respectivement au * contrôle de code source * et à un * suivi des problèmes *.
Ce n'est pas vraiment ce que demande l'affiche.L'existence d'une méthode de suivi des bogues ne signifie pas que le code ne doit pas être commenté, et s'il n'y a pas actuellement d'erreur reproductible, comment la mettre dans un rapport de bogue?Notes de version peut-être ...
@barbecue L'OP était assez clair qu'il pense que cela * va * casser.Les rapports de bogues sont parfaitement valables pour tout ce qui se comporte mal ou est susceptible de mal se comporter, que vous disposiez ou non d'un bon moyen de le reproduire.Et des * problèmes * peuvent être soulevés pour tout ce qui devra être résolu, qu'il s'agisse d'un bogue ou non.Je suis d'accord (et j'ai dit dans ma réponse) que vous êtes libre d'ajouter des commentaires * ainsi que * de signaler un bug / problème;mais le PO considérait les commentaires comme le seul moyen de documenter les problèmes, et cela devrait être considéré comme préjudiciable.
@Graham "L'OP envisageait les commentaires comme le seul moyen de documenter les problèmes" Où voyez-vous cela dans la question?Je ne vois rien de tel.La question était spécifiquement de savoir s'il était acceptable de mettre des commentaires dans le code qui décrivent une faiblesse que le développeur n'a pas eu le droit de corriger.Il ne mentionne pas du tout le suivi des bogues ou d'autres formes de documentation, et lui dire de mettre le problème dans un traqueur de bogues ne répond pas à la question de savoir s'il est éthique ou non d'ajouter des commentaires au code sur le politique / non.- décision technique qui a été prise.
@barbecue Il demande spécifiquement "Comment cela pourrait-il être géré autrement?"Puisque c'est sa question, il n'a pas envisagé de la traiter autrement que par des commentaires.En ce qui concerne l'éthique, ce n'est pas une bonne pratique de dupliquer des informations, donc s'il a déjà soulevé un problème, il ne devrait jamais reproduire cette information dans les commentaires.Le contenu qu'il met dans le commentaire n'a pas d'importance - en le mettant dans un commentaire, il échoue automatiquement.En ce qui concerne ce qui se passe dans un problème, l'opinion personnelle est bonne, à condition qu'elle soit constructive et que la question décrive avec précision ce qui ne va pas.
"en le mettant dans un commentaire, il a automatiquement échoué."Les généralisations radicales sont toujours fausses.Personne n'échoue "automatiquement" parce qu'il met des commentaires dans le code, c'est juste idiot.
D'ordinaire, je serais d'accord, mais ce n'est pas une situation de «bogue»;c'est plus "Ceci est codé à 100% selon les spécifications, mais j'ai des réserves sur les spécifications elles-mêmes".Traiter cela comme un bogue donnerait tous les mauvais signaux et pourrait même causer des dommages (par exemple en introduisant de nouveaux bogues ou des retards lorsque le logiciel «a juste fonctionné» aux yeux de la direction).C'est un problème qui n'attend que de se produire, mais qui n'est malheureusement pas encore arrivé pour justifier une intervention.À moins d'un rapport formel (qui est moins susceptible d'être lu), je pense que les commentaires «d'opinion» là où cela compte dans le code est vraiment la voie à suivre ici.
Oh mon dieu oui ça.Jeter le code avec un vague "cela pourrait être mieux" est inutile._Soulevez un bug_ documentant le problème spécifique.Ensuite, il peut être traité comme n'importe quel autre problème de qualité, c'est-à-dire _correctement_.
@barbecue: _ "s'il n'y a pas actuellement d'erreur reproductible, comment la mettre dans un rapport de bogue?" _ Vous pouvez générer un rapport de bogue sur la qualité du code ou une infrastructure fragile sans erreur reproductible.Si vous ne le faites pas déjà, il se peut qu'il y ait un problème avec vos processus.
@LightnessRacesinOrbit Pour l'amour de Dieu, veuillez prendre ma déclaration dans son contexte et ne pas faire d'hypothèses absurdes sur mes propres processus.
@barbecue: Je n'ai fait aucune "hypothèse";J'ai dit qu'il pourrait y avoir quelque chose de mal.Pas besoin de se mettre en colère.
@barbecue "Personne" échoue "automatiquement parce qu'ils mettent des commentaires dans le code, c'est juste idiot."Bien sûr que non, car ce n'est pas ce que j'ai dit, et c'est très idiot d'élever cet homme de paille pour suggérer que je l'ai fait.J'ai dit que ** si ** vous utilisez des commentaires dans le code pour informer les responsables des bogues ** au lieu de ** soulever le bogue en tant que rapport de bogue dans un système de suivi de bogue, ** alors ** vous avez automatiquement échoué.C'est une "généralisation à grande échelle" faite par les normes de développement logiciel et par des décennies de meilleures pratiques dans l'industrie, pas seulement mon opinion personnelle.
@TasosPapastylianou En tant que personne ayant travaillé sur des logiciels liés à la sécurité et à haute criticité, je suis vraiment intrigué de savoir pourquoi vous pensez qu'une intervention n'est justifiée ** qu'après ** l'échec du logiciel?Quant aux «signaux», la direction ne peut prendre des décisions que si vous leur donnez de bonnes informations.Si vous leur dites «cela pourrait mal tourner, mais il est pratiquement impossible d'y arriver», alors ils peuvent réduire la priorité en conséquence.Si vous leur dites "ce code n'a aucun bogue", ils ne le sauront même pas.Et cacher activement les problèmes potentiels à la direction est appelé négligence grave ou faute.
@Graham eh bien, je ne pense pas cela ni ne l'ai suggéré, et je suis entièrement d'accord avec tout ce que vous avez dit.Je faisais un point différent.Il semble que les informations sur ce problème ont été présentées et ont été convenablement discutées avec la direction, et ils ont pris la décision de les ignorer, malgré les protestations des principaux développeurs.Dans ce cas, le meilleur plan d'action (bien que pas nécessairement "bon") du développeur principal est de simplement mentionner les informations qui seront utiles à un futur responsable _si_ et quand les choses tournent mal (que ce soit dans le code ou dans un rapport de départ).Mais (suite)
déposer un bogue ou un problème qui se lit essentiellement (poliment ou autrement) "il n'y a rien à vraiment résoudre ici, laissez simplement ce problème persister et encombrez notre traqueur de problèmes jusqu'à ce que ce problème survienne à cause de mauvaises décisions de la direction avec lesquelles je ne suis pas d'accord"n'est pas vraiment une bonne utilisation du tracker.Si ce n'est pas un problème qui sera traité et n'est là que pour servir de mise en garde frustrée (bien qu'utile) de quelqu'un, je pense qu'il vaut mieux laisser un commentaire à la place.Au mieux, il pourrait y avoir un mémo déclenché dans le futur à réévaluer, mais cela n'appartient pas non plus au suivi des problèmes.
@TasosPapastylianou Désolé si j'ai mal interprété votre commentaire.Je suis tout à fait d'accord, une diatribe n'est utile à personne.Mais un système de suivi des bogues devrait avoir une catégorie / priorité pour "pourrait potentiellement se produire, mais un correctif est suspendu indéfiniment jusqu'à / à moins que nous ayons la preuve que c'est vraiment un problème pour quelqu'un".Peut-être que personne ne fera jamais quoi que ce soit avec les dizaines de bogues dormants dans cette catégorie, mais vous ne savez pas à l'avance lequel de ces dizaines de bogues prendra soudainement vie.Et puis, la valeur de toute information dont vous disposez, aussi sommaire soit-elle, est au-delà de l'or.
@TasosPapastylianou ... Le premier travail avec un nouveau rapport de bogue est de vérifier s'il a déjà été signalé (recherche de doublons et de régressions), et le suivi des problèmes est l'endroit où vous allez le vérifier.Le fait n'est pas qu'il n'y a rien à corriger, c'est que la direction ne pense pas que ce soit une solution qui ajoute de la valeur.Cela n'a pas à être une diatribe, mais le problème peut certainement enregistrer qui a décidé cela, et c'est plus de bonnes informations pour le responsable.
Terribles compétences en communication affichées dans ces commentaires.
@Graham Voici une citation EXACTE de vos mots "Le contenu qu'il met dans le commentaire est sans importance - en le mettant dans un commentaire, il échoue automatiquement."Vous avez explicitement déclaré que le contenu d'un commentaire n'est pas pertinent, le simple fait de mettre un commentaire en place est un échec.Maintenant, vous pouvez affirmer que ce n'est pas ce que ces mots signifient, mais c'est tout simplement incorrect.Vous avez déclaré que mettre TOUT commentaire, quel que soit le contenu de ce commentaire, est un échec automatique.Si ce n'est pas vraiment ce que vous vouliez dire, alors vous devriez reformuler, car c'est ce que vous avez dit.
@barbecue S'il vous plaît, arrêtez de construire plus d'hommes de paille en citant hors de leur contexte, parce que vous vous faites simplement paraître plus stupide.Mais puisque vous êtes clairement un débutant, je vais vous expliquer, ligne par ligne."Puisque c'est sa question, il n'a pas envisagé de la traiter autrement que par des commentaires."Les rapports de bogues appartiennent aux traqueurs de bogues.Si vous ne faites qu'un commentaire, vous avez échoué, conformément à toutes les meilleures pratiques de développement logiciel que vous aimeriez examiner.
@barbecue Mais supposons qu'il mette les mêmes informations dans un bug tracker et dans un commentaire."En ce qui concerne l'éthique, ce n'est pas une bonne pratique de dupliquer des informations, donc s'il a déjà soulevé un problème, il ne devrait jamais dupliquer ces informations dans les commentaires."Donc, s'il a fait cela, il a également échoué, pour une raison différente.
@barbecue "Le contenu qu'il met dans le commentaire est sans importance - en le mettant dans un commentaire, il échoue automatiquement."Donc, qu'il utilise le commentaire comme stockage principal pour un enregistrement de bogue, ou s'il duplique des informations entre le traqueur de bogue et le commentaire, les deux échouent.
@barbecue Remarquez qu'à aucun moment je n'ai dit qu'il avait échoué parce qu'il avait mis des commentaires dans le code.J'ai dit qu'il avait échoué parce qu'il utilisait des commentaires *** pour enregistrer des détails sur les bogues ***.Comme je l'ai expliqué dans mon raisonnement, quelle que soit la quantité ou le peu d'informations qu'il met dans un commentaire *** sur un bogue ***, ces informations appartiennent toujours au suivi des bogues et jamais au code.
@Graham, encore une fois, comme je l'ai déjà souligné, c'est peut-être ce que vous vouliez, mais les mots que vous avez utilisés ne signifient pas cela.
Laissez-nous [continuer cette discussion dans le chat] (http://chat.stackexchange.com/rooms/61550/discussion-between-baritchen-and-graham).
Ian
2017-06-27 16:42:02 UTC
view on stackexchange narkive permalink

En tant que personne prenant en charge le code, comprendre pourquoi il a été écrit est très utile. Je préfère de beaucoup avoir cette information en commentaire (au lieu d'un document qui ne me sera peut-être pas donné) que de ne pas l'avoir, quel que soit le manque de professionnalisme de la direction.

Mais c'est la direction qui écrira votre prochaine référence et non la personne qui reprend le code. Donc, si vous n'êtes pas en mesure de fournir les informations d'une manière qui semble professionnelle, il vaut peut-être mieux ne pas les fournir du tout et laisser le prochain programmeur découvrir l'erreur qu'il a commise en acceptant le travail.

Ce qui est souvent beaucoup plus utile que les informations sur les raisons pour lesquelles * a * été * fait quelque chose d'une certaine manière, ce sont les informations sur les raisons pour lesquelles * quelque chose * n'a pas * été fait d'une manière particulière, surtout si cette autre manière peut "sembler" meilleure.Un commentaire "Cela peut sembler plus rapide de faire X au lieu de Y, mais cela causera un problème insoluble Z" peut parfois rapporter des dividendes importants si cela évite à beaucoup d'autres d'essayer d'implémenter une version "améliorée" du code qui fait Y au lieu deX, dépensant encore plus d'efforts pour essayer de le réparer, et finalement devoir le faire reculer pour refaire X.
Ouais, mais un commentaire comme "la direction m'a fait faire ça de cette façon. Désolé que vous ayez à vous en occuper" n'est très utile à personne.
@Casey, au contraire, cela pourrait être très utile - mais le libellé devrait être beaucoup amélioré si c'est vraiment le cas.Exemple: * "Si vous vous demandez pourquoi l'approche X n'a pas été utilisée et si elle serait meilleure, c'est très probablement le cas, mais la direction actuelle a déterminé que suffisamment de ressources avaient déjà été investies dans ce projet. Si vous révisez ce code pour améliorerses performances et sa fiabilité, l'approche X semble un candidat très probable d'où je suis assis. "*
Jay
2017-06-28 02:50:57 UTC
view on stackexchange narkive permalink

Il y a des années, j'ai dû apporter des modifications à un programme que quelqu'un d'autre avait écrit, et je suis tombé sur un gros bloc de commentaires au milieu du code qui commençait: "C'est un triste commentaire sur l'Amérique moderne quand une personne est forcée pour continuer à travailler sur un projet qui ne l'intéresse pas », et a continué sans arrêt sur la façon dont cette personne détestait son travail. Puis il a mis fin au commentaire et est retourné au brassage des données. Je l'ai mentionné à l'un des autres programmeurs et elle a dit que ce type mettait toujours ces diatribes dans son code. C'était plutôt amusant, mais cela lui donnait l'air plutôt idiot.

Comme d'autres l'ont noté, un commentaire comme le vôtre est raisonnablement objectif et très probablement utile à un futur programmeur.

J'inclus régulièrement des commentaires dans le code qui décrivent les limitations. "Cette fonction est lente mais elle n'est pas appelée très souvent donc cela n'a pas vraiment d'importance", "Cette validation ne fonctionne que pour les adresses américaines - elle devra être modifiée si jamais nous gérons des adresses étrangères", etc.

En général, je pense qu'il est bon et raisonnable d'écrire des commentaires qui disent franchement, "voici les limites de la façon dont nous avons fait cela, mais nous avons choisi cette approche parce que ..." Un futur programmeur a alors un indice et n'a pas à le comprendre à nouveau. Je suis sûr que quiconque travaille depuis assez longtemps dans le secteur a eu des moments où il a dit: "Wow, cela a été vraiment mal fait, je vais le réécrire de cette façon", puis nous passons des heures (ou mois) lors de la réécriture, seulement à un moment donné pour découvrir: "Oh, ça ne marche pas. Maintenant je sais pourquoi le programmeur original l'a fait comme il l'a fait."

inclure des gémissements ou des diatribes dans les commentaires, "j'ai été obligé de le faire de cette manière stupide parce que le patron est un crétin" ou autre. Pour la même raison que je ne dirais pas ça à un collègue. Ou pire, écrivez un e-mail disant cela. Même si j'arrête avant qu'il ne soit découvert pour ne pas être renvoyé, c'est toujours impoli et inutile.

J'inclus occasionnellement des remarques pleines d'esprit (ou du moins des tentatives). Je pense que ce genre de chose est bon pour le moral, mais il peut certainement être exagéré.

Une fois, j'ai dû écrire du code qui impliquait de forcer les espaces en utilisant un tas de au lieu d'utiliser CSS (pas par mon propre choix).J'ai laissé un commentaire de "jouer à des jeux stupides, gagner des prix stupides" avant tout le s.
carrdelling
2017-06-27 16:41:26 UTC
view on stackexchange narkive permalink

Je suis dans le même bateau - peut-être avec un peu moins de temps avant de partir que vous.

La solution convenue dans notre cas (une bonne, je pense) était:

  • Accomplissez votre tâche de manière professionnelle, dans la mesure du possible (dans votre exemple, prenez la deuxième option).
  • Dans le cadre de votre transfert, préparez un document avec les sources les plus probables / attendues des problèmes / points d'arrêt.
  • Dans ce document, vous pouvez poser quels sont les problèmes actuels de l'architecture logicielle, en fournissant vos points de vue - et même suggérer des moyens possibles de les résoudre.

De cette façon, vous gardez la source principale de votre travail aussi professionnelle que possible, et vous donnez également votre évaluation honnête aux futurs propriétaires du produit.

Dans le passé, j'ai vidé toutes les informations / documentation / guides pertinents que j'ai utilisés / liens / pensées et opinions dans un compte onenote ou similaire pour les transmettre à la personne suivante.
Un wiki ferait aussi bien.
Ivan
2017-06-27 19:12:32 UTC
view on stackexchange narkive permalink

J'ai vu des commentaires qui auraient eu des implications juridiques s'ils avaient été découverts au tribunal. Il y a donc une raison pour laquelle les commentaires du type "Je sais que cela pourrait échouer de manière catastrophique, mais je le fais quand même" devraient être évités .

Nous avons tous été dans cette position où il nous est ordonné de couper les coins ronds contre notre meilleur jugement afin de respecter une date limite ou une autre étape, mais vous devenez une responsabilité pour l'entreprise si vous travaillez autour de l'édition cette information (plus que de simplement le faire et de la réparer tranquillement plus tard) parce que vous annulez toute réclamation future de déni plausible.

Quant à la question du professionnalisme, quand un certain code source populaire d'un logiciel était fuite il y a quelques années, les gens ont eu une journée sur le terrain sur certains des commentaires que les développeurs ont répandus dans le code. C'était embarrassant pour l'entreprise, qui a depuis mis en œuvre la révision des commentaires - un panel trop zélé rejette désormais les commits de code contenant des commentaires potentiellement offensants ou non professionnels.

Vous dites "mais vous devenez une responsabilité pour l'entreprise si vous courez autour de publier ces informations parce que vous annulez toute réclamation future de déni plausible" comme si c'était une mauvaise chose, comme si vous vouliez aider l'entreprise à cacher une activité juridiquement douteuse.
@Aaron Je ne suis pas en désaccord avec vous, mais c'est ce que c'est.Aucun employeur ne gardera quelqu'un dont les indiscrétions professionnelles l'exposent à des risques juridiques.
@Aaron: Vous pouvez être victime d'un procès frivole, être totalement innocent, et un commentaire stupide vous fait perdre un procès.
@Johnny a écrit "Aucun employeur ne gardera ..." Mon employeur fournit une politique et des instructions strictes, accompagnées d'une formation, sur le signalement de toutes les questions juridiques et nous fournit des numéros de téléphone aux agences gouvernementales auxquelles nous adresser directement.Je suppose que c'est inhabituel cependant.Dans mon cas, je travaille actuellement pour une énorme entreprise de plusieurs milliards de dollars dans une entreprise où les batailles juridiques ratées peuvent coûter des centaines de millions, alors ils veulent pouvoir dire "Nous avons fait tout notre possible pour respecter complètement la loi. Il n'y a rien de plus que nous aurions pu faire. "Je serais viré pour avoir fourni un déni plausible.
@Aaron Nous travaillons probablement dans le même secteur.Ce que vous décrivez * est * le déni.Aucun de nous ne devrait raisonnablement éliminer le risque - toute entreprise comporte un risque inhérent - mais nous devons le minimiser en tant qu'agents agissant pour le compte de nos employeurs.(De plus, je ne parle pas de cacher de l'or nazi ou du blanchiment d'argent ici, mais simplement de déployer des logiciels potentiellement problématiques et que l'entreprise accepte le risque de tels problèmes sur le marché, les tribunaux et les domaines des relations publiques. Ce n'est pas illégal. Cela ne s'applique pas à eux.acceptant le risque que leurs agents le déploient avec des admissions intégrées de faute professionnelle.)
@Johnny a écrit «en le déployant avec des admissions intégrées de faute professionnelle».Je suis d'accord avec toi.Peut-être parlons-nous alors des pommes et des oranges.Les cas auxquels je pensais et le cas que vous décrivez devraient avoir des réactions / résultats différents.Je suppose que cela doit être jugé au cas par cas.En y réfléchissant à nouveau cette semaine, je conviens que, si quelque chose ne doit pas être caché et que vous devez vous protéger, les commentaires de code ne sont pas l'endroit pour défendre vos actions.Si vous avez besoin d'une protection juridique, d'autres voies seraient meilleures.+1 à votre réponse.
Wolfgang
2017-06-27 21:31:23 UTC
view on stackexchange narkive permalink

En tant que développeur de logiciels moi-même ...

Oui, c'est merveilleux si le code a (le bon type de) commentaires et variables / fonction / méthode / objet / ... noms qui parlent réellement pour eux-mêmes ... et je préférerais des informations détaillées sur pourquoi et pourquoi pas:

Il y a une limite stricte sur le volume de données qui peuvent être traitées ici, car nous itérons sur toute la base de données et récupérez chaque ligne. Les tampons de restauration ont déjà été définis aussi grands que possible par les administrateurs sur DB1 et DB2, mais à un trafic typique (à partir de juin 2017) qui ne nous donne que 2 heures à la période la plus calme entre 03h00 et 05h00, et (à partir de juin 2017) une exécution prend 1h40 (+/- 3 minutes).

En comparant les boutiques, il s'agit d'une limite de lecture et d'envoi de données logicielles et matérielles de la base de données, ainsi que de traitement parallèle et le partitionnement est déjà appliqué dans la mesure du possible sans risquer des données incohérentes.

En raison de la logique métier, des contraintes de produit et de matériel, en particulier A, B et C, il n'est pas possible d'utiliser des tables temporaires, celles-ci et D et E nous empêchent également de simplement vider ou exporter en masse la base de données. Une autre option envisagée consistait à répliquer la base de données sur DB_r, en supprimant la réplication de DB_r et en y travaillant. Malheureusement, revenir à une réplication à jour génère trop de charge sur DB1 et DB2 pour être viable, et cela s'aggrave avec le volume de données toujours croissant.

Un e-mail automatisé est envoyé pour développer @company et admin @ company (avec un pointeur vers cette partie de code) si le temps d'exécution dépasse 1:45 et un autre pour 1:55; il sera également enregistré par syslog comme grave / critique. (Les adresses e-mail sont définies dans /blah/blubb/const.h, vous pouvez ajouter votre adresse e-mail au cas où vous ne seriez pas sur la liste pour une raison quelconque.)

La direction a été informée que ce sera un problème dans un proche avenir, mais ils peuvent avoir besoin d'un rappel que le futur proche est devenu maintenant. Les solutions possibles sont:

  • Changez le RAID de la base de données du disque dur en SSD et obtenez plus de RAM et plus de cœurs vers les serveurs de base de données --- rapide mais coûteux (également les licences de logiciel DB)
  • Passez à XXX DB ou YYY DB, qui permet une exportation raisonnable à partir d'une base de données en cours d'exécution, mais ne dispose pas des fonctionnalités X et Z, de sorte que le code doit être adapté à cela --- ce qui coûtera beaucoup d'argent pour le logiciel et le temps de changer et de vérifier le code
  • Le déplacement d'anciennes données vers une base de données «archive» ou «entrepôt de données» réduirait la quantité de données sur DB1 et DB2 d'au moins 50%, peut-être 80%, ce qui résoudrait ou au moins reporterait le problème d'un certain nombre des années --- Les ventes doivent être convaincues que gérer leurs statistiques avec des données datant de moins d'un jour est en fait viable, ce qui a toujours été difficile. Cela signifie également qu'un nouveau matériel est nécessaire.

De plus, tout ce qui précède entraînera très probablement un jour ou deux d'indisponibilité, car la réplication ou la copie de la base de données entraînera la création d'au moins un serveur de base de données. très insensible, et cela bouleversera tout le monde, du conseil d'administration et du PDG en aval. Par conséquent, ces actions doivent être planifiées, testées et scénarisées bien avant le changement réel - un luxe que nous n'aurons pas si nous attendons beaucoup plus longtemps - et si possible devraient coïncider avec une panne planifiée (partielle ou complète).

Les tests semblent indiquer que si vous répliquez la base de données vers un DB_r et que vers un DB_r_r, vous pouvez maintenir la charge en raison de la réplication de DB1 et DB2 à un niveau bas pendant que vous transférez ce travail vers DB_r, mais faute de matériel être testé avec des quantités réalistes de données.

Cela me servira bien dans 6 mois ou un an. Cela me rappellera toutes les raisons, un indicateur à quel point c'est mauvais en ce moment, un rappel pour vérifier si certaines conditions sont toujours vraies (et si certaines le font, réexaminez si elles peuvent être modifiées maintenant), ce qui a été pensé (et pourquoi cela ne fonctionnerait pas), et quelques informations sur la dynamique sociale et de pouvoir.

Une note comme Il y a quelques bogues connus est à peu près aussi utile que "Attention aux snargels!" Et puisque la prochaine personne à maintenir ce code sera un psychopathe avec un faible pour les tronçonneuses qui connaît votre adresse actuelle ...

Ce long bloc de contenu ne devrait probablement pas résider dans les commentaires de code, cependant.Ajouter un dossier `dev-notes` au contrôle de code source et le mettre là-bas, avec une référence à ce fichier incluse dans les commentaires de code, serait mieux IMO.
hamstercat
2017-06-27 20:13:55 UTC
view on stackexchange narkive permalink

Tenez-vous en aux faits et au présent, et omettez tout ce qui est basé sur le contexte de ce qui a dû être fait dans le passé. Par exemple, ne dites pas:

Note du développeur: Ce processus est susceptible de s'arrêter si les volumes de données augmentent. Il aurait été préférable d'utiliser une exportation en vrac mais pas possible à l'époque. Il y a une configuration du journal des erreurs pour alerter si ce processus s'exécute trop longtemps et qu'il peut être trouvé à la place X.

Au contraire, vous pouvez utiliser quelque chose du type:

Cet algorithme devrait être remplacé par une importation groupée si le volume augmente à X entrées / prend plus d'une heure à compléter.

Il est facile pour vous de savoir d'où vous venez à partir du moment où vous avez écrit le code et bien sûr, cela reste dans votre esprit lorsque vous le regardez, mais votre prochain successeur ne commencera qu'avec l'état actuel de la base de code.

Muz
2017-06-29 03:45:10 UTC
view on stackexchange narkive permalink

En cas de doute, commentez davantage.

Ces types de commentaires sont très utiles, car ils communiquent des informations vitales. Peu importe que cela paraisse professionnel ou pleurnichard. Ce qui compte, c'est que cela soit utile pour résoudre ou prévenir de futurs problèmes.

Chaque développeur traverse ce moment où il est bloqué sur quelque chose pendant une longue période, ou a des délais serrés et doit pirater quelque chose. Les gens comprendront, en particulier ceux qui vous ont poussé à respecter une échéance difficile.

Il est très important de noter quand un morceau de code n'est pas optimisé, voire instable et non testé. Ou même des choses que vous prévoyez d'améliorer à l'avenir mais que vous n'avez tout simplement pas le temps pour cela maintenant.

o.m.
2017-06-27 22:49:14 UTC
view on stackexchange narkive permalink

En fonction de votre modèle de projet et de votre domaine d'activité, il peut être professionnel d'écrire et même de déployer un prototype ou un code de preuve de concept. C'est ce qu'on appelle la dette technique, et comme toute dette, l'entreprise doit l'accepter au moment opportun et la rembourser au moment opportun ... avec un «paiement d'intérêts» sous forme de travail supplémentaire.

Il était de votre devoir professionnel d'expliquer le concept de l'endettement technique à vos managers, même si vous ne pouvez pas utiliser de termes techniques. Il est de leur droit et de leur devoir de décider des niveaux d'endettement acceptables, même s'ils ne comprennent pas les détails techniques. Ils sont payés pour équilibrer le risque entre p. être en retard sur le marché et augmenter les coûts de maintenance. (Les choses seraient différentes lorsque les normes de qualité sont réglementées par des autorités professionnelles ou fixées par la loi, bien sûr.)

Vous avez donc fait des choses qui étaient erronées d'un point de vue purement technique , et vous ressentez le besoin de vous excuser de votre savoir-faire auprès de votre successeur. Vous ressentez également le besoin de donner des indications pour d'éventuelles améliorations. Comme mentionné dans d'autres réponses, cette dernière est une très bonne chose.

  • Expliquez les limites de votre code actuel. Vous pourriez même faire référence aux documents d'exigences. UX a écrit dans la spécification X.Y qu'une liste typique a moins de 10 entrées. Donc, le tri des bulles est parfaitement adéquat.
  • Expliquez pourquoi les choses n'ont pas été faites, de manière technique . Toujours utiliser Java 1.7 car nous ne pouvons pas utiliser la bibliothèque X plus récente que la version Y.Z. et cela ne se compilera pas avec la version 1.8.
Nobbynob Littlun
2017-06-28 02:56:25 UTC
view on stackexchange narkive permalink

Qu'est-ce que l'éthique?

Puisque vous demandez spécifiquement si c'est éthique ou non, cela peut aider à formuler le problème en termes de différents systèmes éthiques. C'est un sujet controversé et je ne suis en aucun cas un expert, juste un homme opiniâtre essayant d'aider (et qui a vraiment apprécié son cours d'éthique à l'université), alors gardez cela à l'esprit.

Notez également que ces différents systèmes s'entendent rarement sur ce que vous devez faire, c'est à vous de décider lequel est le plus pertinent. Il y en a beaucoup, beaucoup que je n'inclus pas ici.

L'éthique postmoderne soutient que les affaires humaines sont une chose désordonnée pour laquelle aucun système unique ne fournit une réponse complète. Nous pouvons donc travailler à partir d'un système comme base pour résoudre la majorité des problèmes, puis en incorporer d'autres pour traiter les problèmes périphériques.

L'éthique des affaires

Il me semble que vous l'êtes le plus préoccupé par le fait que votre propre code d'éthique peut entrer en conflit avec l'éthique commerciale de votre entreprise. Différentes personnes ont des idées différentes sur ce que devrait être l'éthique d'une entreprise, mais nous n'avons pas besoin de prendre une tangente à ce sujet. Votre entreprise doit avoir un code d'éthique écrit, ou un code de conduite, ou quelque chose du genre. Vous pouvez le trouver, le lire et voir comment votre propre code d'éthique s'y oppose.

Mais ces documents sont généralement des directives de plus haut niveau, de la haute direction, qui découlent de leurs droits et responsabilités en tant qu'entreprise et employeur au sein du ou des pays où ils vivent. Idéalement, il fournit un État de droit sur lequel bâtir la politique, mais il peut également inclure des directives comportementales quotidiennes pour les employés. Jetez un œil.

Ethique confucéenne

Les idées de Kong Fuzi visent à renforcer la société en renforçant des rôles interpersonnels harmonieux. Il l'a fait avec succès pendant de nombreux siècles en tirant parti du pouvoir de l'émotion humaine et de l'irrationalité pour produire un effet positif. Vous avez vous-même dit qu'il n'y aura pas un tel rôle interpersonnel de mentor-étudiant. Par conséquent, le confucianisme suggère que vous devez renforcer l'harmonie de votre organisation en vous basant sur les rôles interpersonnels que vous avez, tels que collègue-collègue, employeur-employé, superviseur-supervisé.

Comment cela est fait, vous seul peut savoir. Peut-être que cela signifie simplement faire ce que vous pouvez pour rendre le lieu de travail meilleur pour tout le monde avant votre départ. Peut-être que cela signifie parler à votre superviseur de la façon dont ses attentes et vos attentes se sont déroulées pendant votre mandat, et ce que cela signifie pour le prochain. Peut-être autre chose.

Le point clé ici, cependant, est de mettre de côté votre propre ego. Actuellement, vous pensez aux problèmes que vous avez rencontrés et comment les atténuer pour votre successeur. Au sein de l'école de pensée confucéenne, cependant, cela serait considéré comme égoïste. (Oui, même si vous êtes préoccupé par une autre personne.)

Ethique utilitaire

Ce système est dans la tradition de John Stuart Mill. Il soutient que la bonne action est celle qui aboutit à la plus «utilité» - une mesure du bonheur qui n'est pas nécessairement objective ou empirique. L'objectif est d'obtenir le plus de bonheur pour le plus grand nombre.

(Hors sujet: Les céréales pour le petit-déjeuner du samedi matin ont une bande dessinée amusante sur celle-ci.)

Son application ici n'est pas si mauvaise. L'utilitarisme suggère que vous vous concentriez sur la fourniture de commentaires et de documentation qui permettront le plus efficacement à votre successeur de se mettre au courant. Ils n'ont pas besoin d'une maîtrise totale, ils ont juste besoin d'un niveau de productivité satisfaisant eux-mêmes et leur superviseur. Et votre propre utilité est prise en compte dans le décompte - si cela commence à vous rendre misérable, passez à autre chose.

L'éthique kantienne

Immanuel Kant. Grand nom de l'éthique, et son truc plonge rapidement dans l'abstrait. Le résumé rapide et sale de ses idées est que quelque chose est vraiment juste et bon seulement quand il n’est pas qualifié. Ainsi, la fin ne justifie pas les moyens, ni les moyens ne justifient la fin - chacun doit être autonome. En ce sens, la seule considération éthiquement pertinente pour décider de ses motivations. Le motif proposé par Kant était le devoir et l'obligation.

Il y a beaucoup à critiquer dans ce système, mais cela vaut la peine d'y réfléchir comme l'une des nombreuses options. Vous avez un devoir et une obligation envers votre employeur, mais pas envers votre successeur. Une partie de ce devoir peut impliquer la préparation du code source et de la documentation pour que votre successeur puisse exercer vos fonctions. Que ces matériaux soient ce que vous voulez ou ce que veut votre successeur, cela n'a pas d'importance. Même si les matériaux s'avèrent inadéquats, vous avez rempli votre devoir et, au pire, votre successeur a simplement des devoirs un peu plus onéreux à remplir.

Éthique pragmatique

Dans la tradition de John Dewey. Ce système soutient que l'éthique elle-même est un processus scientifique d'expérimentation, d'itération et de révision. En outre, il soutient que le comportement éthique n'est pas conduit par des individus mais par des sociétés. Il propose également que l'éthique soit sensible au contexte, changeant avec le temps et le lieu.

L'inconvénient est qu'elle décrit la manière dont les décisions éthiques sont prises, et pas très prescriptive sur la manière de prendre des décisions éthiques. Mais cela suggère que les décisions sur ce qui est bien et ce qui est mal (comme votre commentaire, ... contre mon meilleur jugement ... ) ne vous appartiennent plus. Le bien et le mal de ces décisions appartiennent à la société, au nom de laquelle votre entreprise prend la décision, au nom de laquelle vous prenez vous-même la décision.

Une fois que vous êtes parti, vous n'êtes plus en mesure de prendre ces décisions au nom de l'entreprise. Par conséquent, ces décisions ne sont pertinentes que dans la mesure où elles permettent à votre successeur de faire de même. S'ils pensent que votre opinion est folle, alors les commentaires d'opinion n'ont aucune valeur éthique.

Par conséquent, dans ce système, l'action éthique consiste à permettre une prise de décision éclairée par votre successeur, en mettant l'accent sur les informations empiriques, afin qu'ils soient mieux préparés à conduire la prochaine itération de décisions sur ce qui est bien et ce qui est mal.

Éthique des soins

C'est la tradition de pensée qui découle du travail de Carol Gilligan sur développement psychologique de la femme. En mettant de côté les questions féministes, elle soutient que ce qui est bon et juste dépend de la façon dont on prend soin des autres; favorise le développement; et favorise le bien-être.

De cette position, le professionnalisme n'a même pas d'importance dans ce scénario. Vous avez quelqu'un qui héritera de votre poste et vous ne serez pas là pour les aider. Le soin éthique suggère que vous devriez faire tout ce que vous pouvez, maintenant, pour leur donner la maîtrise que vous détenez maintenant sur le code source. Cela inclut les connaissances objectives qui peuvent être utilisées dans l'analyse, ainsi que les connaissances subjectives qui peuvent être utilisées dans le jugement.

Conclusion

Réponse peu claire. Lisez, réfléchissez, mélangez et comparez, jugez.

Rien de tout cela ne semble vraiment répondre à la question.Je n'ai pas contre-voté, et vous avez évidemment mis beaucoup de travail à l'écrire, mais honnêtement, cela me rappelle plus [** Existential Comics **] (http://existentialcomics.com/comic/79) qu'autre chose,juste en termes de déconnexion de réalité entre ces philosophes et le monde réel.(La bande dessinée que j'ai liée est très drôle, au fait.) :)
Franchement, je suis déconcerté par cette réponse.La question demandait spécifiquement s'il était éthique de laisser des commentaires subjectifs ou basés sur une opinion.J'ai donc énuméré quelques systèmes d'éthique clairement définis, donné un bref résumé de chacun et comment ils s'appliquent.Comment cela est-il déconnecté?
La question de base est une question oui / non.C'est vraiment "devrait / ne devrait pas" et les différents systèmes d'éthique (et leurs antécédents philosophiques) sont au mieux fortuits, au pire totalement hors de propos.Et à mon avis, aucune de ces «éthiques» n'est clairement définie de manière satisfaisante pour un ingénieur.Aucun de ces philosophes ne donne une définition satisfaisante de style technique du «bien», du «mal», du «bien», du «mal» ou même du mot «éthique» lui-même qui peut être ** utilisé ** pour produire un résultat prévisible.Aucun n'indique quel est le résultat escompté *. Mais cela va au-delà du simple commentaire d'une réponse.
+1 Je pense que c'est une très bonne réponse.Toutes les principales réponses ne sont que les opinions d'une personne et le PO a utilisé le mot `` éthique '' que, pour une raison quelconque, la plupart des gens traduisent dans leur tête par autre chose ...
Dans ce cas, il me semble assez évident que la question est posée du point de vue d'un développeur de logiciel voulant éviter une action contraire à l'éthique dans le contexte de l'emploi.Il est rarement contraire à l'éthique de signaler des informations factuelles importantes aux personnes appropriées
Pablo Urquiza
2017-06-28 06:00:46 UTC
view on stackexchange narkive permalink

Le développeur qui maintiendra ce code (que ce soit vous-même ou une autre personne) ne tirera aucun bénéfice des remarques telles que "contre mon meilleur jugement" et "désolé si vous devez maintenir cela". Les commentaires que vous laissez derrière devraient être utiles pour l'application, c'est leur but.

D'après les deux commentaires que vous avez mentionnés, j'irais avec le second, avec un peu de modification.

Note du développeur: Ce processus est susceptible de s'arrêter si les volumes de données augmentent.

Avez-vous identifié la cause / le point exact de la rupture? Ajoutez-le.

Il aurait été préférable d'utiliser une exportation groupée mais pas possible pour le moment.

"Il aurait été préférable »est au mieux subjectif. Mentionnez simplement qu'une exportation en masse pourrait potentiellement aider à résoudre / atténuer le problème.

Il existe une configuration de journal des erreurs pour alerter si ce processus s'exécute trop longtemps et il peut être trouvé dans X place.

Je voudrais également ajouter quelque chose comme "Les détails de l'échec, la description des scénarios de rupture potentiels et les solutions possibles peuvent être trouvés dans le chapitre X de la 'Problèmes potentiels et mitigations guide.docx "document". Et puis bien sûr ajouter ce document au contrôle de source / référentiel partagé pour qu'il se déplace avec le code.

En tant que chose sans rapport: je réalise ceci devrait être meilleur en tant que commentaire à l'une des bonnes réponses déjà en place, mais je ne peux pas encore ajouter de commentaires, j'ai donc ajouté une réponse à la place.

Stilez
2017-06-28 23:37:42 UTC
view on stackexchange narkive permalink

Commenter et s'assurer que la mémoire d'entreprise est professionnelle au point que les gens devraient le faire plus souvent.

La différence entre vos première et deuxième versions - la première est émotive ("WAH! ILS DOIVENT FAIRE CECI MAIS NE Donc, c'est tout GONNA DIEEEEE! "). Le second est plus factuel, les connaissances dont ils ont besoin, que c'est ad hoc et susceptible de casser, et ce qui peut techniquement être fait, et que vous voulez qu'ils soient conscients de leur propre travail.

Aucun prix qui c'est mieux.

Votre question confond "opinion" et "émotivité".

L'opinion c'est bien, vous êtes payé pour avoir une vue sur les domaines professionnels: "Pas idéal". "" Le choix d'une solution ad hoc peut poser des problèmes, voici quelques informations et comment je suggérerais d'y remédier ". Ou même" Ce n'est pas le meilleur code de classe que nous ayons écrit, mais le temps presse, ce correctif doit être supprimé et le problème sous-jacent traité lorsque nous pouvons persuader quelqu'un de l'inclure dans le budget ". Ce sont toutes des opinions. Même si elles sont exprimées avec force ou ironie.

L'émotion est inutile et contradictoire:" Branleur de patron a exigé cela pour la vitesse parce qu'il ne se soucie pas du risque de corruption des données "." J'aurais dû utiliser la bibliothèque X, mais des merdes stupides en marketing veulent qu'elle se précipite donc elle va probablement casser, j'ai dû la patcher constamment et mes notes sur la façon de le faire sont dans le fichier Y au cas où quelqu'un d'autre en aurait besoin ". (OK, tout est beaucoup exagéré!)

Dans vos exemples, la phrase clé est" contre mon meilleur jugement ". ou susceptible d'être lu comme) "WAH, QUELS IDIOTES!" C'est ce qui rend votre premier émotive. Quelques autres choses aussi mais c'est le gros. N'ajoute rien sauf "IM PISS ED OFFFFFF ET VEUX QUE LE LECTEUR LE SAIT "

Vous voyez la différence?

user57251
2017-06-28 20:19:55 UTC
view on stackexchange narkive permalink

Oui, veuillez laisser des commentaires. Même si ce n'est que pour expliquer pourquoi quelque chose a été implémenté, si une partie du code semble plutôt étrange, mais qu'il y avait une raison spécifique de le faire de cette façon, cela aiderait grandement à savoir pourquoi. Sinon, le prochain risque de "réparer" le code étrange juste pour tomber sur une liste d'erreurs.

La façon dont vous formulez les choses dépend de vous, ne pas tenir compte des préférences personnelles peut être une bonne idée. .

Vous dites "Oui, veuillez laisser des commentaires."qui ne répond pas réellement à la question du PO de savoir quel * type * de commentaires sont (non) professionnels.Vous dites que «laisser de côté les préférences personnelles pourrait être une bonne idée», mais ne donnez aucune expérience ou preuve pourquoi je devrais accepter cela plutôt que quelqu'un qui dit que vous devez absolument mettre vos préférences personnelles en compte.
BЈовић
2017-06-27 16:34:41 UTC
view on stackexchange narkive permalink

Comme expliqué dans "Clean Code" Les commentaires ont tendance à pourrir avec le temps, il est donc inacceptable d'avoir de tels commentaires. De plus, les commentaires sont également considérés comme du bruit: trop de commentaires, et vous devez faire quelque chose de mal.

Si vous avez besoin d'expliquer un algorithme, une implémentation spéciale, une conception ou autre chose, écrivez un document . Expliquez pourquoi quelque chose est implémenté de cette façon et quelles sont les alternatives.

Les commentaires peuvent pourrir, mais au moins ils seront trouvés, contrairement à un document totalement séparé.
@PeterTaylor Voulez-vous dire quelque chose comme ceci: http://thedailywtf.com/articles/A_Collection_Of_Comments?
Le code propre dit "Ne commentez pas ce que vous faites; commentez pourquoi vous le faites"Un commentaire expliquant un algorithme pourrait être considéré comme du bruit;un commentaire expliquant pourquoi cet algorithme a été choisi est presque toujours utile.
Le premier paragraphe est correct, mais je ne suis pas d'accord avec «rédiger un document séparé».Je veux voir l'explication dans un commentaire sur plusieurs lignes immédiatement au-dessus de la classe ou de la fonction de l'algorithme, même si le commentaire prend plus d'espace que le code qui le suit, et même si (ou plutôt: _surtout_ si) l'algorithme est super-compliqué et le commentaire prend quelques pages.
@ScottMermelstein n'hésitez pas à laisser moins de commentaires sur «quoi» et plus sur «pourquoi», mais s'il vous plaît ne laissez aucun commentaire sur «quoi» si le ce qui est compliqué et pourrait avoir besoin d'être travaillé un jour.Vous n'avez pas insisté sur zéro commentaire «quoi», mais je veux juste être sûr.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...