Здравствуйте, flashinc, Вы писали:
F>Это всего лишь "мода" Мейерса или Саттера. Кроме того что прочитать и следовать "новой моде" полезно знать, какой код будет в реальности. А в реальности в 99.9% temporary не создастся, только если специально не стараться.
Совершенно не обязательно, что не создасться. Все равно лучше писать чтобы выполнялись только необходимые действия.
F>Если иметь по всему проекту привычку писать ++i, легко "намозолить глаза", и рано или поздно, влететь в ситуацию когда напишешь ++ptr = ... вместо ptr++
Здравствуйте, FDSC, Вы писали:
LM>>А мне крысу достаточно навести, чтобы узнать что это ссылка, а чтобы узнать может ли этот указатель быть нулевым придется по коду полазить FDS>Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо FDS>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся
У класса может быть более одного конструктора
Здравствуйте, FDSC, Вы писали:
LM>>А мне крысу достаточно навести, чтобы узнать что это ссылка, а чтобы узнать может ли этот указатель быть нулевым придется по коду полазить FDS>Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо FDS>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся
+
то что указатель константен не говорит о том, что он не может быть не равен NULL
Здравствуйте, maximm__, Вы писали:
__>не могу найти программиста-профессионала C++: все приходят либо 4.0K+ и ничего делать не хотят ("давайте я будут обсуждать архитектуру, а в свободное от этого время — писать код"), либо 1.5K и в глазах вопрос — "а он про шаблоны спросит или нет?"
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, FDSC, Вы писали:
LM>>>А мне крысу достаточно навести, чтобы узнать что это ссылка, а чтобы узнать может ли этот указатель быть нулевым придется по коду полазить FDS>>Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо FDS>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся LM>У класса может быть более одного конструктора
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, FDSC, Вы писали:
LM>>>А мне крысу достаточно навести, чтобы узнать что это ссылка, а чтобы узнать может ли этот указатель быть нулевым придется по коду полазить FDS>>Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо FDS>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся LM>+ LM>то что указатель константен не говорит о том, что он не может быть не равен NULL
Да, поэтому вам и придётся полазить в конструкторе
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, flashinc, Вы писали:
F>>Это всего лишь "мода" Мейерса или Саттера. Кроме того что прочитать и следовать "новой моде" полезно знать, какой код будет в реальности. А в реальности в 99.9% temporary не создастся, только если специально не стараться.
АХ>Совершенно не обязательно, что не создастся. Все равно лучше писать чтобы выполнялись только необходимые действия.
Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.
А постоянно думать над тем, что эффективно, а что нет — это так можно просто загнуться и ничего не написать. Сколько уже раз говорили, оптимизируйте только то, что реально медленно работает, а таки проколы в оптимизациях компилятора (которые даже оптимизациями-то назвать нельзя) — это не забота программиста, если работает приемлемо быстро
Думать нужно о том, что пишешь, а уже потом о его скорости (или наоборот, сначала, если выбираешь алгоритм или архитектуру), но никак не во время кодирования. Давайте тогда вообще выбросим .NET, потому что сборка мусора менее эффективна, чем ручное распределение памяти
Здравствуйте, FDSC, Вы писали:
FDS>>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся LM>>У класса может быть более одного конструктора FDS>Ну и не сотня
Но мне нужно лезть куда-то, чтобы понять, что эта фигня не может быть НУЛЛ
Здравствуйте, FDSC, Вы писали:
FDS>>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся LM>>+ LM>>то что указатель константен не говорит о том, что он не может быть не равен NULL FDS>Да, поэтому вам и придётся полазить в конструкторе
А зачем мне лазить?!
Здравствуйте, FDSC, Вы писали:
FDS>А постоянно думать над тем, что эффективно, а что нет — это так можно просто загнуться и ничего не написать. Сколько уже раз говорили, оптимизируйте только то, что реально медленно работает, а таки проколы в оптимизациях компилятора (которые даже оптимизациями-то назвать нельзя) — это не забота программиста, если работает приемлемо быстро
FDS>Думать нужно о том, что пишешь, а уже потом о его скорости (или наоборот, сначала, если выбираешь алгоритм или архитектуру), но никак не во время кодирования. Давайте тогда вообще выбросим .NET, потому что сборка мусора менее эффективна, чем ручное распределение памяти
Знаешь в чем фишка ? Думать приходится первые несколько раз. Потом все ясно автоматически без раздумий, и никаких потерь времени от микрооптимизации одинаковых кусков кода одинаковыми способами нет. Это как кодинг стайл — над ним не задумываешься когда рука уже набита.
Здравствуйте, FDSC, Вы писали:
<skipped> F>>>Это всего лишь "мода" Мейерса или Саттера. <skipped>
У Саттера/Александреску понравилась шутка в их 101 правиле (шутка не их). Правило 28.
An ancient joke about C++ was that the language is called C++ and not ++C because the language is improved (incremented), but many people still use it as C (the previous value). Fortunately, the joke is now obsolete, but it's a helpful illustration for understanding the difference between the two operator forms.
Правда они наивно полагают, что шутка устарела. Но нет, она еще все очень актуальна
<skipped> FDS>А постоянно думать над тем, что эффективно, а что нет — это так можно просто загнуться и ничего не написать. Сколько уже раз говорили, оптимизируйте только то, что реально медленно работает, а таки проколы в оптимизациях компилятора (которые даже оптимизациями-то назвать нельзя) — это не забота программиста, если работает приемлемо быстро
<skipped>
По поводу оптимизации они там же продолжают:
This is not premature optimization; it is avoiding premature pessimization.
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, FDSC, Вы писали:
FDS>>>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся LM>>>У класса может быть более одного конструктора FDS>>Ну и не сотня LM>Но мне нужно лезть куда-то, чтобы понять, что эта фигня не может быть НУЛЛ
Да, зато если ты будешь читать код, никогда не перепутаешь ссылку с объектом — а такую путаницу уже просто так не обнаружишь.
Я уже говорил, что если не понимаешь, как работает программа, лучше слазить посмотреть и указатель тебе подскажет, что ты не понимаешь. А если ссылка будет, то ты так и не заметишь, что что-то не то
Здравствуйте, kittown, Вы писали:
K>Знаешь в чем фишка ? Думать приходится первые несколько раз. Потом все ясно автоматически без раздумий, и никаких потерь времени от микрооптимизации одинаковых кусков кода одинаковыми способами нет. Это как кодинг стайл — над ним не задумываешься когда рука уже набита.
Зато некрасиво. С какой стати я буду делать то, что мне не нравится просто так, чтобы это в привычку вошло? Если где-то создание лишнего объекта (а это — вообще говоря — баг компилятора) мне будет тормозить выполнение программы (ох как я в этом сомневаюсь), то я найду это место и поставлю там ++i, но иначе я буду писать так, как мне это приятно
АХ>Совершенно не обязательно, что не создасться. Все равно лучше писать чтобы выполнялись только необходимые действия.
Если продолжать обсуждать теоретического сферического коня в ваккууме,
чем, собственно, и занимаются авторы книг по С++ — то да, некоторая опасность существует. (То есть, находится на одном уровне абстракции — называемом языком C++ и не иметь желания спуститься вниз и принять во внимание РЕАЛЬНОСТЬ).
А вот если изучить основные компиляторы которыми приходится пользоваться, и выполнить инспекцию объектов подлежащих пост-инкременту и получаемого x86 кода — то страдать этой фигней не придется.
Я за практический здравый подход. А то извините, если транслировать на реальность подобные "опасения", то ни с одной девушкой спать без презерватива нельзя, ни-ни. Даже с собственной женой. Потому чт вероятность того что она заразит тебя спидом остается. Она хоть и исчезающе мала, тысячные доли процента — но все-таки существует. Так что? — надевать презерватив еще в детстве и не снимать его вовсе?..... :-)
Надеюсь аналогия понятна :-)))
> и т.д. И порой складывается парадоксальная ситуация, фирма не может найти себе специалиста, а толпа специалистов даже >не знает, какие требования предъявляются в этой фирме и не может привести себя в соответствие с этими требованиями.
не поэтому ли "хорошие" вакансии порой лежат на джоб.ру открытыми месяцами.
A>не поэтому ли "хорошие" вакансии порой лежат на джоб.ру открытыми месяцами.
Некоторые вакансии к тому же составляются молоденькими девочками, даже без консультаций с уже работающими и знающими специфику специалистами. Знаю не по наслышке, у нас одна такая работала некоторое время... Страшно смотреть было на приходящих кандидатов.
Здравствуйте, IWantToAsk, Вы писали:
A>>не поэтому ли "хорошие" вакансии порой лежат на джоб.ру открытыми месяцами.
IWT>Некоторые вакансии к тому же составляются молоденькими девочками, даже без консультаций с уже работающими и знающими специфику специалистами. Знаю не по наслышке, у нас одна такая работала некоторое время... Страшно смотреть было на приходящих кандидатов.
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, FDSC, Вы писали:
FDS>>>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся LM>>>+ LM>>>то что указатель константен не говорит о том, что он не может быть не равен NULL FDS>>Да, поэтому вам и придётся полазить в конструкторе LM>А зачем мне лазить?!
Короче говоря, тут ничья: мы можете сказать, что нужно контролировать, что бы инициализация указателя была правильно, я могу сказать, что при этом дальше при использовании ссылки синтаксис не напоминает о том, что используется именно ссылка.
Недостаток указателей в этом случае более часто встречающийся, но влечёт за собой гораздо меньшие последствия, даже если его вдруг проинициализируют нулём
Недостаток ссылок более редкий, но зато если уж встретится, с ним придётся помучится: ошибка не будет бросаться в глаза из самого кода