LINUX.ORG.RU

C


345

4

Всего сообщений: 4

Ваше отношение к конструкциям вида if (a=f) в Си и C++

В очередной раз столкнулся с этой темой на форуме, решил провести опрос.

Тех, кто не пишет на этих языках, прошу выбирать соответствующий пункт и в остальной части опроса не участвовать.

Существует, в целом, три варианта отношения к конструкциям вида if (a=f). Первый — конструкция полностью нормальная, нет причин на неё гнать. Второй — опасения спутать = и == и на этом основании объявление данной конструкции вредной. Третий (почему-то про него вспоминают реже чем про первые два) — заявления о том, что не-булевы выражения (речь тут не конкретно про присваивание) в качестве условия if вообще так или иначе не совсем нормальная ситуация.

Часто сторонники второго варианта начинают потом писать про опечатки «которые у всех бывают», но я считаю нужным данную ситуацию прояснить: следует чётко отличать спутывание = и == по причине забывания как в Си пишется сравнение (в этом случае проблемой будет только =/== и ни что другое, и происходит такое, в первую очередь, у сильно неопытных программистов), и опечатки по причине, условно, нажимания не тех кнопок на клавиатуре — такое действительно случается у всех, но в этом случае конкретно присваивание никакой особенной роли не играет, речь идёт вообще о разных «способах» написать в скобках после if что-то неправильное и не заметить это. При этом, поскольку if по смыслу означает проверку условия, логично ожидать в скобках что-то булевое, а все остальные варианты объявить симптомами опечаток, подлежащими как минимум пристальному рассмотрению.

Те, кто так или иначе считает такую конструкцию проблемной (и включают соответствующий варнинг компилятора), дальше делятся ещё на два варианта: одни призывают вообще её избегать в любом виде, вторые же допускают её применение, но с явной подсказкой компилятору/программисту в виде дополнительных круглых скобок вокруг: if((a=f)).

И ещё один момент: даже те, кто не усматривает в данной конструкции опасность, иногда всё равно её избегают, по эстетическим/стилевым причинам (для удобства чтения итд). Это, как и всё вышенаписанное, учтено в опросе.

>>> Результаты

 ,

firkax
()

Какие компиляторы C, C++ вы используете?

  1. GCC 736 (90%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Clang 278 (34%)

    ************************************************************************************************************************

  3. Microsoft Visual C++ 166 (20%)

    ************************************************************************

  4. MinGW 149 (18%)

    ****************************************************************

  5. Intel C++ compiler 30 (4%)

    *************

  6. Другое (в комментарии) 26 (3%)

    ***********

  7. Tiny C Compiler 21 (3%)

    *********

  8. SDCC 21 (3%)

    *********

  9. Open Watcom 13 (2%)

    *****

  10. Самописный 12 (1%)

    *****

  11. Borland Free Compiler 11 (1%)

    ****

  12. Turbo C 6 (1%)

    **

  13. DJGPP 5 (1%)

    **

  14. Portable C Compiler 3 (0%)

    *

  15. BDS C 2 (0%)

Всего голосов: 1479, всего проголосовавших: 820

 , ,

splinter
()

Чем собираете нативный код?

Вопрос про систему сборки. Какими из перечисленных Вы предпочитаете пользоваться / используете в «продакшене»?

  1. GNU Make 494 (51%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. CMake 444 (46%)

    ***********************************************************************************************************************************************************************************************************************************************************************************************

  3. Qmake 162 (17%)

    ********************************************************************************************************

  4. Autotools 138 (14%)

    *****************************************************************************************

  5. Простой (свой) скрипт сборки (bash, batch, ...) 114 (12%)

    *************************************************************************

  6. Другой вариант (в комментариях) 79 (8%)

    ***************************************************

  7. Maven 63 (6%)

    ****************************************

  8. Ninja 53 (5%)

    **********************************

  9. nmake (Visual Studio) 46 (5%)

    *****************************

  10. Gradle 43 (4%)

    ***************************

  11. BSD Make 37 (4%)

    ***********************

  12. QBS 21 (2%)

    *************

  13. Своя системя сборки (аля flower в Opera) 18 (2%)

    ***********

  14. Scons 17 (2%)

    ***********

  15. Premake 4 (0%)

    **

  16. Tup 2 (0%)

    *

Всего голосов: 1735, всего проголосовавших: 971

 , , ,

KennyMinigun
()

Программируя на «C», как вы оформляете код?

Собственно сейчас выбираю наиболее приемлемый вариант для себя. Для меня тема стоит очень серьёзная, склоняюсь к allman. Интересно кто как пишет, в каком стиле и почему.

  1. Мне всё равно, какой стиль у меня 242 (30%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. K&R 207 (26%)

    *********************************************************************************************************************************************************************************************************************************************************************************

  3. Свой стиль 181 (23%)

    ***********************************************************************************************************************************************************************************************************************************************

  4. GNU 98 (12%)

    *********************************************************************************************************************************

  5. allman 82 (10%)

    ************************************************************************************************************

  6. linux 62 (8%)

    *********************************************************************************

  7. 1tbs 31 (4%)

    ****************************************

  8. stroustrup 30 (4%)

    ***************************************

  9. whitesmith 10 (1%)

    *************

  10. banner 6 (1%)

    *******

  11. horstmann 6 (1%)

    *******

Всего голосов: 955, всего проголосовавших: 804

 

Dron
()