Pull to refresh

Comments 23

Многие пользователи компьютерных программ когда-нибудь нажимали «не туда» и пытались отменить действие… Так вот найденная ошибка в Audacity заключается в том, что условие, проверяющее нажатую кнопку в диалоговом окне, не зависит от того, нажали на «No» или нет :D

Таки зависит, посмотрите на вашу же таблицу еще раз:


таблица

Таблица верная. И ошибка в коде есть. Суть в том, что результат условия зависит только от того, нажали YES или нет. Добавление дополнительных кнопок также не будет влиять на результат.

Учитывая что других кнопок в том окне нет в принципе (wxYES_NO) — ошибка сводится к тому что слева и справа от || написано одно и то же.

Я согласен, что «нажать на wxNO» = «не нажать на wxYES», но ошибку надо исправить, пока не добавили ещё кнопку. Или хуже того, не скопировали всё это в другое место.
Ну, такое. Код, не рассчитанный на расширение != код с ошибкой.
Ошибки в перечислениях, свичах, каскадах словий и т.п. допускаются как раз из-за таких расчётов.
Поддерживаю, хотя и переживаю за глаза единорога :) не поэтому ли уже пришлось очки одеть? Судя по тому как работают Ardour, JACK и все эти Catia/Claudia/LADISH, Cadence и открытые драйвера внешних многоканальных звуковых карт (а именно — изредка и вопреки здравому смыслу), единорог может заплакать.
В очках отражается энергия звука) Но вы правы насчёт качества кода. Выбор проектов не типичен для нас, они довольно маленькие и я изначально сомневался в возможности работы с ними. Даже думал об объединении нескольких проектов в статью, чтобы хоть как-то затронуть музыкальный софт, но реальность такова, что материал стабильно набирается с каждого проекта.
То, как работает std::remove() — это один из моментов, когда становится стыдно за дизайн языка С++.
Не сказал бы что так уж плохо все. В моей практике очень часто встречалась задача удалить некоторый набор данных из вектора а потом вставить в конец что-то новое. Если бы std::remove() сразу выполнял операцию erase то на один realloc могло быть больше в этом случае…
В том-то и дело. С++ ставит эффективность в приоритет и возможность делать вот подобные Вашей штуки — его суть. Но это не должно называться «remove». От операции с таким простым названием ожидаешь простого, интуитивного поведения. И она должна именно что удалять с изменением размера контейнера. А то, что понадобилось Вам, должно называться как-то типа «remove_no_erase» и вызываться лишь в редких случаях, только полностью осмысленно.
Тогда уж лучше remove_no_resize :)
Ну или так. Главное — чтобы не появлялось желание вызвать её первым делом без чтения документации, потому что «ну, интуитивно же понятно что она должна делать», как это происходит с remove.
Спасибо за статью, но тут явно избыток мемов. Две-три штуки хватило бы.
Похоже один из разработчиков догадался, что такой код не имеет смысла, но вместо исправления кода, решил его прокомментировать.

// Иногда мне кажется, что компилятор игнорирует все мои комментарии
Спасибо за материал. Побольше бы разборов на тему работы со звуком
Благодарю за интерес :-) В списке ещё есть проекты. Наверное, в последней статье в заключении я напишу, что проекты закончились и если больше не предложат, то завершу цикл.
UFO just landed and posted this here
Останется) А вот прохождение тестов не гаранитируется. Ещё ошибки умеют маскировать более серьёзные проблемы, которые могут быть вскрыты после доработок.
Sign up to leave a comment.