![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Woo |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2007 Репутация: нет Всего: нет |
Есть очень длинный метод вида:
В нем переменная bits используется для диагностики. Я бы хотел отрефакторить этот код и разбить длинный метод на несколько, например такого вида:
Но вот вопрос: как поступить с переменной bits? Ведь в методы one и second её передавать плохо, так как они должны точно знать какие биты проставлять, но это странно, так как методы могут вызываться из разных мест. Можно было бы передавать некий адаптер bits с параметром смещения битов, начиная с которого следует проставлять биты в методах, но это как-то слишком сложно. Каким тут может быть наилучшее решение? Это сообщение отредактировал(а) Woo - 9.3.2018, 14:43 |
||||
|
|||||
Namira |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.2.2011 Репутация: нет Всего: нет |
||||
|
||||
Woo |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2007 Репутация: нет Всего: нет |
Дело в том, что эта переменная относится только к методу, а не ко всему классу, поэтому так делать некорректно. Мне сейчас кажется лучший вариант - это использовать прием рефакторинга, который называется Замена метода объектом методов. И уже в этом новом объекте разместить закрытый член класса. Что-то вроде такого:
Как думаете, есть вариант получше? |
||||
|
|||||
Namira |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.2.2011 Репутация: нет Всего: нет |
Кто тебе такое сказал? Как только ты решил ее юзать в нескольких методах, так сразу она перестала относиться только к методу, и относиться она стала уже к классу. В противном случае используй ее только в одном методе, как локальную. Какие проблемы?
Серьезно? А выше я что тебе написал? Не то же самое что написано по твоей ссылке? ![]() Это сообщение отредактировал(а) Namira - 11.3.2018, 02:03 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |