CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C/C++] Un code source exemplaire ?

Caudheur
Caudheur
Niveau 8
13 novembre 2012 à 22:08:48

Bonsoir à tous !

J'essaie d'apprendre à faire du code propre, mais pas facile quand on est seul.
Auriez vous sous le coude des codes sources libres qui seraient "exemplaires" ? J'essaie notamment de bien utiliser les commentaires, par exemple dans les headers pour présenter une fonction.

Merci d'avance, et bonne soirée

godrik
godrik
Niveau 30
13 novembre 2012 à 22:11:17

J'ai ecrit ca il y a un bout de temps avec un etudiant et pour la complexite des algo implemente je trouve ca plutot clean.

http://bmi.osu.edu/hpc/software/spart/

Pseudo supprimé
Pseudo supprimé 13 novembre 2012 à 23:06:22

utilise les () au lieu de = pour init une variable par exemple

int x(45);
float b(11.284);

a la place de

int x = 45;
float b = 11.284;

:noel:

tbop2
tbop2
Niveau 10
14 novembre 2012 à 01:13:24

Mouaif....

[-ArK-]
[-ArK-]
Niveau 29
14 novembre 2012 à 11:03:07

Pourquoi utiliser () au lieu de = serait plus clean ? :doute:

Je trouve ça plus difficile à lire moi :hap:

tbop2
tbop2
Niveau 10
14 novembre 2012 à 11:07:19

C'etait peut-etre ironique. Dans un code pro, et meme moins, je n'ai jamais vu ce genre d'initialisation a la con pour les types primitifs... En fait pour etre sincere a part ceux qui debarquent du SDZ je n'ai jamais vu quelqu'un utiliser ca pour les types primitifs.

Nightmarez
Nightmarez
Niveau 9
14 novembre 2012 à 11:16:23

Tiens, du beau code.

http://www.deater.net/wea/weave/vmwprod/c/cube/cube.png

[/ironie]

kufa
kufa
Niveau 9
14 novembre 2012 à 14:10:52

Je seconde tbop2, ce genre d'initialisation pour des types primitifs est super rare dans du code pro. Ca rends juste la chose moins lisible.

Apres la definition meme de code 'exemplaire' (ou 'beau') est *tres* subjective, et peut varier par exemple selon comment va etre utilise ce code, qui va le lire, si on tiens en compte les performances, etc.

Il y a pas mal de docs sur comment 'bien' commenter son code, mon principal conseil serait de commencer par les lire et de comprendre ce qui est interessant et utile de faire dans son cas en particulier, plutot que de trouver des exemples concrets (bonne chance pour ca) qui ne seront de toute facon pas exemplaires pour de nombreuses personnes et pas forcement adaptes a ce que tu fais.

Pseudo supprimé
Pseudo supprimé 14 novembre 2012 à 14:51:46

oui ct ironique :noel: mais jai quand meme eter chercher ca dans le guide c++ de google :rire:

http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

Pseudo supprimé
Pseudo supprimé 14 novembre 2012 à 15:17:58

Perso dans ton lien je lis ça :

Variable and Array Initialization
Your choice of = or ().
You may choose between = and (); the following are all correct:
int x = 3;
int x(3);
string name("Some Name");
string name = "Some Name";

dark_drow
dark_drow
Niveau 15
14 novembre 2012 à 15:37:23

Je sais pas si ça existe pour C/C++ mais ya des outils un peu violent de formatage de code genre Stylecop (pour C#)

godrik
godrik
Niveau 30
14 novembre 2012 à 17:41:45

Je pense que la lisibilite d'un code depend beaucoup de ce que le code doit faire. Dans mon travail, je ne m'occuppe que de performance. Les problemes d'ingenieries logicielles sont hors sujets. Mon probleme est d'obtenir les plus hautes performances. Tant que ca marche et que ca va vite, la lisibilite et reutilisabilite du code, on s'en fout completement.

Les interfaces sont importante et la debugabilite du code sont important egalement. Potentiellement les extensions simple doivent etre simple si elles sont possible. Par exemple, passer les types des donnees de float a double ou les index de int a short. Mais des fois, l'implementation fait que ce n'est pas possible. Combien de fois on se repose sur le fait que dans un long tu peux aussi stocker 64 bit et que 64 c'est aussi le nombre de byte dans une ligne de cache.

Du coup rendre un code comme ca propre a besoin de se reposer sur de la documentation et des commentaires. Les parties non critiques du code sont ecrites pour etre facil a comprendre. Mais il y a aussi des parties trash qui serait incomprehensible sans aller lire les deux pages d'un article reference dans les commentaires.

A l'oppose dans le monde de l'ingenierie logicielle le probleme est typiquement oppose, maintenabilite et extensibilite sont les problemes principaux. Du coup ces codes ont besoin d'etre ecrite de facon plus claire et plus robuste.

Caudheur
Caudheur
Niveau 8
14 novembre 2012 à 18:22:21

Merci à tous pour vos réponses ! Godrik, ton lien est très intéressants, merci :)

[-ArK-]
[-ArK-]
Niveau 29
14 novembre 2012 à 18:46:43

ah merde désolé j'avais pas cerné l'ironie, vu que je connais peu le C++... :hap: :noel:

Aldebran
Aldebran
Niveau 10
14 novembre 2012 à 19:19:52

Un code exemplaire, c'est un code :
- optimal : pas d'opérations inutiles, les algorithmes sont implémentés de manière performante
- maintenable : les composants logiciels doivent pouvoir être changés sans difficulté (par exemple on doit pouvoir passer d'une communication par mémoire partagée à une communication réseau en ne changeant qu'une ligne ou deux à son code principal)
- réutilisable : pour le génie logiciel, chaque seconde de travail d'un développeur doit pouvoir être rentabilisée au maximum ; pas question de développer deux fois un même modules dans deux projets différents, il faut coder le premier module de manière suffisamment générique pour qu'il puisse s'intégrer de manière transparente dans le second projet

De mémoire on retrouve ce genre de qualités dans des bibliothèques comme Boost. Le code source de Boost peut donc être une bonne façon de voir du code "exemplaire". Seul bémol, la documentation de Boost quant à elle est loin d'être exemplaire.

godrik
godrik
Niveau 30
14 novembre 2012 à 19:35:56

"- maintenable : les composants logiciels doivent pouvoir être changés sans difficulté (par exemple on doit pouvoir passer d'une communication par mémoire partagée à une communication réseau en ne changeant qu'une ligne ou deux à son code principal)"

Ca typiquement ce n'est pas possible dans le cas general. Tu ecris tes algos pour machine a memoire partage tres differement de tes algo pour machine a memoire distribue. Certain probleme requiert simplement une communication par file de communications. Mais dans le cas general ce n'est pas simple (voir possible) d'arriver a un niveau d'abstraction qui permet de ne pas sacrifier de performance et de faire ce type de changement en une ligne.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment