Coder efficacement

Bonnes pratiques et erreurs à éviter (en C++)

Index

C

C++11
class enum, Des verbes pour les booléens, Le fin du fin : les énumérations fortement typées
énumérations fortement typées, Des verbes pour les booléens, Le fin du fin : les énumérations fortement typées
static_assert, À la compilation, si faire se peut, Les pièces concrètes
fonctions de conversion, Convertir ses données avec std::stringstream
nullptr, Quelle différence entre les deux ?, La non-existence d'une donnée, Les pièces concrètes, La fabrique, un besoin de développeur
pointeur intelligent, Méfiez-vous des fonctions puits, Quand les trois ne font plus que deux
smart pointer, Méfiez-vous des fonctions puits, Préférez les pointeurs intelligents, Quand les trois ne font plus que deux
std::unique_ptr, Méfiez-vous des fonctions puits, Quand les trois ne font plus que deux, Interdire la destruction du type de base, La fabrique, un besoin de développeur
rvalue-reference, J'ai entendu parler de... Rvalue-reference ?
std::move, J'ai entendu parler de... Rvalue-reference ?
std::shared_ptr, Quand les trois ne font plus que deux
std::weak_ptr, Quand les trois ne font plus que deux
sémantique de mouvement, Quand les trois deviennent cinq
deleted function, Interdire la copie et l'affectation, Interdire la destruction du type de base, Autoriser la destruction du type de base, Le besoin d'éléments non copiables
fonctions marquées delete, Interdire la copie et l'affectation, Le besoin d'éléments non copiables, Le mot de la fin
std::is_same, Les pièces concrètes
std::enable_if, Les pièces concrètes, Émission des commandes
default template parameters, Les pièces concrètes
paramètre template par défaut, Les pièces concrètes
Cartouche, Les commentaires sous forme de cartouche, Le mot de la fin, La documentation à portée de main
cast (voir Transtypage)
Chaîne de responsabilités, patron de conception, Quelle solution alors ?, Quand l'OCP est malmené
Chain of responsability (voir Chaîne de responsabilités)
clang-format, Respectez des règles d'indentation strictes
Code::Blocks, Le mot de la fin
Compilateur, Mon pote, le compilateur, Changer la visibilité des fonctions membres, La compilation n'est pas une science occulte
caractères spéciaux, Choisissez votre langue
longueur ligne, Une ligne = une instruction
énumération, Préférez les énumérations
static assertion failed, Marquez la fin des valeurs énumérées
variable, Mais quelle est cette portée ?
double dispatch, ISP pour éviter l'héritage en losange
programmation par contrat, À la compilation, si faire se peut
pointeur, Démystifions les pointeurs
rvalue-reference, J'ai entendu parler de... Rvalue-reference ?
mot clé const, La constance, autant que faire se peut
constance, Et les fonctions membres ?
Coplien, Coplien, règle des trois grands et compilateur
copie et affectation, Interdire la copie et l'affectation
fonction virtuelle, Ce qui change pour le destructeur
GCC, Le mot de la fin, Le préprocesseur : quelques commandes simples, Générer le code assembleur
MinGW, Le mot de la fin
Compilation, La compilation n'est pas une science occulte-L'édition de liens
automatique, Automatisez la compilation
Concept
non copiable, À la compilation, si faire se peut, Le besoin d'éléments non copiables, La peste ou le choléra ?
non affectable, À la compilation, si faire se peut, Le besoin d'éléments non copiables, La peste ou le choléra ?
Const-correctness, La const-correctness pour empêcher la modification de vos objets
Coplien, Le constructeur, une aubaine, Coplien, règle des trois grands et compilateur-Quand les trois deviennent cinq
Création d'objets dérivés, Mais comme rien n'est simple en ce bas monde..., La fabrique, un besoin de développeur

P

