2009-05-20 4 views
1

Je veux créer un gros fichier pour toutes les fonctions sympas que je trouve en quelque sorte réutilisables et utiles, et les mettre toutes dans ce seul fichier. Eh bien, pour le début, je n'en ai pas beaucoup, donc ça ne vaut pas la peine de penser à faire plusieurs fichiers, je suppose. J'utiliserais des marques pragma pour les séparer visuellement.Est-ce important de savoir s'il y a des fonctions inutilisées que je mets dans un gros fichier CoolFunctions.h/CoolFunctions.m qui est inclus partout dans mon projet?

Mais la question: ces méthodes inutilisées dérangeraient-elles? Mon application exploserait-elle ou aurait-elle moins de performances? Ou est le compilateur/éditeur de liens assez intelligent pour savoir que la fonction A et B ne sont pas nécessaires, et donc ne pas copier leur "code" dans mon application qui en résulte?

Répondre

6

Non, ils n'affecteront pas directement votre application. Gardez à l'esprit cependant, tout ce code inutilisé va rendre votre fichier de fonctions plus difficile à lire et à maintenir. De plus, l'écriture de fonctions que vous n'utilisez pas actuellement facilite l'introduction de bogues qui ne deviendront apparents que bien plus tard lorsque vous commencerez à utiliser ces fonctions, ce qui peut être très déroutant car vous avez oublié comment ils sont écrites et supposeront probablement qu'elles sont correctes parce que vous ne les avez pas touchées depuis si longtemps. De plus, dans un langage orienté objet comme Objective-C, les fonctions globales ne doivent être utilisées que pour des cas exceptionnels, très réutilisables. Dans la plupart des cas, vous devriez plutôt écrire des méthodes dans les classes. Je pourrais avoir une ou deux fonctions globales dans mes applications, généralement liées au débogage, mais typiquement rien d'autre. Donc, non, ça ne va pas faire de mal, mais je l'évite quand même et je me concentre sur l'écriture du code dont vous avez besoin maintenant, en ce moment même.

1

Je ne pense pas qu'avoir des fonctions inutilisées dans le fichier .h vous blessera de quelque façon que ce soit. Si vous compilez tous les fichiers .m correspondants contenant les fonctions inutilisées dans votre cible de génération, vous finirez par créer un exécutable plus grand que nécessaire. Idem pour si vous incluez le code via des bibliothèques statiques.

Si vous utilisez une fonction mais que vous n'avez pas inclus le bon fichier .m ou la bonne bibliothèque, vous obtenez une erreur de liaison.

2

Le code serait encore compilé et lié au projet, il ne serait tout simplement pas utilisé par votre code, ce qui signifie que votre exécutable résultant sera plus grand. Je diviserais probablement les fonctions en fichiers séparés, en fonction des zones communes à traiter, de sorte que j'aurais une bibliothèque de fonctions d'image séparée d'une bibliothèque de fonctions de manipulation de chaînes, puis j'inclurais celles qui sont pertinentes pour le projet en main.

7

Cela ressemble à un cauchemar architectural et d'entretien absolu. En pratique, vous devriez jamais faire un énorme fichier blob avec un ensemble aléatoire de méthodes que vous trouvez utiles. Ajoutez les méthodes aux classes ou catégories appropriées. Voir here pour plus d'informations sur le blob anti-pattern, ce que vous faites ici.

Pour répondre directement à votre question: non, les méthodes qui ne sont jamais appelées n'affecteront pas les performances de votre application.

Questions connexes