IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

C++ sans le C


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 52
    Par défaut C++ sans le C
    Bonjour

    On me demande de faire des régles de codage pure C++. C'est à dire en supprimant les méthodes du C ayant un remplacant C++.

    C'est bête mais je séche.

    J'ai identifié
    - Pas de structure mais des classe
    - pas de malloc/free mais des new/delete
    - pas de pointeur de fonctions
    - pas de #define (#define PI 3.14 mais static const double pi=3.14)
    - réduction de la portée des variable (déclaration au plus prés de l'utilisation)
    - utilisaition de la stl

    et...

    Des idées ???
    merci

  2. #2
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 408
    Par défaut
    pas de pointeur nu -> pointeur intelligent

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Par défaut
    Salut,

    - Pas de structure mais des classe
    Je ne suis pas trop d'accord sur ce point. Se priver de faire un POD tout bête quand il n'y a pas besoin de plus revient à se forcer à faire compliqué quand on peut faire simple. Après tout dépend de son utilisation.

    Pour compléter ta liste :
    - Pas de tableaux de char mais des std::string
    - Pas de tableaux, mais des std::vector/std::array
    - Pas de setlocale, mais std::locale
    - numeric_limits<int>::max plutôt que la macro INT_MAX

    Si tu as droit à C++11 :
    - remplacement de rand() par <random>
    - remplacement de ton api native de threads par <thread>

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Citation Envoyé par stardeath Voir le message
    pas de pointeur nu -> pointeur intelligent
    My god, surtout pas ! Les pointeurs intelligents répondent à des besoins précis, il ne faut surtout pas en faire une utilisation systématique.

    Citation Envoyé par Niark13 Voir le message
    Je ne suis pas trop d'accord sur ce point. Se priver de faire un POD tout bête quand il n'y a pas besoin de plus revient à se forcer à faire compliqué quand on peut faire simple.
    Ca va plus loin que ça, les struct C++ ne sont d'ailleurs pas des struct C, ils sont quasiment identiques aux classes et sont très utilisés.

    Une règle importante selon moi: remplacer les cast C par des casts C++.

  5. #5
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 408
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    My god, surtout pas ! Les pointeurs intelligents répondent à des besoins précis, il ne faut surtout pas en faire une utilisation systématique.
    bah je dirai comme toutes les fonctionnalités du "c" dans ce cas.
    utiliser des pointeurs intelligents, c'est une des premiers choses qu'on fait quand on commence à jouer avec les exceptions, le surtout pas est un peu gros.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    D'accord c'est un peu sec, pardon , mais c'est pour bien mettre en garde l'op ! Je voulais dire "ne surtout pas instaurer comme règle de remplacer les pointeurs nus par des pointeurs intelligents". Ca reste des cas assez rare dans la pratique. Les pointeurs intelligents ont un sens fort sur le cycle de vie de l'objet, il faut être très prudent avec. Je te renvoie vers cet article qui traite du sujet en profondeur.

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Ca va plus loin que ça, les struct C++ ne sont d'ailleurs pas des struct C, ils sont quasiment identiques aux classes et sont très utilisés.
    Ça me semblait tellement évident que j'ai sous-entendu que struct == POD dans le message d'origine. Mea culpa

  8. #8
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Je mettrais en gros et en tout premier lieu: Penser en terme de services rendus et non en terme de données utilisées

    N'oublies pas que l'encapsulation n'est pas le principe de base de la programmation OO, même si ce principe a quelque part été "institutionnalisé" avec ce paradigme

    Le principe de base de la programmation OO est la substituabilité (le fait de pouvoir faire passer un pointeur (ou une référence) sur un objet d'un type dérivé pour un pointeur (ou une référence) sur un objet du type de base

    Je rajouterais très vite le respect primordial de LSP (et des autres principes SOLID)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #9
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    My god, surtout pas ! Les pointeurs intelligents répondent à des besoins précis, il ne faut surtout pas en faire une utilisation systématique.
    Il y a toujours std::unique_ptr<> en C++11 (et std::auto_ptr<> en C++98, en faisant très attention à ce qui se passe). Ceux là peuvent remplacer des pointeurs nus, mais encore faut-il apprendre à s'en servir pour éviter leurs pièges restrictifs (avec std::unique_ptr<>, il faut souvent jouer avec la sémantique de mouvement ; avec std::auto_ptr<>, outre le fait que l'achat d'une corde utile pour un éventuel suicide, il faut faire attention à la sémantique de mouvement implicite).

    Citation Envoyé par jblecanard Voir le message
    Ca va plus loin que ça, les struct C++ ne sont d'ailleurs pas des struct C, ils sont quasiment identiques aux classes et sont très utilisés.
    Je te suis sur ce point - les struct ne doivent pas être écartées du langage - elles sont extrêmement importantes : c'est souvent une struct qu'on utilisera par exemple pour définir un foncteur ou les classes helper cachées dans une implémentation template complexe (parce que la sémantique du tout public sauf ce qui est marqué comme ne l'étant pas permet d'écrire un code un peu plus compact qu'en utilisant une classe).

    Citation Envoyé par Niark13 Voir le message
    Ça me semblait tellement évident que j'ai sous-entendu que struct == POD dans le message d'origine. Mea culpa
    Les types POD ont nécessairement leur utilité. Par exemple, le header d'un fichier sera exprimé sous la forme d'un POD, une structure avec laquelle on communique avec l'OS idem, etc.

    Citation Envoyé par jblecanard Voir le message
    Une règle importante selon moi: remplacer les cast C par des casts C++.
    Ca, oui. Par contre il faut bien comprendre les règles permattant de distinguer const_cast<>, dynamic_cast<>, static_cast<> et reinterpret_cast<> - et ne pas se contenter de remplacer tous les casts C par des reinterpret_cast<>.

    Un règle importante selon moi : pas de pointeurs void en C++.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  10. #10
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 52
    Par défaut
    Citation Envoyé par Niark13 Voir le message
    Salut,
    Je ne suis pas trop d'accord sur ce point. Se priver de faire un POD tout bête quand il n'y a pas besoin de plus revient à se forcer à faire compliqué quand on peut faire simple. Après tout dépend de son utilisation.
    Effectivement c'est peut être un peut bcp de faire une classe pour un POD. mon idée été l'utilisation de code dans une struct.

    Citation Envoyé par leternel Voir le message
    D'une manière générale, je dirai:
    • commente d'abord, programme après, le commentaire en sera toujours plus utile
    • le code s'écrit du papier au clavier, jamais dans l'autre sens
    Ça c'est aussi valable pour le C, le Java, le VB, le Php, le ....

    Citation Envoyé par Emmanuel Deloget Voir le message
    Ca, oui. Par contre il faut bien comprendre les règles permattant de distinguer const_cast<>, dynamic_cast<>, static_cast<> et reinterpret_cast<> - et ne pas se contenter de remplacer tous les casts C par des reinterpret_cast<>.
    Const_cast: J'ai pas encore compris à quoi cela peu servir


    Citation Envoyé par Emmanuel Deloget Voir le message
    Un règle importante selon moi : pas de pointeurs void en C++.
    Je signe

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    - pas de pointeur de fonctions
    « ... là où d'autres stratégies (polymorphisme, foncteurs, ...) suffisent » ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. [TP]Compiler un prog sans entrer dans TP7
    Par poppels dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 23/10/2002, 18h46
  3. MDI sans MFC, possible ?
    Par delire8 dans le forum MFC
    Réponses: 4
    Dernier message: 17/06/2002, 07h38
  4. [Kylix] Fiches sans bordure
    Par alex dans le forum EDI
    Réponses: 4
    Dernier message: 28/04/2002, 21h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo