• [^] # Re: Réponses en vrac

    Posté par (site web personnel) . En réponse à la dépêche Coder efficacement, bonnes pratiques et erreurs à éviter. Évalué à 2. Dernière modification le 17 avril 2014 à 17:41.

    En C tu n'auras pas ces choses là:

     enum type { un, deux, MAX__};
     char const* const names[] = {"un", "deux"};
     static_assert(MAX__, std::extend<decltype(names)>::value); // écrit de mémoire

    Ni

     enum class type { a, b, c, MAX__};

    Ni mon préféré en C++98/03

     struct TypeEnum {
     enum type { un, deux, MAX__};
     TypeEnum & operator++() {
     assert(m_value < MAX__);
     m_value = type(m_value + 1);
     }
     // + constructeurs, fonctions pour convertir, ...
     private:
     type m_value;
     };

    Mais je reconnais volontiers que ce n'est pas forcément l'extrait le plus alléchant. Mais bon. On trouvera toujours à redire car au fond, l'Oncle Bob a déjà décrit SOLID en long et large, ou encore le RAII est un classique des FAQs, etc.