Quels sont vos astuces pour passer outre les limitations des EDI ?
Comme marquer des arrêts dans un code volumineux sans points d'arrêt

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


 Discussion forum

Le , par Hinault Romaric, Responsable Actualités
Les applications contenant des fichiers de source avec des lignes de code volumineux sont très souvent sujet à des dysfonctionnements. Les développeurs souhaitent alors retrouver rapidement le bloc ou la ligne qui ne s'exécute pas correctement.

Plusieurs techniques et outils permettent d'effectuer le débogage d'un programme et d'observer son fonctionnement pour apporter des corrections de bugs ou faire des optimisations.

Parmi eux, les points d'arrêt (breakpoints) sont très utilisés. Un point d'arrêt peut être vu comme un signal qui indique au débogueur de suspendre temporairement l'exécution d'un programme à un certain point (tout en gardant les variables, objets et autres en mémoire). Les points d'arrêt sont donc indispensables pour examiner les états à la recherche de violations ou de bugs. Ils sont surtout très pratiques pour l'analyse des codes volumineux.

Cependant, il arrive que certains EDI aient des limitations. Visual Studio par exemple, ne prend plus en compte les points d'arrêt sur les lignes après la 64.000ième ligne de code.

Une limitation assez contraignante pour les développeurs .NET, en particulier les développeurs C++, et également pour du code généré qui s'avère le plus souvent assez volumineux, et dont l'on souhaiterait comprendre le fonctionnement.

Pour la contourner, on peut cependant se tourner vers des astuces comme l'utilisation de l'instruction goto en C++ ou encore l'instruction « Stop » en Visual Basic.

D'autres techniques peuvent encore être utilisées pour réduire et optimiser le code contenu dans un fichier source.

A vous de nous dire celles que vous utilisez.

La notification de Microsoft sur la limitation du debogueur Visual Studio

Et vous ?

Quelles sont vos astuces pour réduire/optimiser le nombre de lignes de code contenu dans un fichier source, ou pour marquer des temps morts et analyser votre code sans passer par des points d'arrêt ?

Que conseillez-vous dans ce cas ?


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


 Poster une réponse

Avatar de Psycadi Psycadi
http://www.developpez.com
Membre confirmé
le 29/06/2011 10:37
Citation Envoyé par Louis-Guillaume Morand  Voir le message
500 lignes?! utilise des patterns genre MVVM et tu verras que rien qu'une classe modèle avec 20 propriétés fait déjà la moitié de ta "limite".

Ouais, en effet, les 500 lignes c'est un peu juste. Je crois que j'ai été traumatisé par le code javascript qu'on m'a donné à reprendre récemment.
Avatar de mister3957 mister3957
http://www.developpez.com
Membre chevronné
le 29/06/2011 12:12
Citation Envoyé par Uther  Voir le message
Ce genre de problème arrive malheureusement souvent quand on a recours a des systèmes des générateurs de code automatique qui s’embarrassent rarement de ce genre de concept

Certes c'est moche, mais tu n'as malheureusement pas toujours la maitrise de tout ça. Souvent tu es obligé de faire avec ce qu'on te donne.

Exact !
Avatar de SnakemaN SnakemaN
http://www.developpez.com
Membre Expert
le 29/06/2011 13:42
Ma problématique et différente, mais sur Android, il m'est souvent arrivé d'utiliser d'autre bidouilles en plus de LogCat (Fonction standard de l'api pour logguer des messages d'information avec plusieurs niveau)

J'utilise soit des pop-up informative (Toast) ou carrément des petites pop-up demandant confirmation pour continuer, c'est tout bête mais parfois bien utile.
Et en plus je peux y faire passer plein d'info
Avatar de Aurelien.Regat-Barrel Aurelien.Regat-Barrel
http://www.developpez.com
Expert Confirmé Sénior
le 29/06/2011 14:35
Pour outrepasser la limite des 64000 lignes... Il suffit de modifier le code de ceci :
Code :
1
2
3
4
int main() 
{ 
    return 0; 
}
en cela:
Code :
int main(){return 0;}