Paradigme générique, La peste ou le choléra ?
Patron de conception
visiteur, Quelle solution alors ?, Le visiteur, encore un besoin de développeur, Identifier le roi, Respecter les règles, Les règles restrictives
manipuler le type réel, Quelle solution alors ?, Le visiteur, encore un besoin de développeur, Respecter les règles, Les règles restrictives
chaîne de responsabilités, Quelle solution alors ?, Quand l'OCP est malmené
fabrique, Mais comme rien n'est simple en ce bas monde..., La fabrique, un besoin de développeur
création d'objets dérivés, Mais comme rien n'est simple en ce bas monde..., La fabrique, un besoin de développeur
PieceVisitor, La pièce de base, Le visiteur, encore un besoin de développeur, Identifier le roi, Respecter les règles, Les règles restrictives
(voir aussi Patron de conception Visiteur)
Pile, La pile, pour les données automatiques, Les exceptions, Renvoyer un objet polymorphe, SESE ? et pourquoi pas RAII ?
POD, Plain Old Data, Adieu, transtypages C style
Pointeur intelligent, Méfiez-vous des fonctions puits, Préférez les pointeurs intelligents, Quand les trois ne font plus que deux
Policy (voir Traits et politiques)
Polymorphisme, Quelle solution alors ?, Disposer de comportements polymorphes ?, Renvoyer un objet polymorphe, Comprendre le polymorphisme-Comprendre le polymorphisme, Ce qui change pour le destructeur, Autoriser la destruction du type de base, La couleur, La fabrique, un besoin de développeur, Quand l'OCP est malmené
Principe
(voir aussi OCP)
(voir aussi LSP)
(voir aussi ISP)
(voir aussi DIP)
de la responsabilité unique (voir SRP)
ouvert/fermé, OCP : Le principe ouvert/fermé
(voir aussi OCP)
de substitution de Liskov, LSP : Le principe de substitution de Liskov
(voir aussi LSP)
de ségrégation des interfaces, ISP : Le principe de ségrégation des interfaces
(voir aussi ISP)
d'inversion des dépendances, DIP : Le principe d'inversion des dépendances
(voir aussi DIP)
Programmation par contrat, Préface, Les bases de la programmation par contrat
précondition, Préconditions et postconditions
postcondition, Préconditions et postconditions
invariant, Invariant ? kesako ?

S

Sémantique
sémantique d'entité, Salade de sémantique
sémantique de valeur, Salade de sémantique
non copiable et non affectable, Salade de sémantique, Et pour la sémantique d'entité ?, Le besoin d'éléments non copiables, La pièce de base, Les cases et l'échiquier
copiable, Salade de sémantique
affectable, Salade de sémantique
de mouvement, Quand les trois deviennent cinq
d'entité, Et pour la sémantique d'entité ?, Le besoin d'éléments non copiables, La pièce de base, Les cases et l'échiquier, Le visiteur, encore un besoin de développeur
SESE, Assertion ou exception ?, Le système d'entrées en mode console, SESE ? et pourquoi pas RAII ?
Simplicité, Coordonnée vs abscisse et ordonnée
Single Responsability Principle, SRP : Le principe de la responsabilité unique
(voir aussi SRP)
Smart pointer, Méfiez-vous des fonctions puits
(voir aussi Pointeur intelligent)
SOLID
SRP, Cinq piliers, c'est du SOLID, SRP : Le principe de la responsabilité unique, En résumé
OCP, Cinq piliers, c'est du SOLID, OCP : Le principe ouvert/fermé, En résumé, La fabrique, un besoin de développeur, Le visiteur, encore un besoin de développeur, Quand l'OCP est malmené
LSP, Cinq piliers, c'est du SOLID, LSP : Le principe de substitution de Liskov, En résumé, Le besoin d'éléments non copiables
ISP, Cinq piliers, c'est du SOLID, ISP : Le principe de ségrégation des interfaces, En résumé, L'échiquier et la simulation
DIP, Cinq piliers, c'est du SOLID, DIP : Le principe d'inversion des dépendances, En résumé, Très bien, mais où cela nous mène⁠-⁠t⁠-⁠il ?
SRP, Cinq piliers, c'est du SOLID, SRP : Le principe de la responsabilité unique-Méfiez-vous des termes trop vagues, En résumé
STL, NIH, ou l'art de réinventer la roue
stlsoft, Préférez les tableaux à une dimension
Substituabilité, Les grands principes de la POO, Disposer de comportements polymorphes ?
subversion, Gardez l'historique
Surcharge de fonction, Comprendre le polymorphisme