Правило RequireThis действительно используется в том смысле, что оно может предотвратить возможную ошибку в методах и конструкторах, когда она применяется к полям. Приведенный ниже код почти наверняка является ошибкой:
void setSomething(String something) {
something = something;
}
Код, подобный этому, будет скомпилирован, но ничего не будет делать, только переназначит значение параметра метода для себя. Более вероятно, что автор намеревался сделать это:
void setSomething(String something) {
this.something = something;
}
Это опечатка, которая может произойти, и ее стоит проверить, так как она может помочь предотвратить сложные проблемы при отладке, если код не работает, потому что this.something
не установлен намного позже в программе.
Настройки checkstyle позволяют вам сохранить эту полезную проверку для полей, опуская при этом ненужную проверку для методов путем настройки правила следующим образом:
<module name="RequireThis">
<property name="checkMethods" value="false"/>
</module>
Когда речь идет о методах, это правило не имеет реального эффекта, потому что вызов this.getMeSomething()
или просто getMeSomething()
не влияет на разрешение методов Java. Вызов this.getSomethingStatic()
по-прежнему работает, когда метод является статическим, это не ошибка, это всего лишь предупреждение в различных средах разработки и инструментах статического анализа.