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