Название: Организация "утилей" Отправлено: Igors от Май 04, 2016, 14:01 Добрый день
Вот опять возникла эта ситуация. Есть библиотечный класс который надо "обустроить" поудобнее. Напр сейчас класс с мета-данными Код Мне нужно извлечь параметр по ключу "noise_scale", убедиться что значение корректно (флот), иначе использовать какой-то дефаулт. Такие операции массовые, ясно что нужно написать ф-ции утилиты (напр GetNoiseScale) чтобы всякий раз не возюкаться. Но где их поместить, как оформить? Или даже более упрощенный пример: вот набегают полезные ф-ции для работы с пресловутым QString - ну и куда их девать? Наследоваться от QString явно нехорошо, тогда как? Спасибо Название: Re: Организация "утилей" Отправлено: kai666_73 от Май 04, 2016, 16:55 Или даже более упрощенный пример: вот набегают полезные ф-ции для работы с пресловутым QString - ну и куда их девать? Наследоваться от QString явно нехорошо, тогда как? Спасибо Я бы в библиотеку вынес. Например, Utils, а в ней StringUtils.cpp/StringUtils.h с полезными экспортируемыми функциями... Или я вопроса не понял?) Название: Re: Организация "утилей" Отправлено: Igors от Май 05, 2016, 09:32 Я бы в библиотеку вынес. Например, Utils, а в ней StringUtils.cpp/StringUtils.h с полезными экспортируемыми функциями... Хорошо, попробуем так и сделатьКод В принципе нормальный вариант, но достаточно ли убедителен вызов/использование просто "GetNoiseScale"? Напр слова "noise" и "scаle" могут быть и никак не связаны с "Motion" Название: Re: Организация "утилей" Отправлено: Old от Май 05, 2016, 09:46 Если вы все равно передаете в функции указатель (ссылку) на Motion, т.е. явно привязываете ее к Motion, почему бы не расширить класс Motion такими методами? Для чего делать внешние геттеры/сеттеры, если можно их добавить в сам класс?
Название: Re: Организация "утилей" Отправлено: Igors от Май 05, 2016, 09:52 Если вы все равно передаете в функции указатель (ссылку) на Motion, т.е. явно привязываете ее к Motion, почему бы не расширить класс Motion такими методами? Для чего делать внешние геттеры/сеттеры, если можно их добавить в сам класс? В том-то и дело что класс Motion библиотечный, поддерживается разработчиком либы, и время от времени обновляется, поэтому трогать его как минимум очень нежелательно. Напр добавить свои методы в QString можно, но во что обойдется (пере)сборка всякий раз?Название: Re: Организация "утилей" Отправлено: Old от Май 05, 2016, 10:01 В том-то и дело что класс Motion библиотечный, поддерживается разработчиком либы, и время от времени обновляется, поэтому трогать его как минимум очень нежелательно. Напр добавить свои методы в QString можно, но во что обойдется (пере)сборка всякий раз? Тогда этоВ принципе нормальный вариант, но достаточно ли убедителен вызов/использование просто "GetNoiseScale"? Напр слова "noise" и "scаle" могут быть и никак не связаны с "Motion" не проблема.Можно сделать несколько функций для манипуляций с разными объектами: Код
Тогда для манипуляций с одинаковыми параметрами понадобиться одинаковые по имени функции. Название: Re: Организация "утилей" Отправлено: Old от Май 05, 2016, 11:46 А если таких функций набирается много, можно сделать некий класс враппер:
Код
Название: Re: Организация "утилей" Отправлено: Igors от Май 05, 2016, 14:34 не проблема. Все-таки я сейчас оборачиваю в namespace, а при использовании когда как. Можно сделать несколько функций для манипуляций с разными объектами: Код Иной раз длинновато, но имя namespace заметно облегчает понимание. Того же можно добиться сделав класс со всеми методами static (а ля жаба), но тогда уже имя класса придется писать всегда А если таких функций набирается много, можно сделать некий класс враппер: Так тоже неск раз пробовал. Вроде логично, но далеко не всегда удается "запастись" хелпером чтобы юзать его многократно, приходится частенько его создавать. а иногда и присматривать не грохнул ли само motionКод Так особого выигрыша нет Название: Re: Организация "утилей" Отправлено: Old от Май 05, 2016, 19:51 Так особого выигрыша нет Выигрыш будет при сложной настройке Motion:Код
|