| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > Писали ли Вы хотя бы раз по ошибке if (a=b) ... ? |
| Автор: kemiisto 8.6.2009, 15:46 |
| Ну, короче, сразу в холиварах! Утекло http://forum.vingrad.ru/forum/topic-251972.html. Конкретно http://forum.vingrad.ru/index.php?showtopic=251972&view=findpost&p=1890895, отвечающих "Да", ласково проименовали дятлами. P.S. Сам - дятел. |
| Автор: LSD 8.6.2009, 15:50 |
| А что такое сишные языки? |
| Автор: kemiisto 8.6.2009, 15:53 | ||
Ну я хотел было написать C-style based syntax languages. Но чёт сложно больно. Короче, языки, унаследовавшие синтаксические "нюансы" C. Добавлено @ 15:54
Так, ну эт был наш безошибочный NightmareZ. |
| Автор: NightmareZ 8.6.2009, 15:56 | ||
| Давайте, например, вместо "+" писать "plus". А то какой-нить бедный несчастный ребёнок ошибётся. Сделаем UberPascal:
|
| Автор: kemiisto 8.6.2009, 16:04 |
| NightmareZ, я тоже тебя минусую! |
| Автор: Любитель 8.6.2009, 16:35 |
| Было. Пару раз. Но это никак не повод менять что-то в синтаксисе. |
| Автор: JackYF 8.6.2009, 16:50 | ||
ППКС. |
| Автор: GoodBoy 8.6.2009, 19:12 |
| бывало.... |
| Автор: mr.Anderson 8.6.2009, 19:29 |
| Было, куда без этого. Теперь в случае выдачи ненормальных результатов прогой первым делом проверяю ифы, ибо потом забудешь и убьешь бешеное количество времени на поиск ошибок. Хотя отладка спасает все же в таких случаях всегда) |
| Автор: source777 8.6.2009, 19:45 | ||
Добавлено через 1 минуту и 6 секунд ну так об этом речь и не идёт... |
| Автор: Void 8.6.2009, 20:17 | ||||
| На мой взгляд, проблема не столько в выборе символов для операторов присваивания и сравнения, сколько в том, что в Си assignment statement является expression (пишу по-английски, чтобы не было вопросов, под «оператором» подразумевается operator или statement). Ради сомнительной возможности писать цепочки присваиваний вида
(чего, кстати, в Python добились, не превращая присваивание в выражение) и экономить одну строчку на условиях или циклах вида
ввели новый класс ошибок. Хотя опасность проблемы часто преувеличивают. Багов, связанных с указателями и управлением памятью, намного больше. |
| Автор: kemiisto 8.6.2009, 21:08 | ||||
|
| Автор: Фантом 8.6.2009, 21:40 |
| В принципе, это стандартное свойство C-подобных языков - компактность исходника превыше всего, в том числе читаемости и "ошибкоемкости". К сожалению, начинающие программисты обычно это любят, а понимание сложностей разработки и поддержки кода на таком языке приходит (если вообще приходит) намного позже, отсюда и популярность этих языков. |
| Автор: nickless 8.6.2009, 22:32 |
| Бывало. Но с нормальными компиляторами такие баги живут обычно до первой компиляции. |
| Автор: Severyanin 9.6.2009, 10:22 |
| у меня жили дольше. долго ловил поначалу))) |
| Автор: bilbobagginz 9.6.2009, 15:03 |
меня в "школе" учили:
|
| Автор: Nastya 9.6.2009, 16:55 |
| nickless, угу. внимательно стоит читать предупреждения компилятора. Хотя я ответила "Да" но для меня это не становилось проблемой. |
| Автор: Любитель 9.6.2009, 17:15 | ||
Абсолютно не поддерживаю такой подход |
| Автор: UniBomb 10.6.2009, 17:33 |
| Было пару раз. Но ничего криминального при этом не происходило, т.к. такого рода ошибки я почему то быстро отлавливаю. |
| Автор: bems 11.6.2009, 18:41 |
| Не было никогда. Не пишу на сабжевых языках. |
| Автор: zloyGamer 13.6.2009, 17:19 |
| было несколько раз.., и всегда почемуто их долго искал.. обычно после всяких фокспро и бэйсиков на которых иногда (против своей воли интересно.. пользовался ли кто нить из живых людей вижуал или просто бэйсиком в мс офисе? оч. советую - ощющение просто непередаваемое, когда после каждой незакрытой скобки появляется ненавящивое диалоговое окно, мол "незабудьте закрыть скобку", и это в момент когда я хочу скопирывать туда из другого места какоето выражение.., пока незакроешь это окно ничего у тебя невыйдет !! но эт так крик души |
| Автор: Прибой94 30.6.2009, 06:15 |
| было 2 раза. Любитель |
| Автор: Logo 30.6.2009, 11:46 |
| Раньше бывало, сейчас уже отучил себя вроде. Наоборот, случалось в MySql писать == |
| Автор: bilbobagginz 2.7.2009, 17:53 |
ок. ткни мной в альтернативу, пожалста. |
| Автор: Любитель 2.7.2009, 18:50 |
| Альтернатива - писать обычные сравнения. Мест, где можно ошибиться всегда полно (x с y перепутать там..) - это не повод изменять синтаксис. Лично я, когда встречаю код с "обратным" сравнением - всегда мысленно ругаюсь.. Уж не знаю почему - всопринимается/читается такой код хуже.. Конечно, дело вкуса, но, думаю многие со мной согласятся. |
| Автор: bilbobagginz 2.7.2009, 19:02 |
понятно. на полном серьёзе хотел увидеть какое-то объективное преимущество. но если единственное что приходит на ум это "дело вкуса", то я остаюсь со своими тараканами |
| Автор: Любитель 2.7.2009, 21:24 |
| Для меня (!) преимущество в том, что подобный код (сравнения с константой слева, макросы и пр.) я буду читать дольше. "Одним взглядом" оценить точно не смогу.. |
| Автор: source777 2.7.2009, 22:15 | ||||
Неудивительно, подобные выверты нарушают семантику кода. Само утверждение "если константа равна чему-то" абсурдно, константа равна только сама себе, на то она и константа и никаких "если" быть по определению не может. Что касается макросов аля IS_SHAPE_EQUAL, то они затрудняют чтение кода а их названия являются мусором с семантической точки зрения. Да, часто имеет смысл в if вызывать функцию, но название этой функция должно показывать смысл условного выражения, простейший пример: is_odd(x) вместо тупого IS_INTEGER_EQUAL(x%2, 1) или ужасного 1==x%2. Так что рекомендации:
срочно в топку!!! А всех, кто безжалостно по отношению к коллегам применял данные рекомендации, лишить премии за антигуманное поведение! |
| Автор: kemiisto 31.7.2009, 19:26 | ||||||||
| Вечер добрый! Долго ли, коротко ли, дошли у меня руки до книжки по ++. Купил по совету людей добрых Х. М. Дейтел, П. Дж. Дейтел Как программировать на C++, 5-е издание. Объём книги 1500 страниц. Ну а что? "Шок - это по-нашему!" Так вот, там есть целый раздел: 5.9. Случайная подмена операции равенства (==) присваиванием (=). Начинается раздел какбэ с обращения к NightmareZ'у:
Ну там дальше тыры-пыры, про особенности С++, которые ухудшают положение дел, ... А дальше совет по предотвращению ошибки:
И так большая часть книжки - сначала авторы расскажут про очередную приплюснутую чушь, потом гениальный совет (обычно из серии "Семь бед - один ответ", типа прислушивайтесь к сообщению компилятора, будьте внимательны, ...) Но! Это ещё не всё комрады. Во введении авторы жгут по полной:
Теперь, усядьтесь-ка поудобнее, вспомните Михал Николаича Задорнова... Вспомнили? Наберите воздуха в грудь... Уф... Эпиграф к предисловию книги:
Я плачу... |
| Автор: nerezus 1.8.2009, 21:55 |
| Было конечно, но сразу же находилось. А вот в питоне этого нету, и я аж от злости поносом изошелся, когда искал варианты, как это можно похакать. Не нашел =\ |
| Автор: Fin 1.8.2009, 23:00 | ||||
Не помню у кого. Но в статье была рекомендация. Заместо
Писать
Тогда уже на стадии компиляции будут отлавливаться такие ошибки. Хотя я каюсь |
| Автор: GoldFinch 3.8.2009, 19:16 |
| писал, и довольно часто и отлавливалось это иногда довольно сложно согласен, что надо писать if(CONST==var) потому что от этого повышается ошибкоустойчивость кода то что оно "плохо читается" - это субъективный аргумент. аргумент из разряда "код С++ неудобно читать". кому то и классы плохо читаются. а вот то что вероятность появления такой ошибки значительно уменьшается - это объективный факт. |