23:56
Подменыши
Жила-была переменная fTime. Она указывала на текущее время. Жила-была другая переменная -- fTime0. Она указывала на момент начала некоего процесса.
И ещё была длинная функция, в которой они обе жили.
Я смотрю на разницу в начале функции -- там всё ок. Вывожу её на экран на всякий случай.
Я смотрю на разницу в конце функции -- а там она другая! Этого быть не может, т.к. fTime0 в течение функции не меняется, а fTime обновляется только в начале цикла (большая часть функции -- тело цикла).
ОКАЗАЛОСЬ
что ближе к концу функции был вложенный цикл. И там была об'явлена ДРУГАЯ переменная fTime. По другому поводу и, ясное дело, с совершенно другим значением. Она перекрыла предыдущую без предупреждения. А вторую проверку я проводил как раз во вложенном цикле.
Си -- опасный язык.
И ещё была длинная функция, в которой они обе жили.
Я смотрю на разницу в начале функции -- там всё ок. Вывожу её на экран на всякий случай.
Я смотрю на разницу в конце функции -- а там она другая! Этого быть не может, т.к. fTime0 в течение функции не меняется, а fTime обновляется только в начале цикла (большая часть функции -- тело цикла).
ОКАЗАЛОСЬ
что ближе к концу функции был вложенный цикл. И там была об'явлена ДРУГАЯ переменная fTime. По другому поводу и, ясное дело, с совершенно другим значением. Она перекрыла предыдущую без предупреждения. А вторую проверку я проводил как раз во вложенном цикле.
Си -- опасный язык.
15.09.2016 в 08:26
16.09.2016 в 01:13
16.09.2016 в 18:14
16.09.2016 в 19:13
Больше второе -- делать рефакторинг спагетти нудно, страшно и опасно (а спагетти он был ещё до меня). С абстракциями, конечно, тоже проблемы, т.к. весь процесс делится на эн этапов, и эти этапы уже выделены в функции. А вот найти подэтапы внутри этапов уже сложно. А даже если это сделать, то они используют общие данные, а значит придётся либо всё передавать через параметры, либо все локальные переменные делать членами класса, в котором расположены все вышеописанные функции. Но последнее -- это опять проблемы связности.
22.09.2016 в 12:27
-- Minoru
22.09.2016 в 13:48
22.09.2016 в 13:52
-- Minoru