Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1460 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  bien programmer ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

bien programmer ?

n°242416
art_dupond
je suis neuneu... oui oui !!
Posté le 09-11-2002 à 22:47:49  profilanswer
 

youp,
 
 
je voulais savoir comment bien programmer.
 
J'ai un peu apris la programmation à l'école, mais j'ai jamais fait de projets "sérieux".
 
 
Donc, si vous pouviez me dire ce qu'il faut faire pour par exemple :
 
-la gestion des erreurs
-optimiser (j'ai lu je sais plus dans quel topic qu'il y avait des programmes qui faisaient ca (???))
-... (tout conseil sera le bienvenu :) )
 
 
 
merci


---------------
oui oui
mood
Publicité
Posté le 09-11-2002 à 22:47:49  profilanswer
 

n°242418
chrisbk
-
Posté le 09-11-2002 à 22:53:15  profilanswer
 

->se trouver une convention d'ecriture de code et s'y tenir
->choisir un mecanisme de gestion d'erreur, et s'y tenir
->ne pas optimiser trop tot
 
 

n°242521
sky99
http://www.core-tx.com
Posté le 10-11-2002 à 06:54:02  profilanswer
 

a propos d'optimisation:
pensez vousqu'il vaut mieux avoir une approche      globale
d'un projet puis affiner au fur et a mesure ou au contraire
plancher en detail partie par partiedes le debut?


---------------
http://www.core-tx.com
n°242586
Ace17
Posté le 10-11-2002 à 12:57:15  profilanswer
 

L'optimisation, ca se fait a la fin!
Sinon, on ne s'en sort plus...
Je pense donc qu'il vaut mieux avoir une approche globale, pour répondre a ta question.


Message édité par Ace17 le 10-11-2002 à 12:57:44
n°242612
matafan
Posté le 10-11-2002 à 13:54:37  profilanswer
 

En C, éviter d'utiliser les types intégrés (int, char, long...). Il vaut mieux se créer ses propres types "logiques" (typedef). Par exemple on n'écrira pas "int id1;" mais "id_t id1". Le type doit indiquer ce qu'est la variable (un id), pas comment elle est stockée (dans un int). Ca permet aussi d'éviter d'accumuler les "*" devant les noms de variables : on écrira "client_t client1" plutôt que "struct client *client1".
 
Ne jamais utiliser dans le code de constantes numériques. Se faire plutôt un #define (enfin sauf pour 0 et 1, suivant le contexte : pour le compteur d'une boucle on peut évidemment écrire 0, mais si ce 0 a une signification précise, par exemple le nombre minimal de threads en attente dans un pool, là il faut un #define).
 
Faire des fonctions courtes. Si une fonction dépasse la centaine de lignes, c'est sans doute qu'il faut en créer une nouvelle. Evidemment ça dépend aussi de la complexité de la fonction : si tu a un très long switch avec à chaque fois des opérations élémentaires, personne ne t'en voudra si elle fait 800 lignes. Une indicateur simple de la complexité d'une fonction pourrait être le niveau maximum d'indentation. Si du code est indenté plus de mettons 4 fois, ça devient trop compliqué.
 
Eclater le code dans plusieurs fichiers. Les fichiers ne devraient jamais être très longs. Deux fonctions qui rendent des services tout à fait différents (coeur de l'algo et affichage par exemple) n'on rien à faire dans le même fichier.
 
Et mettre beaucoup de commentaires. En-tête au dessus de chaque fonction avec un petit commentaire sur ce qu'elle fait, les arguments qu'elle attend, ce qu'elle renvoie, les variables globales qu'elle utilise, les variables globales qu'elle modifie. Plus plein de commentaires dans le code, mais des commentaires utiles (pas de "/* i <- 2 */" ). Et aérer le code.  
 
Pour la présentation du code c'est suivant tes préférences, mais il y a quelques règles à respecter. Essayer de tenir dans 80 colonnes. Tabulation à 8 caractères (l'argument "mais après ça déborde" ne tient pas, cf. plus haut). Type de la valeur de retour d'une fonction sur une ligne à part (ça permet de coller le nom de la fonction à gauche, ce qui facilite les grep). Par exemple :

