|
Publicité ' | ||||||||||||||||||||||||
|
|
#61 | ||||||
|
Membre éprouvé
![]() Développeur informatique Inscription : octobre 2005 Messages : 203 ![]() |
Presque toutes les normes de codage peuvent paraître très logique à quelqu'un et très étrange à quelqu'un d'autres. Il faut dire aussi que les raisons pour l'existence de certaines de ces normes peuvent être valables dans un certains contextes et beaucoup plus discutable dans d'autres (Cas de la notation hongroise ci-dessus).
On rencontre même des gens contre des règles très reconnues comme "goto c'est le mal". ![]() (image de xkcd) 3 fois le même programme, qui copie le contenu d'un fichier vers un autre fichier : Sans goto, traitement normal en premier : Code C :
Sans goto, traitement d'erreur en premier : Code C :
Avec goto : Code C :
Franchement, avec la première solution, il est très difficile de vérifier que les ressources sont fermées correctement. Et la deuxième me semble moins lisible que la troisième, mais c'est un peu subjectif peut être. Et pour rappel, Linux est bourré de goto... |
||||||
|
|
22
|
|
|
#62 | |||||
|
Expert Confirmé
![]() Sylvain Ingénieur développement logiciels Inscription : octobre 2007 Messages : 1 249 ![]() |
Citation:
C'est comme pour le code à base de goto ci-dessus. C'est facile tous les label sont à la fin de la méthode. C'est rarement le résultat que l'on obtient lorsque l'on autorise l'utilisation de goto dans un code...
__________________
"tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!" |
|||||
|
|
40
|
|
|
#63 | ||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 8 ![]() |
Code :
|
||
|
|
24
|
|
|
#64 | |
|
Expert Confirmé Sénior
![]() Inscription : décembre 2007 Messages : 2 545 ![]() |
Citation:
Linus peut se permettre le GOTO, il a le niveau pour. Les règles "standard" sont dédiées aux programmeurs "standard" qui commettent pas mal d'horreurs. Je ne suis pas forcément toujours au dessus du standard, d'ailleurs, donc j'essaie de respecter les règles - autant que je peux.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten : 1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception 2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences 3)le temps de comprendre toutes les exigences, le projet est terminé 4)le temps de terminer le projet, les exigences ont changé Et le serment de non-allégiance : Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée. |
|
|
|
40
|
|
|
#65 |
|
Membre Expert
![]() esclave du Grand Capital Inscription : février 2010 Messages : 1 075 ![]() |
Il ne s'agit pas d'une règle, mais d'une convention. Et comme toutes les conventions, elle est parfois contre productive (même si ça peut être très rare).
__________________
http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main |
|
|
40
|
|
|
#66 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 568 ![]() |
Citation:
).Après que se passe-t-il si jamais je commence à avoir besoin de return partout? Ben je refactore, genre je délègue les cas particuliers à de nouvelles méthodes. En fait il est rare que je dépasse le 2 niveaux d'indentation dans une méthode et si je dois scroller ou analyer les parenthèses pour comprendre le flux de mon traitement il y a une petite voix qui me dit "t'es peut être en train de faire de la merde", "ta méthode elle fait peut être trop de choses". Donc j'utilise volontiers un return en cours de fonction afin de bien documenter la réflexion, pré-condition non remplie? -> hop tu dégages d'ici. L'objet en cours est une pomme? -> hop délègue à la méthode des pommes. Si tu te mets bien dans la peau d'une personne qui lit ton code naturellement de haut en bas, t'arrives bien à représenter la logique de ton traitement en utilisant des return *par exemple* de sous-méthodes. |
|
|
|
80
|
|
|
#67 | |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2003 Messages : 1 663 ![]() |
Citation:
__________________
Les brevets ? Le type qui a inventé l'eau chaude doit être grave blindé de thunes ! |
|
|
|
00
|
|
|
#68 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2003 Messages : 1 663 ![]() |
Ah ouais, quand même...
__________________
Les brevets ? Le type qui a inventé l'eau chaude doit être grave blindé de thunes ! |
|
|
21
|
|
|
#69 | |
|
Expert Confirmé
![]() Sylvain Ingénieur développement logiciels Inscription : octobre 2007 Messages : 1 249 ![]() |
Citation:
Heureusement qu'il y a des gens qui réfléchissent quand ils codent, mais plus je fais ce métier, plus j'ai l'impression qu'ils sont rares. Parfois, je me dis aussi que c'est un problème lié à la prestation, les développeurs savent qu'ils ne vont pas rester longtemps sur le projet alors ils ne s'investissent pas trop pour faire un travail correct, ce sera le prochain presta qui pâtira des défauts... Et qui à sont tour fera de la merde, pourquoi se casser le cul à faire du code propre alors que celui dont on hérite est calamiteux, c'est souvent même impossible...
__________________
"tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!" |
|
|
|
40
|
|
|
#70 | ||
|
Membre chevronné
![]() Inscription : décembre 2010 Messages : 236 ![]() |
À part pour la gestion d'erreurs, je n'ai personnellement jamais eu recours à goto.
Concernant l'indentation, si la boite contraint ses développeurs à utiliser des polices monospaces en utilisant l'indentation présenté par Uther en début de topic (indentation par des tabulations et alignement pas des espaces). Chacun pourrait y aller à sa sauce avec son éditeur sans que l'autre ait besoin d'utiliser un outil pour remettre en forme le code. Chez pas mal de débutants, je remarque souvent une non-indentation du premier niveau soit : Code :
Je fais parti des sauvages qui indentent avec 8 espaces et qui essaient de faire des lignes de 80 colonnes maximum... Ainsi je compte pas mes indentations, je vois tout de suite quand il y en a plus de 3 ou 4 et me demande si j'écris de la merde. Les 80 colonnes se retrouvent de toute façon bouffées parce qu'il n'y a qu'en Math qu'on déclare systématiquement des noms de variable et de fonction à une lettre qui ne veulent rien dire... Au final, c'est surtout pour qu'une ligne tienne sur une ligne de l'écran je laisse de la place à coté de l'éditeur pour voir d'autres choses sur mon écran 5/4
|
||
|
|
00
|
|
|
#71 | |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes Linux/Unix/SAN Inscription : mars 2004 Messages : 3 192 ![]() |
Citation:
Les boites où le langage est imposé, cela me fait rire... Qu'on essaye de priorisé le plus maitrisé => OK. Mais chaque langage a un domaine de prédilection PS personnel : coucou GLDavid !! ca fait un bail !
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP "En face, c'est des c**s, alors au premier regroupement, il faut qu'ils discutent avec les taupes." Je ne réponds ni aux messages privées, ni aux messages plein de fautes... |
|
|
|
21
|
|
|
#72 | |
![]() ![]() |
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
|
70
|
|
|
#73 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes Linux/Unix/SAN Inscription : mars 2004 Messages : 3 192 ![]() |
Cette faute est historique, je crois qu'elle date depuis le passage de ce forum en vBulletin
FIN du HS
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP "En face, c'est des c**s, alors au premier regroupement, il faut qu'ils discutent avec les taupes." Je ne réponds ni aux messages privées, ni aux messages plein de fautes... |
|
|
10
|
|
|
#74 | |
![]() ![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 972 ![]() |
Citation:
Comme règle casse-pied j'allais justement citer le fait de préciser tout le temps == true ou == false au lieu de ne rien mettre ou juste '!'. Pareil pour les tests de pointeurs, rajouter != 0 ou != NULL, c'est lourd... En Qt, les nom de fonction contiennent le verbe. Par exemple : string.isEmpty(). Donc if (string.isEmpty()) est déjà une phrase. Mais on m'impose d'écrire if (string.isEmpty() == true), ce qui demande plus de concentration pour le lire. |
|
|
|
20
|
|
|
#75 | |||
|
Expert Confirmé Sénior
![]() |
Pour le "Single Entry, Single Exit" (alias "pas de return multiples") je dirais que ça dépend des circonstances: Contexte d'utilisation, outils disponibles dans le langage (notamment, présence ou non de destructeurs ou ramasse-miettes) et présence de ressources allouées.
Je ne vois aucun problème pour mettre des return sur la validation des paramètres en début de fonction: À ce stade la fonction n'est pas censé avoir alloué ou ouvert quoi que ce soit. Ensuite, des fonctions qui ne font aucune allocation, comme une fonction de recherche dans une liste, peuvent tirer parti d'un return dès que l'objet recherché est trouvé. En gros, je dirais que le return au beau milieu d'une fonction est à bannir dès qu'il doit être accompagné d'un nettoyage: Code C mauvais :
À noter que dans certains cas dans des langages comme le C, il peut être avantageusement remplacé par un goto: Si toutes les variables sont correctement initialisées lors de leur déclaration, un "goto cleanup" peut rendre une fonction plus lisible qu'un code "boomerang". Bien sûr, en C++ on utilisera des destructeurs à la place. Citation:
__________________
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. |
|||
|
|
10
|
|
|
#76 | ||
|
Membre émérite
![]() |
Citation:
Citation:
set expandtab set tabstop=4 set shiftwidth=4 Comme ça en appuyant sur tab ça fait ce que tu décris (= une fois sur tab), ça décale de 4 et en plus au lieu d'un caractère tabulation ce sont des espaces !
__________________
Il ne faut pas oublier que la politesse et le respect sont mutuels. Mon framework Web haute performance : |
||
|
02
|
|
|
#77 | |
|
Membre Expert
![]() Alexis LechevalierIngénieur développement logiciels Inscription : février 2005 Messages : 1 047 ![]() |
Citation:
Mon premier poste de dév avait des règles de codage (langages C++ puis .Net 1.1) qui dataient de mathusalem, utilisaient la notation hongroise et exigeaient qu'on explicite les tests de booléens avec un ordre dans le test ( "If(true == monBooleen)" ), entre autres,... Comme ça a déjà été dit, les règles de codage sont discutables car établies dans un contexte particulier. Elles peuvent même devenir obsolètes mais être conservées pour des raisons évidentes d'homogénéité du code...
__________________
Vu sur un paquet de cigarettes: "Fumer peut entrainer une mort lente et douloureuse" Vivre aussi... Ce n'est pas forcément moins douloureux et c'est même beaucoup plus lent... ![]() "Les fumeurs meurent prématurément" Puisqu'on dit que ce sont toujours les meilleurs qui s'en vont en premier...
|
|
|
|
20
|
|
|
#78 | |||||
|
Membre émérite
![]() |
Citation:
est un code qui ne génère pas d'erreur, alors que le développeur voulait comparer. Et ce genre de problème a souvent généré des heures - inutiles - de débogague pour arriver à ce code : La conclusion pratique : on met les constantes en premier : Ainsi, en faisant ça, on ne peut pas écrire ce code, qui génère une erreur de compilation : ![]() Conclusion : tous les développeurs qui veulent imposer cette pratique montrent principalement une chose : ils ont de longues heures de vol et de déboguage derrière eux ! Ensuite un autre problème surgit souvent : code classique (même vu en école d'ingénieur par un prof Code :
Le code "propre" et "fiable" est : f=fopen("monfichier", "r"); Même chose en Php : comparaison ternaire pour être sûr du type : Code :
__________________
Il ne faut pas oublier que la politesse et le respect sont mutuels. Mon framework Web haute performance : |
|||||
|
12
|
|
|
#79 | |||
|
Expert Confirmé Sénior
![]() François Chef de projet NTIC Inscription : janvier 2007 Messages : 6 555 ![]() |
Citation:
Code :
__________________
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça... Une réponse vous a aidé ? utiliser le bouton "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel |
|||
|
|
00
|
|
|
#80 |
![]() ![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 972 ![]() |
@SurferIX : Merci de l'explication, effectivement ça se tient
|
|
|
10
|
Copyright © 2000-2013 - www.developpez.com