Здравствуйте Mink, Вы писали:
M>Не надо путать общность алгоритма и независимость от особенностей реализации. Сама Microsoft категорически НЕ рекомендует полагаться на особенности реализации и НЕ гарантирует их переход от версии к версии.
Я ничего не путаю. Я сказал, что код этот написан с уклоном, и народ, который его написал, точно знал, что и для чего он это делал. Перечитай.
Здравствуйте TepMuHyc, Вы писали:
Z>>>>В этом случае надо параметры каждой используемой функции просматривать. TMH>>>Их в любом случае просматривать надо перед тем как вызов оной функции писать.
Z™>>Я пишу не про написание вызова функции. Я пишу про сопровождение написанного кем то кода. TMH>Хрен редьки не слаще. Для того чтобы код сопровождать ты его должен ЗНАТЬ. В идеале — знать что делает КАЖДАЯ TMH>функция. А следовательно просмотреть доку или код данной функции.
В большом проекте знать ВСЕ ВО ВСЕХ ДЕТАЛЯХ просто нереально.
Z>>Просматривая сотни строк кода, постоянное рытье в документации сильно утомляет TMH>Позволь спросить, а за что тебе зарплату платят? За твои красивые глаза? Или за то что ты код сопровождаешь? Если же тебя так утомляет умственная нагрузка лучше переведись в животноводы...
Позволь спросить, а за что тебе зарплату платят ? За то что бы ты писал код который впоследствии (мало ли, может работу поменяешь) будет очень дорогим в сопровождении ?
TMH> Z>>надо ведь каждую функцию подозревать в изменении переменных, если где то используется возврат по ссылке. TMH>Сразу впоминается анекдот: "Слониху изнасиловали — всех подозревают"... Если уж подозреваешь не сочти за труд — Я нехочу ничего подозревать, я просто хочу что бы код был максимально прозрачным. Код который понятен без документации (это не значит что документации быть не должно) намного лучше кода в котором и с документацией разобраться тяжело.
TMH> поставь на этом вызове брекпойнт... или почитай по функции доку.
Хехе, если вызов этой функции (ты еще не знаешь какой) за n строк до места где проявились следствия проблемы ? Или ты предлагаешь в пошаговом режиме всю программу отлаживать ?
Z>>Зачастую самые "умные" куски кода вообще не документируются. TMH>Преблема ВАШЕЙ корпоративной культуры — это еще не глобальная проблема.
У нас такие проблемы возникают после соприкосновения с ВАШЕЙ корпоративной культурой, одно радует что этих соприкосновений все меньше и меньше, помирают такие культуры.
TMH>>>Теперь тот же пример немного по-другому: SomeFunc(0); — тоже вполне TMH>>>корректно, а последствия, думаю, очевидны. Z>>Неужели трудно хотя бы в дебаг версии проверять параметры функции ? TMH>Только вот заметь, что если аргумент — ссылка, то этого не надо делать ВООБЩЕ.
Сомнительная экономия.
Код должен быть прозрачным, если тебя действительно интересует, почему такой подход содержит проблемы, а мои слова у тебя особого доверия не вызывают, прочитай книжку о которой я выше писал.
Здравствуйте Vi2, Вы писали:
Vi2>Здравствуйте Zilog™ и TepMuHyc, вы писали:
Vi2>Я думаю, что можно обсуждать вопросы без проставления нулей, тем более что исходный ответ TepMuHyc не заслуживал такой оценки изначально — он никому не грубил, не хамил, не навязывал свою точку зрения и т.п. Если уж, уважаемый Zilog™, имеете претензии лично к TepMuHyc, то перейдите на личную переписку и выскажите там все.
Я ни имею никаких личных претензий к TepMuHyc, просто в этом вопросе я с ним жестко не согласен, оценил соответственно.
Vi2>То, что вы начали обсуждать — это дело вкуса, принятых в кампании правил и т.п., и тут уж каждый будет считать своё решение единственно правильным.
Просто я описал какие последствия это влечет, а также сказать что бед это принесет гораздо больше чем сулит выгод.
Здравствуйте Zilog™ и TepMuHyc, Вы писали:
Z>Я ни имею никаких личных претензий к TepMuHyc, просто в этом вопросе я с ним жестко не согласен, оценил соответственно.
Не хотел бы втягиваться в вашу дискуссию, но всё-таки придётся не надолго.
Я не выступаю ни против ваших оценок, ни против вашей полемики — это ваше дело, хоть всё пространство сервера заполняйте. (Хотя его и жалко).
Просто я хотел призвать к голосу разума: в области чувств, вкуса и т.п. споры бесполезны — каждый останется при своём при любом раскладе. Поэтому результатом всей "дискуссии", очевидно, будет финал: Ты-чайник!Сам-такой!, и недовольство вашим оппонентом и т.д.
Однако, если вы хотите и дальше встречаться в форуме, то такие споры приводят к тому, что впоследствии именно ваш сегодняшний оппонент смог бы решить вашу завтрашнюю проблему, но он не сделает этого в силу личной обиды на вас.
Поэтому я призываю — не прибегать к таким дискуссиям и останавливать других, новичков, в форуме.
Если есть крутые ошибки — доказывайте неправоту! Потому что это доказуемо, а то, что нравится — не нравится, пусть останется за бортом вашего внимания или без комментариев Ты-чайник!.
Здравствуйте Vi2, Вы писали:
Vi2>Если есть крутые ошибки — доказывайте неправоту! Потому что это доказуемо, а то, что нравится — не нравится, пусть останется за бортом вашего внимания или без комментариев Ты-чайник!.
Какие еще надо даказательства ? Секундомер ?
SomeFunc(a, b, c); // Смотрим документацию, если нет то заголовки.
SomeFunc(&a, b, &c); // Не надо смотреть документацию, заголовки, и так все понятно.
Z™>Здравствуйте Vi2, Вы писали:
Vi2>>Если есть крутые ошибки — доказывайте неправоту! Потому что это доказуемо, а то, что нравится — не нравится, пусть останется за бортом вашего внимания или без комментариев Ты-чайник!.
Z™>Какие еще надо даказательства ? Секундомер ?
Доказательства.
Z™>SomeFunc(a, b, c); // Смотрим документацию, если нет то заголовки.
Z™>SomeFunc(&a, b, &c); // Не надо смотреть документацию, заголовки, и так все понятно.
Здравствуйте TepMuHyc, Вы писали:
SH>>3) Документация отсутствует или она очень плоха. TMH>...Но заголовки-то есть ?
Понятно, что как бы программа не была написана, если она работает, то возможно разобраться как именно она это делает. Но если можно упростить жизнь и себе и сопровождающему программисту, почему бы этого не сделать?
SH>>Код, применяющий указатели проще для понимания. TMH>Ты не забыл добавить ИМХО?
Поскольку то, что я пишу — не божественные откровения, всё это ИМХО. А там где я эго явно ставлю — дважды ИМХО. Так вот, это утверждение — просто ИМХО.
SH>>По-моему с этим спорить трудно. TMH>Напиши Страуструпу. Он довольно охотно отвечает на умные письма. И с ним даже можно поспорить. TMH>А вот переспорить — трудновато...
А чего мне с ним спорить? Он со мной согласен.. Я не крутой С++-ник, и Страуструпа читал только "Язык программирования С++" третье издание, на русском языке. Поэтому ссылаюсь на него. Глава 5, параграф 5.8 "Советы". Совет №6: "Старайтесь как можно реже пользоваться простыми (имеется ввиду неконстантыми — SH) ссылками в качестве аргументов функций. См 5.5" В параграфе 5.5 приведены все мои аргументы. Ещё где-то в книжке что-то такое было, но я так сразу не нашёл.
TMH>...Это была преамбуда. Теперь амбула. TMH>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TMH>То ли ссылки, то ли указатели — зависит от многого — legacy code, корпоративный/командный стиль кодирования, личные предпочтения и т.д. Короче — случаи бывают разные и вариантов много. И все они заслуживают уважения. TMH>Лично я более склоняюсь к использованию ссылок — считаю это "хорошим тоном" в C++...
TMH>Теперь по "классам":
[skip]
Согласен.
TMH>Но ИМО нормальный C/C++ программер должен быть знаком и свободно оперировать обоими.
Согласен. Это не слишком навороченные концепции, что бы у профессионального С++ программера тут возникали какие-то проблемы. Речь идёт только о том, что сопровождающему программисту (или тебе самому через месяц-другой) будет проще, если перед изменяемыми аргументами будет стоять &, а перед неизменяемыми — нет. (ИМХО) Так действительно удобнее. То, что этого нет в VB и Pascal — минусы этих языков. В них ещё много чего нет. От всего откажемся?