Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Где объявлять вспомогательные функции?

#cpp #ооп #code_style #стиль #оформление


К примеру, у меня есть класс, который делает WMI запросы, там часто надо преобразовывать
QString к BSTR, поэтому я хочу написать функции преобразования.
Где мне их лучше объявлять, в этом же классе, если да, то private или public? Создать
namespace с двумя функциями только для этого класса? Создать общий namespace для всех
функций преобразования, и, пока что, записать туда только две эти функции? Объявить
их глобально в хедере этого класса?
    


Ответы

Ответ 1



Как пишет Скотт Мейерс в своей книге «Эффективное использование C++»: Предпочитайте функциям-членам функции, не являющиеся ни членами, ни друзьями класса. Это повышает степень инкапсуляции и расширяемость, а также гибкость упаковки функциональности. Если хотите ознакомиться с этим правилом детальнее - см. стр. 105 вышеупомянутой книги. Если Ваши функции выполняют преобразование и не требуют доступа к закрытам данным-членам или методам Вашего класса - пользуйтесь этим советом, поскольку, если свободная функция способна обеспечить ту же функциональность, что и метод класса, то предпочтительней является свободная функция, поскольку она увеличивает степень инкапсуляции данных. А это уже одна из особенностей, ожидаемых от ООП программ. Идея использовать namespace, в который Вы поместите свой класс и эти функции преобразования, хорошая, явно лучше, чем подвесить их в глобальной области видимости.

Комментариев нет:

Отправить комментарий