2015-04-20 2 views
1

Checkstyle warns about RequireThisQuelle est la motivation derrière RequireThis?

Personnellement, je trouve plus lisible (en particulier lors de la lecture pas de IDE, mais des outils d'examen de code, par exemple), mais y at-il d'autres raisons pour cette vérification à côté de la lisibilité?

+0

Il est expliqué juste en-dessous de l'en-tête d'entrée. * Vérifie que les références aux variables d'instance et aux méthodes du présent objet sont explicitement de la forme "this.varName" ou "this.methodName (args)" et que ces références ne s'appuient pas sur le comportement par défaut quand "this". est absent. * –

Répondre

1

C'est juste une convention avec quelques avantages et inconvénients.

Cette vérification est particulièrement utile si vous n'utilisez pas IDE. Il peut être utile pour la revue de code de désambiguïser une référence de code, d'améliorer la lisibilité et d'éviter toute confusion avec les accès aux variables locales ou aux paramètres. D'autre part, la plupart des styles de codage ne recommandent pas l'utilisation de this partout, car cela peut être considéré comme inutile, redondant et trop verbeux.

1

Considérez ce qui suit:

int b,c; 

public MyConstructor(int a, int b){ 
    b = a; 
    c = b; 
} 

Il est légal. Il compile. Cela ne fait probablement pas ce que vous vouliez. L'ajout de this fait en sorte que vous ne fassiez pas d'ombre accidentellement quelque chose que vous ne vouliez pas.

+0

Thomas, oui, * toujours * dans le constructeur tout le monde dans les équipes avec lesquelles je travaillais a utilisé ceci. Les questions sont peut-être si c'est une pratique recommandée, pourquoi dans les méthodes de classe cela est utilisé si rarement, en particulier lors de l'appel de méthodes privées internes, comme callPrivateMethod(), au lieu de this.callPrivateMethod() – akazlou