Est-il une différence si je nettoie ma clause uses si les unités supprimées sont encore utilisés dans d'autres unités?

StackOverflow https://stackoverflow.com/questions/763862

  •  11-09-2019
  •  | 
  •  

Question

Personnellement, je l'aime si mes clauses de uses sont aussi petits que possible, mais dans de nombreuses applications les unités vraiment grandes (en termes de ballonnements l'exécutable) comme Forms ou VirtualTrees sont nécessaires dans au moins une autre unité de toute façon.

: Est-il une différence si je nettoie mes clauses uses même si en fin de compte aucune unité est retirée du projet? Si oui: De quelle façon? Et: est-nettoyage de la clause uses quelque chose qui devrait être fait le plus tôt possible ou peut-il attendre jusqu'à ce que je trouve une unité non utilisée par hasard?

Était-ce utile?

La solution

Si elle est utilisée ailleurs dans le projet, il ne fera pas beaucoup de différence, sauf pour produire un code plus propre qui est plus facile à lire. Il y a quelques petites choses qu'il pourrait affecter, cependant.

Compilation Ordre: Le compilateur décide quel ordre de compiler des unités en fonction de l'utilisation qui unités unités. Si vous supprimez une unité de la clause uses d'une unité précoce, qui pourrait provoquer l'unité utilisée pour compiler plus tard dans le cycle de compilation. Cela peut ne pas sembler beaucoup, mais gardez à l'esprit que initialisation sections exécuter dans le même ordre que les unités ont été compilées. Cela ne devrait vraiment pas faire une grande différence à votre projet, cependant.

CodeInsight: Lorsque vous tirez vers le haut le menu déroulant de la complétion de code, il offrira des choix en fonction de toutes les unités actuellement disponibles. Vous pouvez réduire le nombre de choix qu'il doit filtrer - et donc la quantité de temps qu'il faut pour tirer la chose sanglante jusqu'à - en réduisant le nombre d'unités que vous utilisez. (Non, je ne suis pas amer. Pourquoi demandez-vous?)

Autres conseils

En général, non. Si une unité est utilisée une fois, partout dans le projet, peu importe combien de fois il est utilisé. A l'inverse, peu importe combien d'endroits vous supprimez une unité de si elle est encore utilisé au moins une fois quelque part. Le programme compilé se comportera de la même, et il aura à peu près la même taille.

La seule différence est dans l'ordre d'initialisation et de finalisation sections unité. Unité de commande-utilisation affecte l'ordre ces sections sont exécutées, même si l'effet n'a jamais été documenté (essayez donc de ne pas compter sur l'ordre d'initialisation).

Mais je vous encourage encore à nettoyer vos listes unitaires, pour la même raison que vous êtes encouragés à nettoyer vos listes de variables et vos listes de paramètres. Lorsque vous vous débarrasser des choses que vous n'avez pas besoin, il est plus facile de lire le code que vous avez gardé parce que vous pouvez être raisonnablement sûr que ce que vous lisez donne une image précise de ce que le code fait. Si votre code mentionne un tas d'unités, mais jamais fait vraiment l'utilisation d'entre eux, alors la prochaine fois que vous ou quelqu'un d'autre se le code, il y a un bon changement que vous allez passer un peu de temps à essayer de trouver où votre code utilise les installations de ces unités. (Vous dites: « Hmm, ce code comprend Graphics, mais je ne vois pas où il tire quelque chose. Je ferais mieux de prendre un autre regard, parce que je ne pensais pas que ce code avait des responsabilités comme ça. Hey , collègue - peut prendre un certain temps hors de votre journée pour me dire où cette unité attire les choses »)

Oui, il y a un tour qui est souvent négligée et peut venir vous mordre dans le dos:
S'il y a une initialisation / finalisation code , il est toujours exécuté , même quand il n'y a pas de code autrement appelé dans votre unité (et l'unité est toujours inclus pendant que vous penseriez que ce ne serait pas). Ainsi, la suppression d'une unité que vous n'avez pas besoin dans votre projet peut faire une différence notable.

Une autre chose à noter est que l'ordre des unités détermine quel identifiant le choix du compilateur s quand il y a des homonymie dans 2 unités différentes et vous les appelez sans préfixant le nom de l'unité (que vous devriez toujours faire comme une meilleure pratique).

En dehors de cela, comme Mason et Rob ont fait remarquer, les unités ordre des impacts, l'ordre dans lequel elles sont établies et la séquence de l'initialisation / finalisation.

En ce qui concerne l'idée de code, il sera plus rapide si vous supprimez des unités inutiles, mais aussi au niveau mondial si toutes vos unités utilisées dans le projet sont explicitement ajoutés à la DPR au lieu de compter sur le chemin de recherche pour les trouver quand ils sont implicitement ajoutée par une autre unité.

Je stronlgy en désaccord avec Mason et Rob: cela fait une différence

Dépendance réduction.

La différence est pas dans le projet en cours comme l'a expliqué Mason et Rob. Au lieu de cela, la différence est dans votre prochain projet. Si vous gardez les unités inutiles (serveur) dans votre unité (client), puis en utilisant cette unité client dans un autre projet va tirer dans les dépendances aussi bien. S'il n'y a pas d'autres unités clientes justifiées pour les unités juste tiré dans, alors vous avez ajouté le ballonnement.

Utilisez le libre Pascal Analyzer pour trouver les unités inutilisées dans votre code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top