L'homme est un fou pour l'homme. Toi qui viens de me mettre un aie au moins le courage d'expliquer pourquoi tu n'es pas d'accord.
Personne n'à parlé de l'opérateur "down to" ?
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int i = 42; while(i --> 0) { // ... }
Aussi, pour plus de clarté toujours donner des conditions complètes
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int a,b; if(((a == 0) && (b == 0)) == true) { return true; } else { return false; }
En lisant un bouquin sur le Javascript avancé, je suis tombé sur l'instruction "with".
Je n'avais jamais entendu parler de ce truc, et pour cause, l'auteur déconseille de l'utiliser pour cause de lisibilité.
Ca peut être très utile pour coder salement par contre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var a, x, y; var r = 10; with (Math) { a = PI * r * r; x = r * cos(PI); y = r * sin(PI / 2); }
Vous voulez dire que
vous semble trop longue comme ligne de code? J'ai également un écran de 17", vous exagérez là... (Par contre, j'aurais bien aimé tordre le cou de celui qui a nommé les attributs de la classe lors de l'analyse).
Code : Sélectionner tout - Visualiser dans une fenêtre à part m.getFkolfactiveFinesseEtComplexite().setIdolfactiveFinesseEtComplexite(millesimeController.getOlfactiveFinesseEtComplexiteController().getEjbFacade().findByName(millesimeController.getOlfactiveFinesseEtComplexiteController().getCurrent().getNom()).getIdolfactiveFinesseEtComplexite());
Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".
Bon, on est tous d'accord pour dire que le type même du sale code est celui :
- non commenté
- aux noms de variables et fonctions improbables
- sans indentation
mais il ne faut pas oublier également :
- les includes appelés et non utilisés
- les fonctions qui ne servent à rien
mais le pire du pire du pire pour moi, c'est l'invention de l'ofuscation de code. Non seulement ça ne sert plus à rien depuis des années. On a trouvé le truc pour voir votre code les gars, inutile de le planquer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function maSuperFonction() { return; }
"La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"
Et bien non je ne suis pas d'accord. A partir du moment où ton code est propre et où les variables ont des noms cohérents la plupart des commentaires (95%) est inutile.
Quant à l’offuscation il y a encore pire, les langages maison (hop le développeur est enfermé chez nous il capitalisera aucune expérience à part chez nous héhéhé).
L'homme est un fou pour l'homme. Toi qui viens de me mettre un aie au moins le courage d'expliquer pourquoi tu n'es pas d'accord.
Certes, mais en même temps, si tu veux coder salement (ce qui est le but de la discussion) et que ton code est propre, bien indenté, avec une logique cohérente et des noms de variables judicieux, c'est que tu codes salement comme un porc !Envoyé par Mr_Exal
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
Pour le moment je bosse avec "un développeur" qui me pond régulièrement des exemples assez fantastiques :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $gallery = $fields['gallery']; $count =1; if($gallery !== NULL): foreach($gallery as $image_gallery): ?> <img data-id="<?php echo $count;?>" src="<?php echo $image_gallery['sizes']['news-large'];?>" alt="" /> <?php $count++; endforeach; endif; ?>
Bien-sûr encore là ça va, il suffit d'intenter, aérer et retirer quelques éléments inutiles, mais il faut imaginer ça quelques fois sur des centaines de ligne, jamais encapsulé en fonctions, avec une redondance du code olympique. Je me souviens d'un cas où j'ai du réécrire complètement 600 lignes compressées en une fonction de 150 pour éviter d'avoir à corriger 10 fois une erreur de variable non déclarée dans un bout de code copié-collé.
On peut aussi rajouter dans son code des trucs totalement idiots, totalement inutiles, mais qui marchent...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Object objetJamaisNull = ... ... if (objetJamaisNull.equals(null) || .... ...
(je viens de tomber dessus dans un bout de code sur lequel je bosse, et j'ai bloqué pendant 5 minutes sur mon écran... A essayer de comprendre comment ils ont pu en arriver là.. J'ai toujours pas compris...)
Je ne suis pas mort, j'ai du travail !
"La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"
Le tutoriel sur l'art de programmer salement est très intérssant, cependant il manque tout le chapitre concernant la programmation orientée objet.
En effet, c'est dingue tous les trucs crades qu'on peut faire avec de la POO...
Le but ici, c'est d'éparpiller le code absolument partout. Par exemple :
- on peut commencer par avoir une énorme hiérarchie de classes avec au moins 4 ou 5 niveaux d'héritage
- au lieu d'utiliser un Décorateur ou un Composite, définissez autant de sous-classes qu'il existe de combinaisons possibles (déjà vu sur un projet réel)
Maintenant qu'on a des classes dans tous les sens, place à l'implémentation des méthodes...
- très important pour la "lisibilité" : utilisez des méthodes courtes, qui appellent d'autres méthodes. Appliquez ce conseil à la lettre, sauf que les différentes méthodes en question seront implémentées à des niveaux différents de la hiérarchie...
- grâce à la magie du polymorphisme, il devient extrêmement difficile de savoir laquelle des classes parentes implémente la méthode en question
- pour encore plus de confusion, usez (et abusez) du pattern Template Method (dans lequel la structure d'un algorithme est défini dans la classe parente, mais le comportement est implémenté dans l'une des classes filles)
Mais mon pattern préféré, cela reste "Dependency Injection", ou "comment transformer toutes les erreurs de compilation en erreurs d'execution" . Combinez "Dependency Injection" avec tout ce qui a été dit ci-dessus, c'est juste magique !
Après, on peut faire des trucs rigolos en abusant des exceptions ou en introduisant des comportements non-déterministes (traduction : "ça bug, mais seulement de temps en temps, et c'est quasiment impossible à reproduire de manière consistante" ) mais ça, ce sera pour un autre chapitre...
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
En parlant de POO, le même type avait des trucs rigolo aussi : le constructeur et une bonne partie des méthodes d'une classe parent était recopié dans ses descendants directs
Vous le savez, l'utilisation de l'opérateur ! (not) est moche et pas très lisible.
Bannissez donc le not de tous vos programmes et soyez imaginatifs pour vous en sortir
Plutôt que d'écrire
Utilisez la notation ci-dessous, bien plus vicieuse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for (MonObjet o : maListe){ if (!o.hasProperty(){ // plein de code } }
Abusez de l'opérateur ternaire de manière inversée !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for (MonObjet o : maListe){ if (o.hasProperty()){ continue; } // plein de code }
Ou soyez vicieux
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (myBoolean?false:true)
Très vicieux
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (myBoolean^true)
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (myBoolean^true?true:false)
Je ne suis pas mort, j'ai du travail !
Cela me fait penser à un truc: j'ai inversé mes booléens pour éviter de faire le non. Et c'est assez tordu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 bool has_no_error = true; while(has_no_error) { // ... // Error has_no_error = false; // ... } return (!has_no_error); // <- :-)
ARRRGH
C'est quoi ce joli code lisible et compréhensible du premier coup ?
Fais le minimum, renomme la variable histoire qu'elle indique au moins l'inverse de ce qu'elle est censée faire ! (je recommande systématiquement lors de l'utilisation de variables booléennes d'ailleurs)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 bool has_error = true; while(has_error) { // ... // Error has_error = false; // ... } return (!has_error); // <- :-)
Je ne suis pas mort, j'ai du travail !
http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main
Manque pas un "else {}" devant votre "//plein de code"....
La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager