"Nos petits trucs utiles de développeurs"
Et si on partageait nos astuces et nos trouvailles de programmation ?

Les rubriques (actu, forums, tutos) de Développez
Réseaux sociaux


 Discussion forum

Le , par Droïde Système7, Membre Expert
Bonjour

J'espère que je poste dans le bon forum, sinon merci à la modération de rediriger ce thread.

Depuis longtemps, j'avais envie de créer quelque chose de très utile pouvant servir à tout le monde et surtout soit au niveau débutant, mais puisse, pourquoi pas, également servir aux autres.

Voici donc un thread entièrement consacré aux petits trucs sans prétention bêtes comme choux, mais très efficaces à l'usage.

Il ne s'agit en aucun cas de code compliqué ni de manipulation de haut vol ; tout le contraire et accessible à tous.

Je vous invite pour notre plus grand plaisir de développeurs d'ajouter vos trucs.

Aller, je commence...

  • BUT : Comment s'y retrouver dans une feuille de plusieurs milliers de lignes, lorsque l'on réalise des modifs un peu partout éparpillées dans différentes procédures et fonctions ?

C'est une technique que je nomme "Mickeytisation". Pourquoi ? hé bien vous allez tout de suite comprendre.
Imaginez une feuille de 50 000 lignes, vous avez repris le code d'une dizaine de procédures et quelques fonctions, alors ensuite si dans les semaines à venir, vous vous apercevez qu'un comportement anormal de votre appli provient (ou peu provenir) de ces modifications ; là intervient ma Mickeytisation.

Exemple :
En face de chaque bloc modifié, je pose au gré de mon imagination un"riri", ou un "loulou", ou encore un "fifi", etc.
Je complémente par le datage de ces modifs afin de mieux m'y retrouver.
Mais attention, chaque "loulou" par exemple correspondra à une seule série de modification.

Code :
1
2
3
4
procedure... 
begin 
...        // loulou   11/2007 
end;
A l'aide de la fonction rechercher de votre EDI, c'est ensuite un jeu d'enfant d'aller consulter chaque bloc modifié correspondant à telle ou telle date. La semaine dernière encore, ce truc m'a bien évité des heures et des heures de recherche !
Ne pas oublier en en-tête de chaque feuille d'écrire la correspondance des modifs, style : "loulou" = ajout option impression... du 17/11/2007

Encore un autre truc :
  • BUT : En plein travail, je dois m'absenter ou bien fermer mon PC, etc., comment retouver rapidement l'endroit exact de ma dernière écriture de code lors de la réouverture de mon EDI ?

Simplement de taper n'importe quel caractère juste à l'endroit que vous étiez avant de passer à autre chose. Suffit en reprenant votre travail de lancer la compil, le compilateur vous indiquera gentiment l'endroit exact en question.

J'espère que ce thread nous sera utile

A vous de jouer et de nous donner vos trucs !



Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de alainvh alainvh
http://www.developpez.com
Membre régulier
le 19/11/2007 13:52
Bonjour DS7 (ton pseudo est trop compliqué pour moi )
Ton idée est intéressante : si ça marche, le problème à terme sera de classer tous les "trucs" afin de s'y retrouver rapidement sans avoir à lire l'intégralité de ton topic.
Je participe donc, au niveau "ras des pâquerettes", mais c'est mon niveau...

En cas de grosses modif, je fais préalablement une copie de mon dossier de projet et je renomme ce nouveau dossier en incrémentant : j'ai ainsi Projet0, Projet1, Projet2, etc... En cas de grosses cata, on peut toujours redémarrer avec le projet précédent.

En cas de petites modif, je copie la procédure à modifier et l'encadre d'accolades { } pour la mettre en remarque : je peux ainsi la récupérer facilement si les nouveautés apportées ont un résultat pire que le précédent...

Cordialement,
Alain
Avatar de Droïde Système7 Droïde Système7
http://www.developpez.com
Membre Expert
le 19/11/2007 14:28
Bonjour Alain,

Tu es le premier à encourager ce fil et je t'en remercie.

En effet, ensuite au niveau du classement... mais ici n'oublions pas notre fameuse équipe de la rédac et anciens confrères que je salue amicalement au passage.

Tu me fais penser à donner ma méthode perso de gestion de sauvegarde.

J'utilise systématiquement chaque jour trois jeux de cartouches Zip, lesquelles tournent à tout de rôle régulièrement que je place dans une autre pièce.

En complément je réalise systématiquement une copie de mon dossier (tout entier) de travail.

Bref, j'ai toujours dans un dossier, deux dossiers : celui d'origine (du travail en cours) et la copie.

Si ça tourne au vinaigre sur l'original, alors je supprime ce dossier d'origine et repars sur la copie et renommant comme le dossier d'origine. Puisque cette copie ne peux dater que du lendemain seulement.

Un développeur sérieux, doit savoir que tout dossier et fichier sur son disque dur, peut être potentiellement perdu un jour.

La fameuse loi de Murphy connue aux tout débuts du monde de l'électronique, ensuite de l'informatique...

Bref, ne JAMAIS faire confiance à UN SEUL support. Toujours multiplier les jeux de sauvegardes sur différents supports hors du PC.

Je ne considère aucunement un disque dur partitionné en un support fiable du fait qu'il comporte plusieurs espaces virtuels. Pour moi il ne s'agit que d'UN seul support au niveau fiabilité de sauvegarde ; rien de plus.

Jean-Pierre (plus simplement )
Avatar de ShaiLeTroll ShaiLeTroll
http://www.developpez.com
Expert Confirmé Sénior
le 19/11/2007 14:44
Vos idées pour la gestion des sources et des modifications sont effectivement à la portée de tous !
Il y a exactement les mêmes choses pour les professionnels, à la différence qu'il y a des outils pour cela, dont certains sont gratuit en plus !

Delphi 7
Jedi VCS (+ Serveur de Version) ou Tortoise SVN
Mantis (~Bug Tracker)
Final Builder ou MS VSS (Payant les deux)

Jedi permet de versionner chaque unité, avec des commentaires de prise en main et de depot (Check Out / In), cela permet d'éviter que plusieurs personnes s'écrasent leur modification

Tortoise, permet aussi de versionner, d'ajoute un commentaire au dépot, dans le comportement standard, il n'y a pas de prise en main, tout le monde peut faire une modif à tout moment, mais un outil permet de merger deux versions modifiées issues de la même version de la branche

Mantis, c'est un outil qui permet de gérer les bugs mais aussi une road map, et dans le code chaque morceau peut se voir ajouter par commentaire, le numéro du Mantis pour assurer la traçabilité, d'ailleurs, il est interessant de mettre un cartouche dans le commentaire de dépot, indiquant le mantis, puis Jedi et Mantis, peuvent être utilisés par SQL, très utile pour générer automatiquement le ReadMe.txt

Actuellement, on ne le fait pas où je travaille, mais avant, tous les sources étaient gravées sur un CD, ainsi qu'une WMWare (environnement poubellisable à volonté) sur DVD, les disques en deux exemplaires par semaine, un au bureau, un dans un coffre !!!

Enfin, FinalBuilder, si l'on l'utilise au mieux, à chaque version, on ajoute un marqueur de version (comme le fait Microsoft Visual Source Safe), pour définir qu'un ensemble de fichier (un projet cela peut-être 4-5 unité comme 200), et évidemment, une génération d'un zip des sources ET Lib (Interne et Externe) pour retrouver l'environnement en cas de déboggage d'une antépénultième version, et en fonction du système de Serveur de Version et du Client, tu peux aussi récupérer le projet pour n'importe quelle version directement à partir de l'outil, créer de nouvelle branche pour corriger un bug sur une ancinne version distribuée, et bien sur, prévoir de faire la modification (ou merge) dans la version suivante (bcp de version ne vont jamais chez le client, ne passant pas la recette)

Sinon, le "truc pour trouver l'endroit exact de ma dernière écriture de code", grand classique, un "DEMAIN, FAIRE le BIDULE" se retrouve très facilement avec un petit coup de F9, mieux vaut noter en clair, ce qu'il faut faire, si on a oublié où on en était cela peut aider ...

Un truc :
BUT : Ecrire un Code à partir d'un Algo compliqué

Il arrive souvent que l'on aie une fonction un peu compliquée impliquant de nombreuses boucles et conditions, bien sur, on peut faire proprement son algo, sous la forme de schéma (MCT, MOT, ...), mais il est toujours utile de commencer dans le source par écrire l'algo sous la forme de texte (en clair, en français), une fois tout l'algo écrit, il suffit de "remplir" de code entre chaque commentaire, ainsi, on a bcp de chance d'avoir un code de qualité, opérationnel respectant l'algo et commenté !
Avatar de Gilbert Geyer Gilbert Geyer
http://www.developpez.com
Modérateur
le 19/11/2007 15:11
Bonjour,

Comme Alainvh Je participe au niveau "ras des pâquerettes" :

BUT : Comment localiser une erreur de logique qui ne provoque pas forcément un plantage ou un message d'erreur:

1 ) Je crée une Form qui comporte un RichEdit si je manque de place dans les Forms du projet.

2) Avant et après le ou les groupes d'instructions que je soupçonne fautives je place des RicheEdit.lines.Add() et des RicheEdit.upDate pour pouvoir suivre l'évolution de valeurs ou de résultats critiques.

3) Pour éviter d'envoyer trop d'infos dans le RichEdit je les précède, si possible, de if ... then pour n'envoyer à la fin de chaque procédure franchie qu'une simple ligne disant par exemple "Procedure tartanpion : bien passé"

4) Avant l'essai suivant suivant je supprime l'envoi des infos inutiles et je rétrécis le domaine des recherches jusqu'à ce que j'arrive à cerner la ligne où cela commence à dérailler.

(un TRichEdit et non un TMemo car on a la possibilité offerte par RichEdit.Print en cas de besoin).

Parfois c'est rapide, parfois c'est la galère, mais comme les compilos ne savent pas détecter toutes les erreurs qu'on peut faire autant se servir de la bécane pour localiser les erreurs.

A+
Avatar de alainvh alainvh
http://www.developpez.com
Membre régulier
le 19/11/2007 15:33
Je procède un peu comme Gilbert Geyer, mais en étant encore plus à "ras des pâquerettes"
Je place un ShowMessage('Ici') et un ShowMessage('Là') de part et d'autre du code qui me semble "dérailler" : puis je resserre cette "tenaille" par dichotomie. En général, je trouve le "bug" assez vite : évidemment, je ne peux pas imprimer de compte-rendu comme le permet RichEdit, mais je n'utilise aucun composant sur la Form !
Avatar de Gilbert Geyer Gilbert Geyer
http://www.developpez.com
Modérateur
le 19/11/2007 16:33
Re-bonjour,

A Alainvh : idem pour moi avec un ShowMessage pour les cas simples sauf à l'intérieur d'une boucle où il faudrait cliquer for i:=1 to N fois sur "OK" lorsque N est élevé.

Par contre :
je resserre cette "tenaille" par dichotomie

... Ok sur je resserre cette tenaille dans le cas où un message d'erreur me localise la 2ième moitié de la tenaille, mais par "dichotomie" je ne sais pas faire (???) je procède à l'avancement dans le style "jusqu'ici tout se passe bien" pour voir à partir d'où ça déraille.

Cela m'éclairerait ma lanterne en précisant comment resserrer la tenaille par dichotomie : c'est quoi l'astuce qui se cache derrière le concept dans le cas présent (j'ai beau penser au tri dichotomique je ne vois pas le rapport).

A+
Avatar de ShaiLeTroll ShaiLeTroll
http://www.developpez.com
Expert Confirmé Sénior
le 19/11/2007 16:38
Pour ma part, j'utilise OutputDebugString qui utilisent le Journal d'évènement de Delphi, mais j'utilise aussi le principe du Memo\RichEdit (j'ai développé une petite fonction Trace, qui affiche les logs de l'appli en temps réel en couleur selon la gravité), le ShowMessage c'est aussi bien pratique (dans une appli converti de DBase à MySQL des opérations DB n'ont pu être comprise et donc traduite, du coup, en mode SUPERUSER, il y a des messages "Je ne sais pas pourquoi, on passe par là" ou "Code non Traduit", et dans l'appli, en fait quelques cas "spéciaux" du coup ne sont plus gérés ...)
Avatar de alainvh alainvh
http://www.developpez.com
Membre régulier
le 19/11/2007 17:11
Re-Gilbert Geyer.
Peut-être bien que j'ai exagérément utilisé le mot dichotomie
Supposons une procédure de 20 lignes.
Je place mon premier ShowMessage en début de procédure et le dernier après la ligne 10.
- cas 1 : ça plante avant l'affichage du dernier, je le remonte après la ligne 5.
- cas 2 : ça plante après l'affichage du dernier, je le replace en fin de procédure et déplace le premier ShowMessage juste avant la ligne 15.
Etc...
En fait, c'est la stratégie bien connue du jeu simpliste où il s'agit de découvrir un nombre choisi secrètement par un tiers (je cite un nombre et on me répond si celui qui a été choisi est plus petit ou plus grand).
Allez, fais-moi plaisir, il y a bien un peu de dichotomie là-dessous...
A plus.
Avatar de pitango pitango
http://www.developpez.com
Membre habitué
le 19/11/2007 17:26
Citation Envoyé par alainvh
évidemment, je ne peux pas imprimer de compte-rendu comme le permet RichEdit

Juste un petit truc auquel , on ne pense pas toujours (c'était mon cas il y a peu)

Sur un showmessage, on peut faire un control C et placer le tout dans notepad et ... l'imprimer.

A+
Avatar de ShaiLeTroll ShaiLeTroll
http://www.developpez.com
Expert Confirmé Sénior
le 19/11/2007 17:32
pitango +1
Excellent !

Je viens d'apprendre un Truc là ! Très Pratique ! C'est une technique à donner aux utilisateurs, au lieu des copie d'écran sous Word
Offres d'emploi IT
Ingénieur expert produit h/f
CDI
Experis Executive - Rhône Alpes - Lyon (69000)
Parue le 25/07/2014
Consultant fonctionnel (h/f)
CDI
Atos Technology Services - Ile de France - Bezons (95870)
Parue le 13/07/2014
Développeur php5
Alternance
IP-FORMATION - Ile de France - Paris (75000)
Parue le 25/07/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula