Сообщение Re: const в аргументах методов от 05.04.2016 16:05
Изменено 06.04.2016 10:23 Videoman
Здравствуйте, yaser, Вы писали:
Y>Собственно 2 вопроса
Y>1. Насколько оправдано написание const спецификатора при передаче в метод параметров по значению? Может в этом нет смысла, ведь идет копирование?
По поводу этого пункта уже выше все детально разобрали.
Y>2. Насколько хорошо возвращать ссылку на члены класса? Может быть история что ссылка осталась, а класса нет. Может лучше отдавать по значению?
Плохо. На практике так делать не стоит, если только профайлер не показал что здесь узкое место. С точки зрения дизайна, это почти нарушение инкапсуляции, т.к. говорит что где-то там, внутри, есть std::string. Если время жизни класса планируется долгим, то при его дальнейшей модификации, возврат по ссылке может привести к проблемам с реализацией. Особенно осторожно нужно относиться к возвратам по ссылке, если метод виртуальный и класс планирует быть базовым для других или входить в иерархию наследования.
Y>Собственно 2 вопроса
Y>1. Насколько оправдано написание const спецификатора при передаче в метод параметров по значению? Может в этом нет смысла, ведь идет копирование?
По поводу этого пункта уже выше все детально разобрали.
Y>2. Насколько хорошо возвращать ссылку на члены класса? Может быть история что ссылка осталась, а класса нет. Может лучше отдавать по значению?
Плохо. На практике так делать не стоит, если только профайлер не показал что здесь узкое место. С точки зрения дизайна, это почти нарушение инкапсуляции, т.к. говорит что где-то там, внутри, есть std::string. Если время жизни класса планируется долгим, то при его дальнейшей модификации, возврат по ссылке может привести к проблемам с реализацией. Особенно осторожно нужно относиться к возвратам по ссылке, если метод виртуальный и класс планирует быть базовым для других или входить в иерархию наследования.
Re: const в аргументах методов
Здравствуйте, yaser, Вы писали:
Y>Собственно 2 вопроса
Y>1. Насколько оправдано написание const спецификатора при передаче в метод параметров по значению? Может в этом нет смысла, ведь идет копирование?
По поводу этого пункта уже выше все детально разобрали.
Y>2. Насколько хорошо возвращать ссылку на члены класса? Может быть история что ссылка осталась, а класса нет. Может лучше отдавать по значению?
Плохо. На практике так делать не стоит, если только профайлер не показал что здесь узкое место. С точки зрения дизайна, это, почти, нарушение инкапсуляции, т.к. говорит что где-то там, внутри, есть std::string. Если время жизни класса планируется долгим, то при его дальнейшей модификации, возврат по ссылке может привести к проблемам с реализацией. Особенно осторожно нужно относиться к возвратам по ссылке, если метод виртуальный и класс планирует быть базовым для других или входить в иерархию наследования.
Y>Собственно 2 вопроса
Y>1. Насколько оправдано написание const спецификатора при передаче в метод параметров по значению? Может в этом нет смысла, ведь идет копирование?
По поводу этого пункта уже выше все детально разобрали.
Y>2. Насколько хорошо возвращать ссылку на члены класса? Может быть история что ссылка осталась, а класса нет. Может лучше отдавать по значению?
Плохо. На практике так делать не стоит, если только профайлер не показал что здесь узкое место. С точки зрения дизайна, это, почти, нарушение инкапсуляции, т.к. говорит что где-то там, внутри, есть std::string. Если время жизни класса планируется долгим, то при его дальнейшей модификации, возврат по ссылке может привести к проблемам с реализацией. Особенно осторожно нужно относиться к возвратам по ссылке, если метод виртуальный и класс планирует быть базовым для других или входить в иерархию наследования.