6 votes

Fonction C++ simple - Ce code est-il "bon" ?

Le code suivant a été produit par un consultant travaillant pour mon groupe. Je ne suis pas un développeur C++ (j'ai travaillé dans de nombreux langages cependant) mais j'aimerais avoir quelques opinions indépendantes sur le code suivant. Cela se trouve dans Visual Studio C++ 6.0. J'ai une réaction instinctive (pas une bonne, évidemment), mais j'aimerais avoir des "réactions instinctives" de développeurs C++ expérimentés (ou même pas si expérimentés que ça). Merci d'avance!

// Appel d'exemple
strColHeader = insert_escape(strColHeader, ',', '\\'); // Se débarrasser des virgules et en faire un caractère d'échappement

...snip...

CString insert_escape (CString originalString, char charFind, char charInsert) {
    bool continueLoop = true;   
    int currentInd = 0;

    do {
        int occurenceInd = originalString.Find(charFind, currentInd);

        if(occurenceInd>0) {
            originalString.Insert(occurenceInd, charInsert);
            currentInd = occurenceInd + 2; 
        }
        else {
            continueLoop = false;   
        }
    } while(continueLoop);
    return(originalString);
}

0voto

Konrad Rudolph Points 231505

Ceci est dans Visual Studio C++ 6.0.

Réaction initiale: beurk. Sérieusement! Le compilateur C++ livré avec VC++ 6 est connu pour être bogué et généralement très lent, et il a 10 ans.

@Downvoters : prenez-le en considération! Je dis cela sérieusement. VC6 est juste relativement improductif et ne devrait plus être utilisé! Surtout depuis que Microsoft a abandonné son support pour ce logiciel. Il y a des cas où cela ne peut pas être évité mais ils sont rares. Dans la plupart des cas, une mise à niveau de la base de code permet d'économiser de l'argent. VC++ 6 ne permet simplement pas d'exploiter le potentiel de C++, ce qui en fait un outil objectivement inférieur.

0voto

Ed Altorfer Points 3392

Il semble que des personnes ont abordé certains aspects fonctionnels de ce code pour vous, mais je suggère de rester à l'écart de la dénomination des variables comme vous l'avez employé ici.

À l'exception des contrôles UI, il est généralement mal vu d'utiliser la notation hongroise. C'est encore plus important avec les nombres...par exemple:

Je déclare:

float fMyNumber = 0.00;

Et puis j'utilise ça dans toute mon application. Mais ensuite, plus tard, je le change en double parce que je me rends compte que j'ai besoin de plus de précision. Maintenant, j'ai:

double fMyNumber = 0.00;

Il est vrai que la plupart des bons outils de refactoring pourraient corriger cela pour vous, mais il est probablement préférable de ne pas attacher ces préfixes. Ils sont plus courants dans certaines langues que dans d'autres, mais d'un point de vue de style général, vous devriez essayer de les éviter. À moins d'utiliser Notepad, vous avez probablement quelque chose de similaire à Intellisense, donc vous n'avez pas vraiment besoin de regarder le nom de la variable pour savoir de quel type il s'agit.

0voto

Phil Hannent Points 4092

Il y a toujours une meilleure implémentation. Si vous utilisez la fonction comme exemple du consultant qui n'est pas très bon, vous pourriez également considérer que même s'ils ne connaissaient pas une fonction qui existait déjà, ils pourraient avoir de l'expérience et une compréhension de la construction de projets.

Le développement logiciel ne consiste pas seulement en la fonction parfaite mais aussi en la qualité de l'architecture de l'ensemble.

0voto

Jackson Points 3828

Je m'inquiète toujours lorsque je vois une boucle do..while ; à mon avis, elles sont toujours plus difficiles à comprendre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X