Bonjour à tous,
La convention de nommage de Boost indique que les typedef doivent être suffixées par _t.
Or, le typedef le plus célèbre du C++, std::string, ne suit lui-même pas cette convention.
Dans Boost même, on peut voir des disparités sur ce point. Un exemple avec cette classe tree_node (implémentation générique du pattern composite) :
Alors, quand mettre _t, quand ne pas le mettre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 template <typename T> struct tree_node { typedef T parse_node_t; typedef std::vector<tree_node<T> > children_t; typedef typename children_t::iterator tree_iterator; typedef typename children_t::const_iterator const_tree_iterator; T value; children_t children; tree_node(); explicit tree_node(T const& v); tree_node(T const& v, children_t const& c); void swap(tree_node<T>& x); };
Un typedef, hors template, c'est avant tout une abstraction. On veut plus ou moins faire oublier quel est le type équivalent, qui serait trop compliqué (un emboitement de templates, par exemple).
Dans ce cas, suffixer le nom du typedef casserait un peu cette abstraction.
Lorsque l'on ajoute _t, on joue plutôt la transparence.
Selon vous, y a-t-il d'autres facteurs qui justifieraient l'ajout d'un suffixe particulier ? Que suivez-vous comme règles, personnellement ?
Partager