(c'est quoi la limite de VS en ce qui concerne la largeur des lignes?)
Avatar de ke2007 ke2007
http://www.developpez.com
Membre actif
le 29/06/2011 15:55
Citation Envoyé par Aurelien.Regat-Barrel  Voir le message
Pour outrepasser la limite des 64000 lignes... Il suffit de modifier le code de ceci :
Code :
1
2
3
4
int main() 
{ 
    return 0; 
}
en cela:
Code :
int main(){return 0;}


(c'est quoi la limite de VS en ce qui concerne la largeur des lignes?)

+1
Avatar de zeyr2mejetrem zeyr2mejetrem
http://www.developpez.com
Membre Expert
le 29/06/2011 17:38
Citation Envoyé par Aurelien.Regat-Barrel  Voir le message
Pour outrepasser la limite des 64000 lignes... Il suffit de modifier le code de ceci :
Code :
1
2
3
4
int main() 
{ 
    return 0; 
}
en cela:
Code :
int main(){return 0;}


(c'est quoi la limite de VS en ce qui concerne la largeur des lignes?)

Oui tu peux même aller plus loin en créant des types abrégés et en raccourcissant tes variables
Code :
1
2
3
4
5
6
7
8
 
typedef int i;typedef String S; 
// ancien code: 
//int nombreDeFactures = 0; 
//String nomDuClient = "Dupont et Fils"; 
 
//nouveau code: 
i n=0;S N="Dupont et Fils";
Avatar de rt15 rt15
http://www.developpez.com
Membre éprouvé
le 30/06/2011 14:25
Je ne connais pas le résultat en .NET, mais dans une application Windows native (C, Delphi...), on peut mettre DebugBreak dans le code (Entouré de ifdef _DEBUG par exemple ou conditionnel suivant une variable d'environnement).

Cela revient à utiliser l'instruction int 3 du processeur.

Après soit on lance l'appli depuis l'EDI, soit on la lance toute seul avec un PC ou le just in time debugging est correctement configuré vers windbg ou visual.
Avatar de satenske satenske
http://www.developpez.com
Membre éprouvé
le 30/06/2011 18:51
Honnetement, je suis encore étudiant, donc je ne m'imagine pas vraiment, mais est-ce que quelqu’un à déjà écris un code de plus de 64 000 lignes? o_O

Parce que je vois pas bien comment on pourrai ne serait-ce que parcourir le code...
à ce niveau là, il vaut mieux créer plusieurs fichiers!

Il vaudrait mieux que les gens écrivant 64000 lignes de code se mette à lire Coder Proprement ou Code Complete xD
Avatar de istace.emmanuel istace.emmanuel
http://www.developpez.com
Membre confirmé
le 02/07/2011 1:43
Heu... les 64 000 c'est pour une classe ou un fichier ?
(la différence est notable, ne pas oublier les partial)

De plus, une classe de 64 000 lignes, je pense que il y a un problème de conception, ça sent pas mal la classe "foure tout"...
Avatar de joey_5 joey_5
http://www.developpez.com
Invité régulier
le 04/07/2011 9:40
Tout à fait d'accord. Déjà, il est aberrant de ne pas factoriser son code et de ne pas créer des classes dédiées fonctionnalités ou métiers externalisées sous forme de projets (Visual Studio). Les méthodes des événements par exemple ne devrait comporter que quels lignes de codes nécessaires pour appeler des méthodes externalisées et aucun code fonctionnel.
Pour ma part, la plus longue classe que j'ai écrite devait faire 2500 lignes de codes et mon code était très aéré et très commenté et la solution comportait au moins une demi-douzaine de projets. Pour deux bugs en tout et pour tout en prod !
Concentrer son code ou être avar dans sa lisibilité est également une grosse erreur. Cela empêche la relecture du code pour une future évolution et malheureusement pour la maintenance/debug toujours nécessaire voire indispensable lorsque l'on repasse derrière un confrère.
Il faut d'abord et toujours penser à bien coder et laisser le moins de bugs le plus de commentaires et à bien factoriser avant de penser à des problèmes de limitation de lignes de codes qui sont immanquablement des preuves de mauvaise méthode de travail.
La factorisation amène également une extrême rapidité des process !
La seule problématique est celui des pages web, principalement en asp.net très gourmande en lignes de codes. Plus particulièrement le code-behind ou l'emploi des controls tels le repeater, control de binding à sens unique, alourdit considérablement le code nécessaire.
Mais heureusement JQuery est maintenant là pour le coté page et permet de ne plus mettre, ou presque, de code javascript dans celles-ci lorsque l'on encore obligé de faire des pages asp.
Avatar de squelos squelos
http://www.developpez.com
Membre régulier
le 04/07/2011 15:57
Entity Framework des fois génère des trucs assez impressionnants.

Une trentaine de tables ca represente pas loin de 9000 lignes de code dans un seul fichier. Je sais pas si au dela il coupe en plusieurs partials class, mais cela m'étonnerait.

Donc en pratique, je n'ai jamais été limité par mon IDE.
Offres d'emploi IT
Chef de projet H/F
CDI
PERTIMM DEVELOPPEMENT - Ile de France - Asnières-sur-Seine (92600)
Parue le 11/09/2014
Technicien support informatique (H/F)
CDI
NTI - Picardie - BEAUVAIS (60000)
Parue le 11/09/2014
Technicien systèmes et réseaux h/f
CDI
Kobaltt - Bretagne - Brest (29200)
Parue le 12/09/2014

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

PlanetHoster
Ikoula