Является ли использование «базовой» плохой практики, хотя это может быть полезно для читабельности?

Я знаю, что это субъективный вопрос, но мне всегда интересно узнать о передовых практиках в стиле кодирования. ReSharper 4.5 предупреждает меня о ключевом слове "base" перед вызовом метода base в классах реализации, т. Е.,

<code>base.DoCommonBaseBehaviorThing();
</code>

Хотя я ценю менталитет «чем меньше, тем лучше», я также потратил много времени на отладку / обслуживание приложений с высокой цепочкой, и чувствую, что это может помочь узнать, что вызов члена является базовым объектом, просто взглянув на него , Конечно, достаточно просто изменить правила ReSharper, но что вы думаете? Следует ли использовать "базу" при вызове членов базы?

Ответы на вопрос(5)

base.MethodCall(); - это когда у вас есть переопределенный метод с тем же именем в дочернем классе, но вы на самом деле хотите вызвать метод в родительском классе.

Для всех остальных случаев просто используйтеMethodCall();.

Ключевые слова какthis а такжеbase не делайте код более читабельным и его следует избегать во всех случаяхе @, если они необходимы - как в случае, описанном выше.

который необходимо принять во внимание, заключается в том, что, хотя вы в настоящее время не переопределяете этот метод, это не означает, что вы никогда этого не сделаете в будущем, и не будете предварительно связывать все свои вызовы с базой. Вы не получите новую функциональность, не выполнив поиск и замену всех своих вызовов.

Пока звоните с этим. не будет делать ничего, кроме уменьшения / увеличения читабельности (игнорируя ситуацию, когда две переменные в области имеют одно и то же имя) базы. Префикс изменит функциональность кода, который вы пишете во многих распространенных сценариях. Так что я бы никогда не добавил базу.е @, если необходимо

базу". в начале ваших участников вы можете легко отключить правило (выберите «Параметры»> «Уровень проверки»> «Избыточность кода»> «Резервный базовый»). Не позволяйте правилам статического анализа, не относящимся к поведению, влиять на предпочитаемый стиль кодирования.

РЕДАКТИРОВАТ

Следует учитывать, что статический анализ кода в FXCop и R # предназначен для предоставления правил для всех возможных нужд. На самом деле придерживатьсявс Правил одновременно немного обременительно. Вы должны определить предпочитаемый стиль кодирования (если вы работаете в команде, делайте это коллективно) и придерживаться его. Измените правила так, чтобы они соответствовали стандартам кодирования, а не наоборот.

base только при переопределении предыдущей функциональности.

Некоторые языки (C # не) также предоставляют эту функциональность, вызывая функцию по ее имени базового класса в явном виде, например:Foo.common() (вызывается откуда-то вBar, конечно)

Это позволит вам переходить вверх по цепочке или выбирать из нескольких реализаций - в случае множественного наследования.

Regardless, я считаю, что base следует использовать только тогда, когда необходимо явно вызывать функциональность вашего родителя, потому что вы переопределили эту функциональность в этом классе.

эт плохая практика или нет.баз, тем не мение дело не в хорошей или плохой практике, а в семантике. В то время какэт является полиморфным, что означает, что даже если метод, использующий его, принадлежит базовому классу, он будет использовать переопределенный метод,баз не является.баз всегда будет ссылаться на метод, определенный в базовом классе вызывающего его метода, следовательно, это не полиморфный. Это огромная семантическая разница.баз следует использовать соответственно. Если хочешьчт метод, используйтебаз. Если вы хотите, чтобы звонок оставался полиморфным, не используйтебаз.

ВАШ ОТВЕТ НА ВОПРОС