• [^] # Re: Juste mon point de vue

    Posté par . En réponse au journal De l'influence néfaste de Google sur les développeurs C++. Évalué à 4.

    comment une bibliothèque fait pour dire à son utilisateur "là il y a un cas que je ne sais pas traiter".

    Avec de la doc.

    Je préfère une lib qui est documentée correctement et qui ne vérifie (explicitement) pas des pré-conditions, ça me permets d'avoir un code comme ceci:

    void foo( std::vector<int> const& bar )
    {
     if( bar.empty() ) { return; }
     std::vector<int>::iterator it1 = std::find_if( std::begin( bar ), std::end( bar ), []( int v ){ return v > 10; } )
     if( std::end( bar ) == it1 ){ return; }
     std::vector<int>::iterator it2 = std::find_if( std::begin( bar ), std::end( bar ), []( int v ){ return v < 10; } )
     if( std::end( bar ) == it2 ){ return; }
    }
    

    Sans que std::find_if n'ait besoin de vérifier a chaque fois que le vector est bien peuplé.

    Le fait que le vector ne soit pas peuplé ne relève clairement pas de la responsabilité de std::find_if, ni de bien d'autres fonctions, et souvent on fait plusieurs opérations sur les collections, et il est plus pertinent en terme de perfs de ne faire le boulot qu'une seule fois plutôt qu'a chaque appel, d'autant que ça peut vite partir en cascade.

    Alors, oui, ça implique que le dev sache lire une doc... mais savoir lire une doc, ça me paraît la base du métier: on lit de la doc en permanence, a commencer par les documents (plus ou moins bien faits) qui décrivent le besoin auquel on doit répondre.
    Et le C++ n'a jamais fait de mystère qu'un de ses objectifs principaux, c'est la performance. Faire un truc rapide sans avoir de compréhension de la lib standard, peut importe le langage, ça me semble très... disons difficile.