Re: Бездебажничество
От: Baiker  
Дата: 05.01.23 12:38
Оценка: +2
Здравствуйте, Shmj, Вы писали:

S> Чистый код должен покрываться тестами


Большой вопрос, нужно ли писать эти тесты вообще! И насколько ты квалифицирован, чтобы ответственно заявлять, что после твоих тестов код 100% не содержит багов.
Одно дело — написать процедуру обновления счётчика, другое — обложить эту процедуру ТАКИМ количеством тестов, что даже бит не проскочит! Последнее требует квалификации на порядок большей, чем твоя процедурка. Уверен, что ею обладаешь??
Ну, это не говоря о том, что далеко не все вещи требуют тестов или вообще тестируемы. И последний гвозь в крышку тестов, есть ли у вас столько РЕСУРСОВ, что на 10 строк кода ты самоуверенно садишься писать 1000 строк тестов.
Re[2]: Бездебажничество
От: Osaka  
Дата: 05.01.23 12:56
Оценка: +1
B>Большой вопрос, нужно ли писать эти тесты вообще!
Полезно. На всякое изменение кода иметь возможность 1 нажатием проверить "вообще всё", что когда-либо умели проверять.
>И насколько ты квалифицирован, чтобы ответственно заявлять, что после твоих тестов код 100% не содержит багов.
Сказать "успешно исполняет типовые сценарии" — уже весьма немало.
B>Одно дело — написать процедуру обновления счётчика, другое — обложить эту процедуру ТАКИМ количеством тестов, что даже бит не проскочит! Последнее требует квалификации на порядок большей, чем твоя процедурка. Уверен, что ею обладаешь??
Статусные игры какие-то. Тестировать надо не код, а решаемые задачи. Чтобы сдача заказчику приближалась и рекламации уменьшались, а не чтобы всяким оценщикам квалификации было где нос подточить.
Отредактировано 05.01.2023 13:04 Osaka . Предыдущая версия .
Re: Бездебажничество
От: graniar  
Дата: 05.01.23 13:32
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Встречались ли вы с идеей, что дебаггер использовать не стоит


Не пользуюсь дебагером. Пишу логи.
Когда ищу баг — обкладываю все вокруг fprintf'ами, которые потом удаляю.

S>Чистый код должен покрываться тестами и нет необходимости лезть в отладчик.


Юнит-тесты вещь безусловно хорошая.
Но на все случаи — ненужный оверхед.
Re[2]: Бездебажничество
От: bnk СССР http://unmanagedvisio.com/
Дата: 05.01.23 14:07
Оценка: +1
Здравствуйте, graniar, Вы писали:

G>Не пользуюсь дебагером. Пишу логи.

G>Когда ищу баг — обкладываю все вокруг fprintf'ами, которые потом удаляю.

Ну нормальный дебаггер и это тоже умеет, только удалять потом не надо. И код перекомпилировать для изменения. Логпоинт называется.
Re[2]: Бездебажничество
От: Shmj Ниоткуда  
Дата: 05.01.23 15:25
Оценка:
Здравствуйте, graniar, Вы писали:

G>Не пользуюсь дебагером. Пишу логи.

G>Когда ищу баг — обкладываю все вокруг fprintf'ами, которые потом удаляю.

А в чем профит?
Re: Бездебажничество
От: LaptevVV Россия  
Дата: 05.01.23 15:28
Оценка:
S>Встречались ли вы с идеей, что дебаггер использовать не стоит — что если рука тянется к оному — это признак грязного кода? Чистый код должен покрываться тестами и нет необходимости лезть в отладчик.
Не только встречались, но и сам работаю практически без отладчика.
Отладчик мне требуется только в двух слукчаях:
1. Пройти по чужому незнакомому коду, посмотреть что за чем и когда следует. На новой работе вот как раз пришлось полазить java-коде.
2. Сложный баг, который "руками" не обнаруживается. Это бывает очень редко.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Бездебажничество
От: graniar  
Дата: 05.01.23 16:08
Оценка:
Здравствуйте, Shmj, Вы писали:

S>А в чем профит?


В возможности не переключать контекст на настройку дебажного окружения.

