Assurancetourix |
Voir le profil public |
Trouver plus de messages par Assurancetourix |
Aller à la page... |
Reconversion pour coder : pertinence, moyens, débouchés…
Suivre Répondre |
|
Partager | Rechercher |
|
"Les maths ne servent à rien pour coder" -> ça va énormément dépendre du secteur/type de logiciel. Un minimum de bagage(~les maths de lycée en S) ne fait pas de mal pour le quotidien. |
28/04/2017, 15h27 |
|
Caniveau Royal |
Voir le profil public |
Trouver plus de messages par Caniveau Royal |
|
Je ne souhaite pas partir un débat ici sur les commentaires, mais les exemples que tu donnes (/* Je récupère la liste des articles en promotion */) sont tout ce que je combat journalièrement dans le code. D'ailleurs ça porte un nom: Du Mumbling.
C'est inutile, lourd, et s'il faut fouiller dans 30.000 lignes d'instruction, il y a un problème d'architecture. Au lieu de mettre un commentaire qui ne sera ni maintenu, ni mis à jour, il suffit d'extraire une fonction getOnRebateArticlesList() du code existant. Ma philosophie du commentaire est décrite dans le livre suivant: http://www.goodreads.com/book/show/3735293-clean-code Pour faire très court : - Why: OK, rarement nécessaire: "Je fais cette boucle de cette façon là pour telle et telle raisons que tu ne pourras pas deviner avec le code". Exemple: Code:
/* The unchecked conversion and suppress warning are valid for the following reasons: * - The cast is actually type safe * - Restrictions on java Enums in 1.65 prevents us to find another solution that would not implicate duplicated code */ @SuppressWarnings("unchecked") public static <E extends Enum<E> & IDisplayableEnum> E[] getDisplayablesValues(Class<E> iClass, E[] iValues) Les commentaires de type HOW finissent toujours par mentir et ne plus refléter ce que fait réellement le code. Quand c'est couplé à du code pourri, on en arrive à se demander si c'est le commentaire qui ment, ou le code qui est bugué (vécu). Ton analyste aura l'air bien fin ce jour là. Un exemple tiré du livre (et qui accessoirement, s'est retrouvé dans notre standard comme contre exemple): Code:
// repaint calendar day for ( final CustomCalendarDay item : getCalendarDays ()) { item . setOpeningHours ( dayCode , startTime , endTime , isOverTime ); } 1. There was a repaint happening some commits ago. The comment is obsolete! 2. There was a repaint happening some commits ago. That it's gone was an accident! 3. There was no repaint happening so far. But it should have been added by now! 4. The repaint is still happening as an hidden side effect somewhere in the code! 5. The developer actually wanted to type //repeat for all calendar days Le commentaire, c'est comme la notation hongroise, c'était important quand il était impossible de faire du code lisible. Aujourd'hui, il y a bien des choses qui peuvent être vues comme impolies par des gens ancrés dans leurs habitudes mais qui sont en réalité de bien meilleures pratiques. Et la tendance de fond, c'est que le commentaire est un code smell. Citation :
Dernière modification par Zangdar MortPartout ; 28/04/2017 à 19h42. |
28/04/2017, 19h25 |
|
Zangdar MortPartout |
Voir le profil public |
Trouver plus de messages par Zangdar MortPartout |
Caniveau Royal |
Voir le profil public |
Trouver plus de messages par Caniveau Royal |
Zangdar MortPartout |
Voir le profil public |
Trouver plus de messages par Zangdar MortPartout |
Caniveau Royal |
Voir le profil public |
Trouver plus de messages par Caniveau Royal |
Zangdar MortPartout |
Voir le profil public |
Trouver plus de messages par Zangdar MortPartout |
Caniveau Royal |
Voir le profil public |
Trouver plus de messages par Caniveau Royal |
Zangdar MortPartout |
Voir le profil public |
Trouver plus de messages par Zangdar MortPartout |
|
Citation :
1) Les tests unitaires, qui s'exécutent après la compilation mais avant que le projet/module (qui est une partie de l'application à produire) réalise son son édition de lien/production d'artefact.Et donc sur ton existant, Lorsque tu arrives sur un existant qui a plusieurs millions de lignes de code, il y a en général trois situations : - Soit les tests unitaires sont là et tu les poursuis. - Soit ils n'ont jamais été écrits. - Soit ils ont étés écrits mais ont étés mis en ignore / skip tests depuis longtemps. Deux raisons à cela : - On a demandé à l'équipe des évolutions trop rapidement sur l'existant, et elle n'a pas eu le temps de ré-accorder les tests avec le code applicatif, alors elle a mis un ignore. Tests Unitaires = à la compilation. Si les tests unitaires sont trop lents, 50% à 100% de l'équipe va finir par mettre un skipTests dans ses directives de compilation et ils ne serviront plus à rien...S'il n'y a aucun test unitaire, il y a toutes les chances que le code ne s'y prête plus depuis longtemps. Ce que tu feras en tests unitaires (sur des objets autonomes) risque d'être insignifiant en comparaison de la masse de code non testée. Tu ne pourras pas plus mettre de tests d'assemblage, qui réclament une mise en place initiale d'un script et d'outils dédiés (ticket d'installation : environ 10 jours de boulot...). Il risque de ne pas y avoir d'issue par là. Que faire ? Lorsque je tombe dans un code qui a l'air instable, qui n'est pas testé, le mieux est d'agir en refactoring et en programmation défensive. Sur une classe qui aura un nombre de ligne trop grand ou un code incompréhensible : 1) Recherche des notions qu'elle aborde : agit-elle sur une chose, deux choses, trois choses, dix choses ?Le but est de parvenir à reformuler dans ses classes le réseau de Petri le plus fin possible qui les représente le mieux. Des fonctions courtes, où chaque place représente un unique état, tel que : - l'état initial est commenté par le commentaire au dessus de la fonction "à partir de ceci, je fais faire cela"Le programme est fait pour le client, à destination des gens qui y exercent leur métier. Le réseau de Pétri représente ce qu'ils ont demandé. Quand on le lit, on lit ce que l'on a demandé et l'enchaînement pour le faire. Un analyste fonctionnel en comprend la grande majorité ou bien il y a un problème. Les commentaires que l'on lit dans le programme sont en rapport avec ce déroulé. Ça fait une bonne dizaine d'années que je fais du refactoring et du sauvetage d'application chez des clients en situation difficile. à la manière où il y a de bonnes cuisines de restaurants bien organisées et de mauvaises qui sont brouillonnes, mauvaises et lentes, ou bien des services comptables alertes et précis, et d'autres qu'il faut alerter, surveiller et corriger, l'informatique a tous les environnements de travail qu'on peut imaginer : du meilleur au moins bon. Le quotidien sera de profiter des unes et de réparer les autres. Je ne connais pas beaucoup de métiers où ce soit très différent. Dernière modification par Caniveau Royal ; 29/04/2017 à 07h42. |
29/04/2017, 07h14 |
|
Caniveau Royal |
Voir le profil public |
Trouver plus de messages par Caniveau Royal |
|
Le truc cool, c'est que si après avoir lu les dernières réponses, l'op a toujours envie de faire ce boulot, il est vraiment motivé :>
|
29/04/2017, 07h32 |
|
Suivre Répondre |
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|