Code :
  1. int
  2. main(int argc, char *argv[])
  3. {
  4.         /* Some code */
  5. }


Message édité par matafan le 10-11-2002 à 14:11:34
n°242617
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-11-2002 à 14:00:40  profilanswer
 

tabulation à 8 :ouch:  
moi j'en mets 3, et je mets des espaces au lieu des tabs
(habitude du Pascal, où on ne met même que deux caractères)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°242621
matafan
Posté le 10-11-2002 à 14:06:21  profilanswer
 

Ah et puisqu'on parle d'optimisatio plus haut, attention. L'optimisation du code c'est avant tout l'algo. Après c'est l'ordre des instructions pour éviter de casser le pipeline, et pour permettre la vectorisation.
 
Par contre toutes les "optimisations" du genre "je fait << 2 plutôt que * 4", c'est à éviter absolument. Ca rend le code moins lisible, et de toute façon le compilo génerera exatement le même code dans les deux cas (avec un décalage de bits). De même, dans une expression arithmétique, ne pas hésiter à laisser les calculs intermédiaires sur les constantes, si ils permettent de mieux comprendre le calcul : on ne gagne rien en écrivant "x * 192" plutôt que "x * (128 + 64)". Les calculs sur les constantes seront fait au moment de la compilation, le code généré sera le même.
 
Et un conseil : ne perd pas de temps à optimiser à fond toutes tes fonctions. Utilise un profiler pour voir où le temps est perdu, et concentre toi sur ces endroit : ne perd pas une journée à optimiser une fonction qui prend 1% du temps. Un profiler c'est fait pour ça, et on est parfois surpris du résultat.

n°242622
matafan
Posté le 10-11-2002 à 14:10:01  profilanswer
 

antp : si tu utilise des espaces pour indenter le code, tu peux mettre la largeur que tu veux, pas de problèmes (par contre moi je l'indiquerait en en-tête du fichier quand même). Mais si tu utilises les tabulations, alors elles doivent faire 8 caractères, point. L'usage veut qu'il en soit ainsi, et toute autre valeur donera un code mal aligné chez 90% des développeurs.

n°242624
chrisbk
-
Posté le 10-11-2002 à 14:11:59  profilanswer
 

antp a écrit a écrit :

tabulation à 8 :ouch:  
moi j'en mets 3, et je mets des espaces au lieu des tabs
(habitude du Pascal, où on ne met même que deux caractères)




 
heuh, ouais, 8 ca fait quand meme bpc [:ddr555]

n°242625
kadreg
profil: Utilisateur
Posté le 10-11-2002 à 14:12:15  profilanswer
 

De toutes façon, chez moi, la touche tab donne : "insère moi (ou supprime) le bon nombre d'espaces pour avoir un code correctement indenté"


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
mood
Publicité
Posté le 10-11-2002 à 14:12:15  profilanswer
 

n°242628
chrisbk
-
Posté le 10-11-2002 à 14:13:04  profilanswer
 

Matafan a écrit a écrit :

antp : si tu utilise des espaces pour indenter le code, tu peux mettre la largeur que tu veux, pas de problèmes (par contre moi je l'indiquerait en en-tête du fichier quand même). Mais si tu utilises les tabulations, alors elles doivent faire 8 caractères, point. L'usage veut qu'il en soit ainsi, et toute autre valeur donera un code mal aligné chez 90% des développeurs.




 
dans l'absolu je preconise putot l'emploi d'espace que de tabs (question de formatage). D'ailleurs VC (et surement bpc d'autre) permettent de remplacer les tabs par des espaces. C pas mis par defaut, mais cocher le titi n'est pas une mauvaise idée :D

n°242745
Ace17
Posté le 10-11-2002 à 19:03:09  profilanswer
 

Pourquoi les espaces a la place des tabulations? Je trouve les tabulations plus pratiques, moi! Qu'est-ce que j'ai loupé pour penser ca?

n°242763
verdoux
And I'm still waiting
Posté le 10-11-2002 à 19:47:49  profilanswer
 

Ace17 a écrit a écrit :

Pourquoi les espaces a la place des tabulations? Je trouve les tabulations plus pratiques, moi! Qu'est-ce que j'ai loupé pour penser ca?




Parce que les tabs, c'est paramétrable dans la plupart des éditeurs.


Message édité par verdoux le 10-11-2002 à 19:47:58
n°242778
chrisbk
-
Posté le 10-11-2002 à 20:24:20  profilanswer
 

Ace17 a écrit a écrit :

Pourquoi les espaces a la place des tabulations? Je trouve les tabulations plus pratiques, moi! Qu'est-ce que j'ai loupé pour penser ca?




 
ben le pb c le melange espace/tab qui survient assez souvent
 
si jamais toi tes tabs sont a 5 (exemple inside) et que tu passes chez un type chez qui c a 3, ca risque de devenir un gros foutoir (truc mal indenté tout partout)
 
avec les espaces, rien de cela

n°242802
lorill
Posté le 10-11-2002 à 21:48:48  profilanswer
 

moi je mets 2 espaces comme indentation  [:sinclaire]

n°242858
art_dupond
je suis neuneu... oui oui !!
Posté le 11-11-2002 à 02:03:33  profilanswer
 

ok merci :)
 
 
 
c'est quoi un profiler exactement ? (je veux des noms aussi !!! :) (pour c++))
 
et aussi, que conseillez vous comme debugger ?
 
 
merci


Message édité par art_dupond le 11-11-2002 à 02:57:54
n°242873
LeGreg
Posté le 11-11-2002 à 04:08:28  profilanswer
 

Citation :

ok merci :)
c'est quoi un profiler exactement ? (je veux des noms aussi !!! :) (pour c++))


 
ca te fait tourner ton programme pendant un certain temps
puis ca te dit dans quelle fonction ton programme a passe
le plus de temps.
Certains profilers avances te donnent aussi des informations
plus precises comme le nombre de stall en attente de l'OS, d'une ressource partagee, d'un cache miss, du CPU (quand il s'agit d'un GPU) etc.. Tres utile en cours de developpement
pour voir qu'on va dans le mur et qu'il faut changer son fusil
d'epaule. Ou en fin de developpement pour gagner quelques cycles
sur une execution.
 
Il y en a un integre dans Visual C++ 6 et ulterieur.
Le plus utilise sur plateforme intel est VTune produit
par Intel lui meme.
 

Citation :

et aussi, que conseillez vous comme debugger ?


 
Utilise celui de ton environnement de developpement. S'il ne te convient pas ou si tu ne trouves pas de doc convenable dessus songe a changer d'environnement de developpement.
 
LeGreg

n°242879
os2
Posté le 11-11-2002 à 06:50:38  profilanswer
 

art_dupond a écrit a écrit :

youp,
 
 
je voulais savoir comment bien programmer.
 
J'ai un peu apris la programmation à l'école, mais j'ai jamais fait de projets "sérieux".
 
 
Donc, si vous pouviez me dire ce qu'il faut faire pour par exemple :
 
-la gestion des erreurs
-optimiser (j'ai lu je sais plus dans quel topic qu'il y avait des programmes qui faisaient ca (???))
-... (tout conseil sera le bienvenu :) )
 
 
 
merci




 
lis des livres sur le génie logiciel, t'aura de très bonne base ainsi


---------------
Borland rulez: http://pages.infinit.net/borland
n°244900
Musaran
Cerveaulté
Posté le 14-11-2002 à 03:07:36  profilanswer
 

Copier/coller de la rubrique bibliolinks C++ (anglais requis):
Teach Yourself Programming in Ten Years
The seven secrets of successful programmers
How To Write Unmaintainable Code
Optimization: Your Worst Enemy
 
Comment Poser Les Questions De Manière Intelligente
How to Report Bugs Effectively
I need help with my homework!
 
Interface Hall of Fame/Shame
 
Recommended C Style and Coding Standards.
C++ Coding Standard
The Ten Commandments for C Programmers (Annotated Edition)
 

Matafan a écrit a écrit :

Tabulation à 8 caractères


C'est énormément une question de préférence.
Il me semble que plus un programmeur a tapé de code, plus il a tendance à raccourcir.
 

Ace17 a écrit a écrit :

Pourquoi les espaces a la place des tabulations? Je trouve les tabulations plus pratiques, moi! Qu'est-ce que j'ai loupé pour penser ca?


Pareil...
Ça fait plusieurs fois que j'entends recommender les espaces au lieu de tabulations, et je n'y prétais pas trop attention tellement les tabulations coulent de source pour moi.
A un point tel que je n'envisageais même pas d'expliquer pourquoi.
Il semble qu'il va bien falloir pourtant...
 

verdoux a écrit a écrit :

Parce que les tabs, c'est paramétrable dans la plupart des éditeurs.


Justement, cela permet à celui qui visionne le code de paramétrer l'indentation qu'il préfères.
 

chrisbk a écrit a écrit :

dans l'absolu je preconise putot l'emploi d'espace que de tabs (question de formatage)
...
ben le pb c le melange espace/tab qui survient assez souvent



Je crois que voilà le coeur de problème: Il ne faut pas les confondre.
La tabulation sert uniquement pour l'indentation correspondant à l'imbrication logique du programme.
Les espaces servent uniquement pour les alignements manuels esthétiques.
 
L'alignement par espaces sert à grouper, mettre en évidence et rendre plus lisible les éléments similaires.
Il ne faut pas aligner des choses n'ayant pas la même imbrication, elle n'ont rien à faire ensemble.
 
Exemple:

Code :
  1. /*t*/ une tabulation
  2. $ un espace
  3. //Les noms de ces variables étant alignés, on en déduit qu'elles vont ensemble.
  4. double d; //la position du nom étant imposée...
  5. char $$c; //...aligner avec des espaces.
  6. //rupture d'alignement, ceci est un autre groupe
  7. int array1[]= {1, //la position du premier étant imposée...
  8. $$$$$$$$$$$$$$$2, //...aligner avec des espaces.
  9. $$$$$$$$$$$$$$$3};
  10. int array2[]= {
  11. /*t*/ 1, //imbriquer avec tabulation suite à l'accolade ouverte.
  12. /*t*/ 2,
  13. /*t*/ 3
  14. }; //accolade séparée pour marquer la fermeture de bloc.
  15. for( initpart ;
  16. $$$$$test ;
  17. $$$$$advance){
  18. }
  19. switch(s){
  20. /*t*/ case $$$1: schtroumpfer( 8, $4, 27); break; //Epaces pour aligner et mettre en évidence...
  21. /*t*/ case 1000: smurfer$$$$$(18, 14, $1); break; //...les éléments similaires.
  22. }


Ainsi mis en forme, du code survit à un changement de taille de tabulation.
Et je rajoute que d'indenter avec des tabulations à l'avantage de ne pas permettre des demi-indentations par erreur.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  bien programmer ?

 

Sujets relatifs
[PHP] Cherchez l'erreur. 1 INSERT se passe bien mais n'enregistre rienProgrammer un site web vec base de donnees
Logique avec cerveau ramoli.... fonctionne pas bienprogrammer les wildcars en C
mes page aspx ou mon IIS ou bien MOI ne fonctionne pas correctementDelphi pour une appli 3D ... c'est bien ? Parlez-moi pas de C++ !!!
c'est bien genealogiqueVisual C++6 de wrox il est bien ce bouquin ?
Quoi pour programmer un logiciel avec une interface graphique ss linuxJ'arrive pas a programmer mon port serie sous linux ...
Plus de sujets relatifs à : bien programmer ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR