Форум программистов, компьютерный форум CyberForum.ru

Const-параметры в аргументах функции - C++

Восстановить пароль Регистрация
 
 
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,625
Записей в блоге: 17
13.07.2015, 19:19     Const-параметры в аргументах функции #1
Цитата Сообщение от hoggy Посмотреть сообщение
void setAmount(const int _amoutn)
А тут уже const излишен, перебор.

Добавлено через 3 минуты
C++
1
2
3
    void setDescription(const std::string& _description) { m_description = _description; }
    //...
    std::string& getDescription()                        { return m_description;  }
Зачем дублировать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
14.07.2015, 23:14     Const-параметры в аргументах функции #21
Цитата Сообщение от Avazart Посмотреть сообщение
Это не ваше мнение
Мое мнение заключается в том, что эта тема не стоит споров.
Т.к. во-первых заранее известно, что у нее два лагеря.
2) Все уже по 10 раз обсуждено.
3) Здесь неподходящее для этого место.

Цитата Сообщение от Avazart Посмотреть сообщение
вырванная "цитата" Маерса, при чем искаженное, т.е деза
Почему искаженная и где? Я полную цитату приводил выше - это абзац, законченная мысль. Причем специально на английском. Вот, извольте, на русском:
В отношении const-параметров трудно сказать что-то новое - они ведут себя как локальные const-объекты, и вы должны использовать и то и другое (оба) всегда, когда можете. Кроме тех случаев, когда вам нужно менять параметр или локальный объект, стоит убедиться, что объявили их как const. Вам всего-то придется набрать шесть символов, зато это предотвратит досадные ошибки типа «хотел напечатать ==, а нечаянно напечатал =», к чему это приводит, мы только что видели.
There's nothing particularly new about const parameters — they act just like local const objects, and you should use both whenever you can. Unless you need to be able to modify a parameter or local object, be sure to declare it const. It costs you only the effort to type six characters, and it can save you from annoying errors such as the "I meant to type '==' but I accidently typed '='" mistake we just saw.
Добавлено через 5 минут
Цитата Сообщение от Avazart Посмотреть сообщение
И что ваша нейтральная точка зрения мешает вам поделится ссылкой на такой проект?
Большинство проектов, которые я видел, имеют закрытую лицензию, так что нет, поделиться ссылкой я не могу. Придется поверить мне на слово. Про проект я написал опять же к тому, чтобы показать, что в этом вопросе два лагеря (целые команды, которые такое исповедуют), а не один лишь hoggy. По идее это должно было сподвигнуть тебя закончить спор из-за его нарастающей бессмысленности (давайте сейчас докажем всем мусульманам, что им нужно верить в Христа - грубое сравнение, но бессмысленность такая же). Но это не сработало, потому что ты, видимо, сторонник крестовых походов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,625
Записей в блоге: 17
14.07.2015, 23:35  [ТС]     Const-параметры в аргументах функции #22
Цитата Сообщение от DrOffset Посмотреть сообщение
давайте сейчас докажем всем мусульманам, что им нужно верить в Христа - грубое сравнение,
Цитата Сообщение от DrOffset Посмотреть сообщение
Придется поверить мне на слово.
Я не полагаюсь на веру, я полагаюсь на опыт/факты которые вы не привели, поэтому это воспринимаю не иначе как слив.
И да, я не считаю авторитетной треп на каком то форуме, для меня куда более авторитетны слова члена комитета по стандартизации или тот же код из примеров книг, кода STL итд.
Цитата Сообщение от DrOffset Посмотреть сообщение
Почему искаженная и где? Я полную цитату приводил выше - это абзац, законченная мысль.
Т.е. вы закрываете глаза на код примеров из книги?
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
14.07.2015, 23:51     Const-параметры в аргументах функции #23
Цитата Сообщение от Avazart Посмотреть сообщение
Я не полагаюсь на веру
Это была метафора, про Христа. Вера тут не при чем.
Есть два лагеря:
1) Товарищи, ставящие const в аргументах делают это для повышения, по их мнению, самодокументируемости кода.
2) Товарищи, которые не считают это полезным, убеждены что в коротких функциях итак понятно, меняется параметр или нет, а длинные писать вообще не стоит.

Собственно, что дальше? Вопрос риторический, ибо ответ - ничего. Они будут независимо от нашего здесь общения.

Цитата Сообщение от Avazart Посмотреть сообщение
факты которые вы не привели
Привел. Мнение Мэйерса, которое не столь категоричное, как у Саттера. Ну так в чем я исказил цитату Мэйерса-то? Я не говорю, что Мэйрса нужно слушать (например мне не нравится его рекомендация засовывать везде auto). Но это мнение. Его можно хотя бы учесть.

Цитата Сообщение от Avazart Посмотреть сообщение
Т.е. вы закрываете глаза на код примеров из книги?
Дело в том, что в книге у него множество вопросов освещено. И код иллюстрирует эти вопросы, код не должен быть эталоном, он должен освещать тему, а не загромождать. Поэтому, я не считаю, что код из его книги мог бы быть показательным. Хотя вот в правиле 46 он делает константными возвращаемые значения и ссылается на правило 3. Это не совсем то, что мы тут обсуждаем, но близко. Я лично тоже не могу припомнить, когда мне требовалось возвращаемые по значению объекты делать константными. Но я понимаю его мотивацию. Т.е. в книге все-таки есть примеры, иллюстрирующие правило 3. Там, где это к месту.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,625
Записей в блоге: 17
15.07.2015, 00:11  [ТС]     Const-параметры в аргументах функции #24
Цитата Сообщение от DrOffset Посмотреть сообщение
Это была метафора, про Христа. Вера тут не при чем.
На метафору - метофорой.

Цитата Сообщение от DrOffset Посмотреть сообщение
Есть два лагеря:
Неужели ? Где покажите мне первых? Покажите мне их код.

Цитата Сообщение от DrOffset Посмотреть сообщение
Мнение Мэйерса, которое не столь категоричное, как у Саттера.
Это не означает что оно именно в этом контексте уместно. Если вообще говорить главе там обсуждалось только указатели/ передача по кост ссылке и возврат, про передачу по конст значению вроде ничего нет.

Цитата Сообщение от DrOffset Посмотреть сообщение
Дело в том, что в книге у него множество вопросов освещено.
Покажите хотя бы один пример.

Цитата Сообщение от DrOffset Посмотреть сообщение
Дело в том, что в книге у него множество вопросов освещено. И код иллюстрирует эти вопросы, код не должен быть эталоном, он должен освещать тему, а не загромождать. Поэтому, я не считаю, что код из его книги мог бы быть показательным.
А каким он должен быть?
Чего стоят советы того кто сам им не следует при чем не делая оговорок?
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
15.07.2015, 00:26     Const-параметры в аргументах функции #25
Цитата Сообщение от Avazart Посмотреть сообщение
Чего стоят советы того кто сам им не следует при чем не делая оговорок?
Мэйерс так-то вообще не программист - он преподаватель. Он никогда не писал в команде и вообще не работал программистом серьезно. Он всю жизнь спрашивает других, о их опыте. Потом пишет на основе этого книги. Стоит ли верить человеку не закончившему ни одного серьезного проекта? Этот вопрос каждый сам для себя разрешит.

Задача каждого правила в его книге донести суть. Непоказательно было бы засовывать туда все что можно, ради того, чтобы доказать, что ты не забыл о чем писал три правила назад. Поэтому в его примерах только то, что относится к обсуждаемым в них проблемам.
Цитата Сообщение от Avazart Посмотреть сообщение
Это не означает что оно именно в этом контексте уместно.
Может и не уместно. Я, если ты не забыл, не придерживаюсь этого правила.

Цитата Сообщение от Avazart Посмотреть сообщение
Где покажите мне первых? Покажите мне их код.
Т.е. ты предлагаешь сейчас мне все бросить и начать срочно шерстить интернет на наличие библиотек с таким подходом? Ты это серьезно? И даже если я найду что-то такое, то с вероятностью 99% ты скажешь, что это какая-то недоделанная наколеночная работка, которая не может служить репрезентативным примером. Так и будет.
Я сужу о наличии лагеря по количеству вопросов и дискуссий, которые возникают на эту тему. Если бы лагеря не было, то никто не отстаивал бы эту точку зрения. Никто бы не писал вот таких постов: http://stackoverflow.com/a/117557 и никто бы их не апал.

Мое мнение понятно? Если да, то я вас оставлю.
 Комментарий модератора 
Не озоруйте тут.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,625
Записей в блоге: 17
15.07.2015, 00:43  [ТС]     Const-параметры в аргументах функции #26
Цитата Сообщение от DrOffset Посмотреть сообщение
Мэйерс так-то вообще не программист - он преподаватель.
Стоп ... вы же его приводили ради справедливости, а не я.
Цитата Сообщение от DrOffset Посмотреть сообщение
Т.е. ты предлагаешь сейчас мне все бросить
Я предлагаю не бросать... слова на ветер...
Ведь было время что бы залезь в оригинал книги Майерса ...

Добавлено через 5 минут
Цитата Сообщение от DrOffset Посмотреть сообщение
Я сужу о наличии лагеря по количеству вопросов и дискуссий, которые возникают на эту тему. Если бы лагеря не было, то никто не отстаивал бы эту точку зрения. Никто бы не писал вот таких постов: http://stackoverflow.com/a/117557 и никто бы их не апал.
Что бы создавать посты и их подымать, достаточно новичков.
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
15.07.2015, 00:48     Const-параметры в аргументах функции #27
Цитата Сообщение от Avazart Посмотреть сообщение
Ведь было время что бы залезь в оригинал книги Майерса
Она у меня на полке стоит. Это было несложно.

Цитата Сообщение от Avazart Посмотреть сообщение
вы же его приводили ради справедливости, а не я.
Справедливость в том, что есть разные мнения. Саттер написал почти однозначно, что не стоит
Цитата Сообщение от Avazart Посмотреть сообщение
Избегайте const в объявлениях функций, принимающих параметры по значению.
, Мэйерс написал почти однозначно - стоит.
Цитата Сообщение от DrOffset Посмотреть сообщение
В отношении const-параметров трудно сказать что-то новое - они ведут себя как локальные const-объекты, и вы должны использовать и то и другое (оба) всегда, когда можете.
Сомневаться в их (и Саттера и Мэйерса) компетентности у меня нет причин - никаких. Но я указал, что Мэйерс не программист затем, чтобы у тебя не возникло ложных предположений, будто я на него молюсь. Если же у тебя есть основание не доверять его мнению из-за этого факта, то - это твое право.

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Что бы создавать посты и их подымать, достаточно новичков.
Насчет тематики "заговора накрутчиков" - это не ко мне (только если это происходит не на нашем форуме ).
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,625
Записей в блоге: 17
15.07.2015, 00:51  [ТС]     Const-параметры в аргументах функции #28
Цитата Сообщение от DrOffset Посмотреть сообщение
Мэйерс написал почти однозначно - стоит.
А что на заборе пишут?
Вы буквально вырвали цитату из контекста, ради притянутой справедливости.
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
15.07.2015, 00:57     Const-параметры в аргументах функции #29
Цитата Сообщение от Avazart Посмотреть сообщение
Вы буквально вырвали цитату из контекста, ради притянутой справедливости.
Ты так и не объяснил из какого контекста я ее вырвал? Еще раз говорю - это абзац. Абзацем обозначают законченную мысль. В этом абзаце шла речь про параметры с const. Я его полностью процитировал.

Процитируй пожалуйста фразу из его книги так, чтобы был виден контекст, который я потерял.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,625
Записей в блоге: 17
15.07.2015, 01:01  [ТС]     Const-параметры в аргументах функции #30
Цитата Сообщение от DrOffset Посмотреть сообщение
В этом абзаце шла речь про параметры с const.
Цитата Сообщение от Avazart Посмотреть сообщение
Это не означает что оно именно в этом контексте уместно. Если вообще говорить главе там обсуждалось только указатели/ передача по кост ссылке и возврат, про передачу по конст значению вроде ничего нет.
???
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
15.07.2015, 01:13     Const-параметры в аргументах функции #31
Цитата Сообщение от Avazart Посмотреть сообщение
про передачу по конст значению вроде ничего нет.
Ну елки-палки. Я же дал цитату. Ты ее не читал?
Он пишет, что правила для константных параметров функции такие же как для константных локальных объектов. Т.е. он провел аналогию между ними и порекомендовал использовать всегда, когда это возможно.

Сперва он рассказывал про указатели и итераторы подробно, потому что это проблемная тема. Потом было несколько абзацев про возвращаемое константное значение. Потом, когда он уже все объяснил, сделал небольшое дополнение насчет остальных констант в программе - локальных и параметров функции. Это отдельная мысль.

Итого у него было три подтемы внутри этого правила. Так что я ничего не вырывал. Чтобы не возникало дополнительных недоразумений, еще раз уточню, что я цитировал третье издание (которое 55 советов).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2015, 12:04     Const-параметры в аргументах функции
Еще ссылки по теме:

C++ int const * const foo(const int* param) const - разъясните значение квалификаторов
Const после функции C++
C++ Отличие Myclass& от Myclass* в аргументах функции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
hoggy
5230 / 2121 / 404
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
15.07.2015, 12:04     Const-параметры в аргументах функции #32
Цитата Сообщение от Avazart Посмотреть сообщение
Я уже давно сообщил, но вы по прежнему продолжая защищать свой код и сводя беседу в крайности.
единственное, что вы сообщили: "так сказал Саттер".

я делаю вывод:
вы сами не понимаете причину, по которой так сказал Саттер.

тобишь, вы тупо повелись на авторитет.

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Я уже давно сообщил, но вы по прежнему продолжая защищать свой код и сводя беседу в крайности.
вы ничего не сообщили кроме: "так сказал Саттер".

я делаю вывод, что вы сами не понимаете, почему так сказал Саттер.

тобишь, вы тупо повелись на авторитет, без понимания сути вещей.

и я не защищаю свой код.
и не давал повода так думать.
Yandex
Объявления
15.07.2015, 12:04     Const-параметры в аргументах функции
Ответ Создать тему
Опции темы

Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru