Précédent   Forum du club des développeurs et IT Pro > Le club des professionnels en informatique > Actualités
Actualités L'actualité des sociétés du secteur informatique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 04/11/2009, 17h03   #81
Théolude
Membre du Club
 
Inscription : mars 2007
Messages : 165
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mars 2007
Messages : 165
Points : 68
Points : 68
[QUOTE=hermes1983;4765678]Alors moi, je pense que le truc le plus incroyable a été de chercher un jour sous quelle condition je recevais la valeur "E000:R" via un socket TCP. Je suis tombé sur le code suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    if(
        !checkTag(session->barcode, "TRANSIT") &&
        (
         (!strcmp(mode, F_IT) && ((g_comlabel!=0 && !checkTagValue(session->barcode, "TYPE", "COMMON")) || checkTag(session->barcode, "RELABEL")) && (session->isnprint || !checkTagValue(session->barcode, "CPEX", "N"))) ||
         (!strcmp(mode, "RELABEL") && !strcmp(szStr1, "FR")) ||
         (!strcmp(mode, F_IT) && checkTag(session->barcode, "REBUILD")) ||
         (g_comlabel && strcmp(mode, F_IT) && strcmp(mode, "RELABEL") && (!checkTagValue(session->barcode, "TYPE", "COMMON") /*|| checkTagValue(session->barcode, "EXPORT", "Y")*/) && (session->isnprint || !checkTagValue(session->barcode, "CPEX", "N")) ) ||
         (!g_comlabel && strcmp(mode, F_IT) && strcmp(mode, "RELABEL") && checkTag(session->barcode, "RELABEL")) ||
         (g_frinitcheck && !strcmp(mode, F_IT) && !checkTag(session->barcode, "COMIMP") && checkTagValue(session->barcode, "TYPE", "COMMON") && !frCheckRoute(session->barcode))
        ) 
      )
    {
        strcpy(data, "E000:R");
        // Autres trucs imbitables
    }
OUAHHHHHHHHHHHHHHHHHHHH Mon préféré !!
Ce que j'aime le plus, ce sont les commentaires de certaines conditions !!!! Totalement ouf !!!!!!

Pas mieux
Théolude est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/11/2009, 23h12   #82
Alain Defrance
Expert Confirmé
 
Avatar de Alain Defrance
 
Homme Alain DEFRANCE
Project Lead
Inscription : août 2007
Messages : 1 994
Détails du profil
Informations personnelles :
Nom : Homme Alain DEFRANCE
Âge : 25
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Project Lead

Informations forums :
Inscription : août 2007
Messages : 1 994
Points : 3 487
Points : 3 487
Envoyer un message via MSN à Alain Defrance Envoyer un message via Skype™ à Alain Defrance
Citation:
Envoyé par hermes1983 Voir le message
J'avais écrit ça une fois sans faire gaffe en Java, et je m'en suis rendu compte dans le debugger. Maintenant, voilà pourquoi je me permets de faire un commentaire : le compilateur (Java 6) avait remplacé le == par un appel à equals sans me le dire, et le watch du debugger que j'avais fait par copier/coller n'avait pas fait cette substitution. Il m'en a fallu du temps pour comprendre ça...
Interessant comme expérience, mais est-tu sûr de toi ? As-tu tenter de décompiler ton .class afin de voir ce qu'il se passe ? En fait je suis peut-être dans le faux mais j'ai jamais vu ce comportement à la compilation.

Si on prend :
Code :
1
2
3
4
5
6
public class M {
    public static void main(String[] argv) {
        String a1 = "a", a2 = "a";
        System.out.println(a1 == a2);
    }
}
Après décompilation on obtient :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class M
{

    public M()
    {
    }

    public static void main(String args[])
    {
        String s = "a";
        String s1 = "a";
        System.out.println(s == s1);
    }
}
Bien évidement ca renvoit true

A noter que si dans le sout on fait un "a" == "a" sans variable intermédiaire, après la compilation on observera System.out.println(true);
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com
Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
Project Lead eXo Social
Java Black Belt - Java Black Belt Coach
Alain Defrance est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/11/2009, 08h54   #83
bubulemaster
Membre chevronné
 
Développeur Java
Inscription : mars 2004
Messages : 619
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : mars 2004
Messages : 619
Points : 630
Points : 630
Citation:
Envoyé par Théolude Voir le message
Citation:
Envoyé par hermes1983 Voir le message
Alors moi, je pense que le truc le plus incroyable a été de chercher un jour sous quelle condition je recevais la valeur "E000:R" via un socket TCP. Je suis tombé sur le code suivant :
OUAHHHHHHHHHHHHHHHHHHHH Mon préféré !!
Ce que j'aime le plus, ce sont les commentaires de certaines conditions !!!! Totalement ouf !!!!!!

Pas mieux
+1, il est génial ce code !
bubulemaster est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/11/2009, 08h57   #84
meddle
Membre éclairé
 
Inscription : août 2006
Messages : 218
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : août 2006
Messages : 218
Points : 301
Points : 301
Un de mes élèves m'a présenté une application avec cette portion de C++ qui m'a fait rêver :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
// On ouvre le fichier
...

// On stocke les lignes dans un tableau
i = 0;
try {
    while (1) {
         tablo[i++] = fichier.readLine();
    }
} catch (...) {
    // On fait le traitement du tablo
}
C'est propre et efficace !

Laurent
meddle est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 05/11/2009, 10h19   #85
jdeboer
Invité régulier
 
Inscription : juin 2003
Messages : 20
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 20
Points : 7
Points : 7
Envoyer un message via AIM à jdeboer
Citation:
Envoyé par monsieurben Voir le message
J'ai bossé avec un presta tellement nul que je sais pas trop quel bout de code choisir.

J'ai eu droit à celui-ci, plutôt pas mal :

Dans une page de traitement d'un formulaire :

Code :
1
2
3
4
5
<?php 

$nom = post('nom');
$prenom = post('prenom');
[...]
Et dans un fichier inclus, ladite fonction :

Code :
1
2
3
4
<?php
function post($var) {
return $_POST['$var'];
}
.
A part le nom de la fonction (je l'aurai appellé getParameter), je ne vois pas le problème. Je trouve cela justement élégant. Je ne suis pas expert PHP mais si un jour, on te dit que tu dois récupérer les variables en GET et non plus en POST. Tu modifies uniquement ta fonction post (oui le nom n'est pas terrible).

Code :
1
2
3
4
function post($var) {
return $_GET['$var'];
}
Et tu n'as pas besoin de remplacer tes 5000 $_POST, si tu n'avais pas utilisé de fonction post. On peut aussi imaginer que tu veuilles faire un traitement particulier par la suite (que faire si la variable est null ou vide, tu peux alors faire un traitement générique).


Donc je trouve cela justement élégant meme si ca parait lourd. La personne qui a développé a pensé à l'évolution future du produit.
jdeboer est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 11h02   #86
Bourgui
Membre chevronné
 
Homme Rémi BOURGAREL
Développeur .NET
Inscription : juin 2006
Messages : 425
Détails du profil
Informations personnelles :
Nom : Homme Rémi BOURGAREL
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : juin 2006
Messages : 425
Points : 604
Points : 604
Je rajouterai que si t'as des besoin de sécurité (injection sql, xss et autre), tu peut ajouter tes règles de sécu à cet endroit.

A mon taf on avais ce genre de fonction, et ils ont développé 5-6 ans sans savoir ce qu'était l'injection sql. Un beau jour ce qui devait arriva : grosse injection de d'iframe dans nos champ texte on a réussi a récupérer la base et a se protéger en 1 demi journée et on est sur que c'est bon.
Bourgui est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 11h30   #87
phantomass
Membre actif
 
Inscription : novembre 2006
Messages : 156
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 156
Points : 169
Points : 169
Citation:
Envoyé par gailuris Voir le message
Bonjour,

