2009-06-01 8 views

Répondre

7

Ceci n'est pas une réponse technique, et je ne connais certainement pas la réponse technique s'il y en a une. Mais, puisque vous avez demandé.

Les variables non utilisées sont complètement indépendantes. Ils n'ont aucun ancrage à quoi que ce soit et ils ne font littéralement rien sauf prendre de la place dans la pile. Il n'y a donc aucune raison valable d'avoir une variable inutilisée dans un programme complet. Vous pouvez déclarer des variables au cours du codage car vous savez que vous allez en avoir besoin plus tard et que vous ne faites qu'implémentation d'une partie d'une fonction maintenant, mais une fois que votre application est prête pour la production, la variable inutilisée ne fait rien. espace.


Il existe plusieurs raisons pour lesquelles vous pouvez avoir/conserver des paramètres inutilisés. Tout d'abord, vous devrez refactoriser chaque ligne de code qui fait référence à cette fonction. Ce n'est pas nécessairement facile ou possible.

Si vous avez écrit une API, il devient impossible de changer toutes ces lignes de code. Ainsi, dans certains cas, vous devez laisser le paramètre inutilisé dans la cohérence de l'API. Deuxièmement, si vous adhérez ou mettez en œuvre une interface, alors vous n'avez pas la possibilité de supprimer la variable inutilisée, elle vous est imposée. Même si vous n'avez pas besoin de toutes les informations contenues dans la variable, vous devez implémenter l'appel correct, et vous obtenez ainsi le paramètre inutilisé. Troisièmement, si vous créez une nouvelle API et que des informations sont requises pour beaucoup de choses, mais pas pour cet appel en particulier, elles peuvent être placées là pour des raisons de cohérence. Ou si c'est une fonctionnalité qui sera implémentée dans la prochaine version, alors vous pourriez tout aussi bien faire l'appel dès la première fois, afin que votre prochaine version ne devienne pas une version de rupture.


En fin de compte, la différence est que les paramètres sont des informations qui vous est donné, donc vous ne pouvez pas toujours besoin d'utiliser tout, mais les variables sont des informations que vous dites que vous avez besoin immédiatement. Puisque les variables locales sont immédiates et n'affectent rien hors de portée, se débarrasser des variables inutilisées est beaucoup plus facile et sans inconvénient.

+0

+1 "si vous adhérez ou mettez en œuvre une interface ..." – Cogsy

9

Il me semble qu'il y a plusieurs raisons pour lesquelles vous voudriez vraiment garder les paramètres inutilisés; par exemple, supposons qu'une application soit liée à votre DLL, et que vous fassiez une modification dans votre DLL - pour éviter de recompiler l'application, vous pouvez conserver les mêmes signatures de fonction.

Je ne peux pas penser à des raisons similaires que vous voudriez laisser les variables inutilisées autour et non-commentées.

1

Bonne question! Je suppose que l'équipe de Visual Studio n'a tout simplement pas encore implémenté cela. Je sais que d'autres outils d'inspection de code, comme ReSharper de JetBrains, vous préviendront des paramètres inutilisés.

En outre, comme une autre réponse a été mentionnée, il peut y avoir des raisons pour conserver les paramètres inutilisés. Dans le cas d'une méthode publique, le paramètre peut être utilisé par un autre assembly.

+0

FxCop est un autre outil qui va avertir sur les paramètres inutilisés – Pedro

0

Cela n'a pas vraiment d'importance car le compilateur supprime les variables locales inutilisées. La principale raison pour laquelle je pense que le compilateur met en garde contre les variables locales est que leur présence sans utilisation est probablement due à un oubli (soit vous avez déclaré une variable dont vous n'avez pas besoin ou vous avez refactorisé et une variable qui était nécessaire .

0

Vous pouvez implémenter une méthode d'interface ou un rappel (signature de délégué) avec des valeurs qui ne sont pas nécessaires pour cette implémentation particulière. Par exemple, je ne me souviens jamais d'utiliser le paramètre sender dans un rappel d'événement standard. Cela serait signalé partout.

Questions connexes