C ++, где мне понадобится локальное расширение или сторонний метод? - PullRequest
0 голосов
/ 11 апреля 2011

Я недостаточно знаком с C ++, чтобы знать, где понадобятся эти 2 очень похожих рефакторинга (ввести локальное расширение и ввести сторонний метод). Я знаю случаи, которые заставляют их использовать, но я не могу представить примеры классов, которые будут нуждаться в этом "приеме". Я делаю учебник по рефакторингу C ++, чтобы помочь новым разработчикам, но, похоже, мне тоже нужна твоя помощь:)

Если вы использовали это, пожалуйста, сообщите мне, где и почему. Заранее спасибо.

1 Ответ

1 голос
/ 12 апреля 2011

«Внешние» методы - это методы, которые работают, но не являются членами класса. В Java это просто означает (статические) методы других классов, которые принимают первый класс в качестве аргумента. В C ++ вам нужно знать о свободных функциях. В отличие от Java, в C ++ методы могут существовать вне классов. int main() самый известный. STL также упакован с бесплатными функциями. Просто загляните в одиночестве.

Для Java сайт, на который вы ссылаетесь, советует «сторонние методы - обходной путь» и предлагает «Ввести локальное расширение» в качестве альтернативного рефакторинга. В C ++ свободные функции не обходные пути. Это означает, что существует гораздо меньшее давление для введения локальных расширений.

Кроме того, в C ++ функции не являются виртуальными по умолчанию, и объекты часто передаются по значению. Это означает, что метод «введения локальных расширений» часто терпит неудачу.

Я надеюсь, что это покажет фундаментальную проблему с вашим подходом: вы принимаете методы рефакторинга для Java, которые обращаются к определенным слабым местам Java, и пытаетесь преобразовать их в C ++, который имеет довольно другой набор слабых мест. Даже там, где это работает, это часто не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...