ça m'a fait rire, j'ai eu le même, mais j'ai eu l'explication, quand on utilise checkstyle (ou d'autres outils surement), on peut interdire l'utilisation de "magic number" (de nombres utilisés en dur, en toutes logique si j'utilise le nombre 32 dans un programme il a une signification et je peux donc lui créer une constante ayant un nom qui ait un sens) mais certains développeurs ne comprenant pas pourquoi ils ont une erreur (ou un warning) et a qui on n'a pas expliqué les principes de bases de la qualité de codes font ce genre d'abbérations.

C'est de la qualité pour faire plaisir à l'outil => on abouti à l'inverse d'un code de qualité.
Effectivement, c'est très vraisemblablement à cause de checkstyle que le développeur a fait ce code car effectivement nous imposons des contraintes qualitatives basé sur cet outil.
phantomass est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 12h00   #88
kerflyn
Candidat au titre de Membre du Club
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 14
Points : 14
Ce n'est pas un bout de code, mais imaginez:
  • Un code en Java avec pakages/classes/methods (normal quoi)
  • Des classes longues et des méthodes longues (un classique)
  • Tout est en static même les référrences

Dans ce cas et plus que jamais, il faut comprendre comment est-ce que l'interpréteur Java fonctionne et à quel moment précis il effectue tel ou tel action. Car on peut s'attendre dans ce cas à des NullPointerException en pagaille. Le développeur (il a fait ça tout seul) n'avait pas compris l'intérêt de la programmation objet. Il en était resté à Pascal et avait essayé de retrouver l'environnement Pascal dans Java.

C'est vraiment horrible ! Comment peut-on faire un truc pareil ?
kerflyn est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 12h12   #89
jabbounet
Expert Confirmé
 
Avatar de jabbounet
 
Homme frederic frances
Consultant informatique
Inscription : juin 2009
Messages : 1 848
Détails du profil
Informations personnelles :
Nom : Homme frederic frances
Âge : 37

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : juin 2009
Messages : 1 848
Points : 2 674
Points : 2 674
Citation:
Envoyé par kerflyn Voir le message
Ce n'est pas un bout de code, mais imaginez:
  • Un code en Java avec pakages/classes/methods (normal quoi)
  • Des classes longues et des méthodes longues (un classique)
  • Tout est en static même les référrences

Dans ce cas et plus que jamais, il faut comprendre comment est-ce que l'interpréteur Java fonctionne et à quel moment précis il effectue tel ou tel action. Car on peut s'attendre dans ce cas à des NullPointerException en pagaille. Le développeur (il a fait ça tout seul) n'avait pas compris l'intérêt de la programmation objet. Il en était resté à Pascal et avait essayé de retrouver l'environnement Pascal dans Java.

C'est vraiment horrible ! Comment peut-on faire un truc pareil ?

clair comment as t'ont oser forcer un développeur a faire du java, quel torture que de faire du java ....
jabbounet est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/11/2009, 12h15   #90
gmotw
Membre éprouvé
 
Avatar de gmotw
 
Inscription : mars 2008
Messages : 384
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 384
Points : 444
Points : 444
Dans du code action script que je maintiens:
Code :
1
2
3
4
5
6
7
8
if (condition)
;
;
;
;
;
;
...

Je suis pas experte là dedans, mais c'est normal si je ne vois pas l'intérêt?

Et sinon, j'avais vu de belles choses en java, mais mon esprit a effacé de lui-même les souvenirs pour éviter les traumatismes.
__________________
THIS!IS!NOT!MY!COW!

CECI!N'EST!PAS!MA!VACHE!
(mais je persiste à dire que c'est moins classe en français )
gmotw est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 05/11/2009, 15h45   #91
dtrosset
Membre actif
 
Inscription : juillet 2008
Messages : 176
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 176
Points : 187
Points : 187
Oh, juste un petit truc sympa, en C++, mais sans utiliser la librairie standard. Presque du C en fait.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
struct Object {
    Object *next;
    int value;
};

Object head = { NULL, 0 };

void PushObject(Object *obj) {
    Object *tail = &head;
    while (tail.next != NULL)
        tail = tail.next;
    obj.next = NULL;
    tail.next = obj;
}

Object * PopObject() {
    Object *tail = &head;
    Object *prevtail = NULL;
    while (tail.next != NULL) {
        prevtail = tail;
        tail = tail.next;
    }
    if (tail != &head) {
        prevtail.next = NULL;
        return tail;
    }
    return NULL;
}
Bien que fonctionnel et sans bug (j'espère en fait, car j'ai réécrit ici du code vieux de 15 ans environ) le produit est sorti avec ça dedans.

Pour rajouter un objet sur une pile, en parcourt toute la pile et on ajoute l'objet à la fin. Pour le retirer, on parcourt à nouveau toute la pile, et on l'enlève. Ce programmeur n'avait pas du tout compris l'intérêt des piles !

Heureusement qu'il n'y avait pas trop d'éléments à empiler et dépiler ...

Didier
dtrosset est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/11/2009, 15h54   #92
Mat.M
Expert Confirmé Sénior
 
Développeur informatique
Inscription : novembre 2006
Messages : 4 445
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 4 445
Points : 5 864
Points : 5 864
Citation:
Envoyé par dtrosset Voir le message
Pour rajouter un objet sur une pile, en parcourt toute la pile et on ajoute l'objet à la fin. Pour le retirer, on parcourt à nouveau toute la pile, et on l'enlève. Ce programmeur n'avait pas du tout compris l'intérêt des piles !

Heureusement qu'il n'y avait pas trop d'éléments à empiler et dépiler ...

Didier
euuh je ne comprends pas ce que tu veux dire : tu veux dire que le programmeur aurait du utiliser un conteneur de la STL plutot que des listes chainées du C ?
Mat.M est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/11/2009, 15h56   #93
Mat.M
Expert Confirmé Sénior
 
Développeur informatique
Inscription : novembre 2006
Messages : 4 445
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 4 445
Points : 5 864
Points : 5 864
Citation:
Envoyé par Lung Voir le message
Le compilateur Delphi interdit la modification de la variable utilisée par une boucle for.
ok merci pour l'info
Mat.M est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 15h58   #94
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 815
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 815
Points : 16 461
Points : 16 461
Citation:
Envoyé par Mat.M Voir le message
euuh je ne comprends pas ce que tu veux dire : tu veux dire que le programmeur aurait du utiliser un conteneur de la STL plutot que des listes chainées du C ?
Je pense qu'il voulait dire que c'était plus rapide d'ajouter/retirer l'element en début de liste, plutot que d'aller systematiquement à la fin.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 16h02   #95
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 383
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 383
Points : 32 020
Points : 32 020
Envoyer un message via MSN à Médinoc
Les deux, je pense. Une std::stack< Object, std::list<Object> > aurait fait une pile chaînée mieux gérée...
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 16h07   #96
galyathee
Membre du Club
 
Développeur informatique
Inscription : mars 2009
Messages : 54
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2009
Messages : 54
Points : 43
Points : 43
petite lecture ... si jamais personne ne l'a cité avant:
http://fr.wikibooks.org/wiki/Program...code_illisible
galyathee est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 16h08   #97
Bourgui
Membre chevronné
 
Homme Rémi BOURGAREL
Développeur .NET
Inscription : juin 2006
Messages : 425
Détails du profil
Informations personnelles :
Nom : Homme Rémi BOURGAREL
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : juin 2006
Messages : 425
Points : 604
Points : 604
Un joli truc dans une vieille partie du système, pour appeler un webservcie externe :

Post sur page asp => procedure stockée sql => procedure stockée clr => webservice interne (oui on s'auto appelle et vu que c'est dans 2 appli différentes, la requète http est faites ) => webservice externe

... quand tu connais pas le truc et que tu debuggue t'a l'impression de chasser le dahut.
Bourgui est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 16h16   #98
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 383
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 383
Points : 32 020
Points : 32 020
Envoyer un message via MSN à Médinoc
Citation:
Envoyé par galyathee Voir le message
petite lecture ... si jamais personne ne l'a cité avant:
http://fr.wikibooks.org/wiki/Program...code_illisible
Ça a l'air sympa. Je connaissais How To Write Unmaintainable Code de Roedy Green, aussi.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 16h37   #99
Gunny
Membre actif
 
Avatar de Gunny
 
Inscription : avril 2007
Messages : 142
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 142
Points : 185
Points : 185
Un ami vient de me dire ça sur msn :

Citation:
X dit:
J'ai lu un test ya pas longtemps

X dit:
Une fonction qui prend vrai ou faux en paramètre, si c'est vrai il met ok dans un string, si c'est faux ko, et après il compte le nombre de k qui suivent un o pour savoir si les tests ont tous réussi.
Gunny est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2009, 16h57   #100
BainE
Membre Expert
 
Avatar de BainE
 
Inscription : mai 2004
Messages : 1 307
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 307
Points : 1 185
Points : 1 185
change d ami et vite
__________________
"vaste programme"
BainE est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h43.


 
 
 
 
Partenaires

Hébergement Web