Попросту говоря лень, да и нет особой нужды. Я давно ничего не писал в продакшен, все больше экспериментальное баловство.
Re[3]: Бездебажничество
От: Doom100500 Израиль  
Дата: 05.01.23 17:17
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, graniar, Вы писали:


G>>Не пользуюсь дебагером. Пишу логи.

G>>Когда ищу баг — обкладываю все вокруг fprintf'ами, которые потом удаляю.

S>А в чем профит?


Не сильно вмешиваешься в ход выполнения кода. Код может быть многопоточным, могут быть таймауты и всё такое.

Например:
Брейкпоинт останавливает весь мир.
А при следующем степ-овер ты, внезапно, оказываешся в другом потоке где-то в catch на обработке ошибки, что какая-то операция отвалилась по таймауту.
Спасибо за внимание
Re: Бездебажничество
От: Ночной Смотрящий Россия  
Дата: 05.01.23 18:08
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Встречались ли вы с идеей, что дебаггер использовать не стоит — что если рука тянется к оному — это признак грязного кода? Чистый код должен покрываться тестами и нет необходимости лезть в отладчик.


Тут топики на тему приключаются регулярно.

S>Каково ваше отношение к данной идее?


Из области юношеского максимализма.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: Бездебажничество
От: Ночной Смотрящий Россия  
Дата: 05.01.23 18:14
Оценка: +2
Здравствуйте, Baiker, Вы писали:

S>> Чистый код должен покрываться тестами

B>Большой вопрос, нужно ли писать эти тесты вообще!

Я в тебе не сомневался.

B>Ну, это не говоря о том, что далеко не все вещи требуют тестов или вообще тестируемы.


Не всем, к счастью, постоянно приходится ковырять легасный гуй.

B>И последний гвозь в крышку тестов, есть ли у вас столько РЕСУРСОВ, что на 10 строк кода ты самоуверенно садишься писать 1000 строк тестов.


Строки кода не стоят ни"№я. Ценность имеет качественное решение проблемы. И тесты — немаловажная часть этого решения, ничуть не менее важная (а иногда, например в случае компиляторов, более важная) нежели покрываемый этими тестами код.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: Бездебажничество
От: klopodav  
Дата: 05.01.23 23:01
Оценка: -1 :)
G>Не пользуюсь дебагером. Пишу логи.
G>Когда ищу баг — обкладываю все вокруг fprintf'ами, которые потом удаляю.

Иногда можно даже не удалять, а закомментировать. Хотя на первый взгляд кажется, что этот мусор засирает код. Но оказывается — такие закомментированные fprintf'ы тоже могут быть полезны как дополнение к другим комментариям. Они показывают, на что следует обратить особое внимание. И на случай, если в будущем в поведении этого кода обнаружится неведомая хрень — будет примерно понятно, что снова надо вывести в лог, чтобы эту хрень отловить.
Re[3]: Бездебажничество
От: graniar  
Дата: 06.01.23 12:55
Оценка:
Здравствуйте, klopodav, Вы писали:

K>Иногда можно даже не удалять, а закомментировать.


Какие-то оставляю закомментированными подольше.
Но если, к примеру ищу где сегфолтится, тупо бинарным поиском ищу. Обкладываю чуть не через строчку, а потом подчищаю.
И всегда без отступов, чтоб удобнее удалять и не перепутать, типа такого:
#define LOG(s) fprintf(stderr,"%s %d:%s\n",__FILE__,__LINE__,s);
...
LOG(0)
    for(...){
LOG(0)
        if(...){
LOG(0)
            ...
        };
    };


K> И на случай, если в будущем в поведении этого кода обнаружится неведомая хрень — будет примерно понятно, что снова надо вывести в лог, чтобы эту хрень отловить.


А на этот случай лучше ассерты использовать.
Отредактировано 06.01.2023 13:01 graniar . Предыдущая версия .
Re[4]: Бездебажничество
От: SkyDance Земля  
Дата: 06.01.23 16:38
Оценка:
G>Но если, к примеру ищу где сегфолтится, тупо бинарным поиском ищу. Обкладываю чуть не через строчку, а потом подчищаю.

В нормальных языках для этого можно (и нужно) использовать tracing.
Re: Бездебажничество
От: IT Россия linq2db.com
Дата: 07.01.23 08:39
Оценка: +2
Здравствуйте, Shmj, Вы писали:

S>Каково ваше отношение к данной идее?


Когда-то очень давно, когда ёлки были зеленее, а девки красивее, научился пользоваться отладчиком, потому что никакие другие инструменты не помогали и таки пришлось разобраться в теме. До этого считал отладчик ненужной хренью. Потом часто встречал таких же молодых дебилов (ой простите, конечно же альтернативных гениев), считающих меня, умеющего пользоваться отладчиками и профайлерами, конченым маргиналом. Считающих ровно до того момента, пока возможности их инструментов не заканчивались и только отладчик мог помочь.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Бездебажничество
От: okman Беларусь https://searchinform.ru/
Дата: 07.01.23 18:08
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Каково ваше отношение к данной идее?


Любую хорошую идею можно довести до абсурда.

Тебе так некоторые скажут, например, что TDD, где тесты не пишутся до кода — это и не TDD вовсе.
Что комментарии не нужны, т.к. хороший код — самодокументируемый.
Что код не только отлаживать не нужно, но и профилировать тоже, ибо "хороший код всегда написан максимально эффективно".
Далее можно прийти к тому, что код и запускать для проверки не обязательно, т.к. "этот код идеален и не содержит ошибок"
И т.п.
Re: Бездебажничество
От: a.v.v Россия  
Дата: 09.01.23 11:00
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Каково ваше отношение к данной идее?


идиотская идея вкинутая идиотом
Re: Бездебажничество
От: Sharov Россия  
Дата: 09.01.23 14:30
Оценка:
Здравствуйте, Shmj, Вы писали:

Пару лет назад был срач на эту тему -- http://rsdn.org/forum/flame.comp/7717305?tree=tree
Автор: landerhigh
Дата: 29.04.20

В целом, идея хорошая, т.е. писать (юнит)тесты так, чтобы необходимость в отладчике отпадала. На практиче это едва ли
достижимо да и сложно, т.е. нужно быть крутым спецом в этом деле. Далее, как без отладчика находить и воспроизводить баг в многопоточной программе?
Или отладка взаимодействия с каким-нибудь переферийным устройством типа драйвера и т.п.
Кодом людям нужно помогать!
Re[2]: Бездебажничество
От: Shmj Ниоткуда  
Дата: 09.01.23 14:38
Оценка: +1
Здравствуйте, Sharov, Вы писали:

S>достижимо да и сложно, т.е. нужно быть крутым спецом в этом деле. Далее, как без отладчика находить и воспроизводить баг в многопоточной программе?


В многопоточной? А разве в этом случае как раз не проще писать в логи? В отладчике будет прыгать между потоками.
Re[3]: Бездебажничество
От: Sharov Россия  
Дата: 09.01.23 14:43
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>>достижимо да и сложно, т.е. нужно быть крутым спецом в этом деле. Далее, как без отладчика находить и воспроизводить баг в многопоточной программе?

S>В многопоточной? А разве в этом случае как раз не проще писать в логи? В отладчике будет прыгать между потоками.

В отладчике потоки можно оттормаживать, т.е. замораживать, походил одним, поставил на паузу (freeze), походил
другим (freeze), разморозил пред. поток (thaw) и т.д. Можно понять, где race condition, где забыли поставить lock
и т.п.
Кодом людям нужно помогать!
Re[4]: Бездебажничество
От: Doom100500 Израиль  
Дата: 09.01.23 14:47
Оценка: +3
Здравствуйте, Sharov, Вы писали:

S>В отладчике потоки можно оттормаживать, т.е. замораживать, походил одним, поставил на паузу (freeze), походил

S>другим (freeze), разморозил пред. поток (thaw) и т.д. Можно понять, где race condition, где забыли поставить lock
S>и т.п.

Ага, только вот этим всем начинаешь заниматься, когда уже словил ненужое переключение контекста. А когда потоки начнёшь отмораживать — не факт, что проблема воспроизведётся.
Спасибо за внимание
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.