Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

Как вникать в чужой код?   Найти похожие ветки 

 
Kostafey ©   (2007-09-10 01:01) [0]

Это первый случай в моей практике когда и программа не хеллоу-ворд,
да и код приходиться писать не с нуля, а сопровождать уже полуготовый продукт,
поддерживать (читай - дорабытывать) проект разработанный не мной.
Комментариев ни строчки. С самим разработчиком есть возможность самое
частое раз в неделю встречаться.

Если кто помнит, я подобный вопрос про структуру БД задавал.

Сиджу тут, смотрю на него... это ж сколько всего понять тут нужно...
Что делать?

P.S. Вопрос может и не влишком серьезной манере задан, но сам по себе вопрос
наверняка один из самых распространенных в практике программирования.
Это ж иногда свой-то код понять не можешь, а тут еще чужой, да еще и
первый раз...


 
Petr V. Abramov ©   (2007-09-10 01:11) [1]

нужно знать, а что же этот код должен делать.
если это выполнено, задача на %20 разрешима.
далее смотришь, как этот код делает нужное. Если через ж..., то %80, что и  остальное будет черз то же, обратное по аналогии.
ну а остальные 20% - творчество :))))


 
Kerk ©   (2007-09-10 01:15) [2]

Зачем бесцельно изучать чужой код? Перед тобой стоит твоя собственная задача, вот и смотри как ее реализовать в текущей обстановке.


 
Германн ©   (2007-09-10 01:29) [3]


> Petr V. Abramov ©   (10.09.07 01:11) [1]


> Kerk ©   (10.09.07 01:15) [2]

Слова, слова, слова... (с) Уильям наш Шекспир (с) "Берегись автомобиля" :-)


> Kostafey ©   (10.09.07 01:01)

А кто тебе сказал, что будет легко? Или тебе жизнь мёдом обещали? Назвался груздем, полезай в корзинку! :-)


 
Kostafey ©   (2007-09-10 01:36) [4]

> нужно знать, а что же этот код должен делать.
> если это выполнено, задача на %20 разрешима.

Ну к этому я близок


> далее смотришь, как этот код делает нужное. Если через ж...,
> то %80

А до этого еще мне как пешком до Китая ;)


> [3] Германн ©   (10.09.07 01:29)

А и никто не говорил что будет легко. Да и непривык я чтоб легко было.
Я просто уточнял. Это я один такой как дурачок экраном с ероглифами тупо
любуюсь или все так же начинали? :)


 
Германн ©   (2007-09-10 01:52) [5]


> А и никто не говорил что будет легко. Да и непривык я чтоб
> легко было.
> Я просто уточнял. Это я один такой как дурачок экраном с
> ероглифами тупо
> любуюсь или все так же начинали? :)
>

Вряд ли все. Но я не только так начинал, но до сих пор в этом болоте :(
Добро пожаловать! :-)


 
Джо ©   (2007-09-10 02:49) [6]

Болото еще то.
Но есть и другая сторона... болота.
Когда ты смотришь (спустя некоторое время), ЧТО сделали с твоим кодом и... Ну, тихо (незлобиво) произносишь всякие нежные слова :)


 
Германн ©   (2007-09-10 03:17) [7]


> Джо ©   (10.09.07 02:49) [6]
>
> Болото еще то.
> Но есть и другая сторона... болота.
> Когда ты смотришь (спустя некоторое время), ЧТО сделали
> с твоим кодом и... Ну, тихо (незлобиво) произносишь всякие
> нежные слова :)
>

Догадываюсь, какие именно слова :-)
Но меня это, надеюсь, ни разу не касалось. Ни с той, ни с другой стороны :-)


 
Zeqfreed ©   (2007-09-10 08:27) [8]

Ну вот, например, я недавно пытался разобраться почему у меня плеер глючит. Открыл его исходники. Включил отладку, посмотрел какое сообщение он мне пишет. Нашел вывод этого сообщения в исходнике. И потом как клубок начал распутывать код с этого места. Т.е. смотрю откуда этот код вызывается, откуда тот код вызывается и так далее. Потом нашел само место где плеер зависает, но причины понять так и не смог к сожалению, а потом он перестал глючить и стало сложно отлаживать :(

Когда надо добавить какую-то функциональность, то нужно сперва найти кусок кода с наиболее близкой функциональностью или реализующийся теми же средствами и наличествующий в данном исходнике. Посмотреть внимательно как он реализован и поступить по аналогии.

А изучить работу всей программы целиком сразу вряд ли получится, да и не нужно это, правильно по-моему Керк говорит. Это было бы, конечно, очень здорово, но почти нереально :)


 
Anatoly Podgoretsky ©   (2007-09-10 09:22) [9]

> Zeqfreed  (10.09.2007 08:27:08)  [8]

Так надо не свое сообщение выводить, а системное, много полезнее для отладки.


 
Ega23 ©   (2007-09-10 09:28) [10]

Начинай раскручивать с конструктора.  :)


 
WondeRu at work   (2007-09-10 10:37) [11]

Читаем Фаулера "Рефакторинг"


 
clickmaker ©   (2007-09-10 10:40) [12]


> Это ж иногда свой-то код понять не можешь, а тут еще чужой,
> да еще и
> первый раз...

- Вот же мне студенты тупые попались, коллега! Объясняю раз, другой, третий... сам уже все понял, а они - как об стенку горох!
(с) бородатый анекдот


 
Desdechado ©   (2007-09-10 11:18) [13]

Я вот уже пару месяцев вникаю в TMForum SID (Shared Information/Data). Одних классов больше 1000. Общая идея вроде понятна (хотя уже раза 3 так думал, а оказывалось - мелко плавал), но даже при наличии большого количества комментариев охватить все это добро мозгами ой как нелегко.


 
Суслик ©   (2007-09-10 11:56) [14]

терпенье и труд все перетрут (с)

и не имхо

если серьезно, то начинай описывать код. можно комментами, можно док файл. типа такого:

"Класс TSuperPuper создает объекты класса TZero для того, чтобы получить доступ к нулевому уровню абстракции. Концептуально TZero есть единственное средство доступа к нулевому уровню".  И т.д. и т.п. - пиши все, что понял. В док-файле в детали не вдавайся. Детали описывай в комментах.

Зачем это все?
Все просто - запихать в голову за короткий промежуток времени много информации можно. А вот удержать сложно. Например, сегодня ты понял, что-то важное про некий класс. Возьми и запиши это. Завтра себе же спасибо скажешь, когда продолжишь изучение кода.

Твоя главная задача - составить в любой форме коцептуальную модель исследуемого проекта.  В конечном итоге ты можешь выбросить свой док-файл. Но это не значит, что без него можно обойтись на пути к цели. Если привести аналогию, то для того, чтобы посчитать 3424234*23424234 тебе скорее всего понадобица бумажка, которую ты сможешь выбросить после расчета, но результат запомнить.

PS Надеюсь полезно будет. Я сейчас тоже исследую чужой проект :)


 
Zeqfreed ©   (2007-09-10 11:57) [15]

> Anatoly Podgoretsky ©   (10.09.07 09:22) [9]

Чем оно полезнее? А если в системный лог выводить будет, то оттуда фильтровать записи еще придется, чтобы лишнего не показывалось.


 
Anatoly Podgoretsky ©   (2007-09-10 12:04) [16]


> Чем оно полезнее? А если в системный лог выводить будет,
>  то оттуда фильтровать записи еще придется, чтобы лишнего
> не показывалось.

Старая история, почти каждую неделю видим код, где в обработке ошибки выдается например: не удалось открыть файл.
А к чему ты системый лог то привел, ну хочешь в сислог, то пиши.


 
TUser ©   (2007-09-10 13:18) [17]

Еще хорошо, когда есть документация или автор кода, которого можно прижать к теплой стенке. Я понимаю, что это - научная фантастика, но все же вдруг.


 
Desdechado ©   (2007-09-10 13:20) [18]

> автор кода, которого можно прижать к теплой стенке.
Лучше к холодной и неоднократно.


 
Anatoly Podgoretsky ©   (2007-09-10 13:28) [19]

> TUser  (10.09.2007 13:18:17)  [17]

Конечно фантастика, обычно автор недоступен, при том не физически.


 
Virgo_Style ©   (2007-09-10 13:39) [20]

блок-схемы, или каракули, приравненные к ним, могут оказаться полезными.


 
clickmaker ©   (2007-09-10 13:42) [21]


> [20] Virgo_Style ©   (10.09.07 13:39)
> блок-схемы

всем привет от Дмитрия О.
:)


 
Virgo_Style ©   (2007-09-10 13:58) [22]

clickmaker ©   (10.09.07 13:42) [21]
всем привет от Дмитрия О.


Тогда надо было цитировать "каракули, приравненные к ним" )))


 
Суслик ©   (2007-09-10 14:04) [23]

Рисовать полезно. Но мое имхо максимум, что полезно, это диаграмма пакетов из UML. Т.е. концептуальные зависимости классов и блоков. Кто кого и зачем использует.


 
Anatoly Podgoretsky ©   (2007-09-10 14:05) [24]

> clickmaker  (10.09.2007 13:42:21)  [21]

И вам здраствуйте.


 
MsGuns ©   (2007-09-10 19:58) [25]

Способность быстро разобраться в чужом коде - признак квалификации программиста ;)


 
Вася Правильный   (2007-09-10 20:08) [26]


> разобраться в чужом коде

если это код, а не каракули к нему приравненные


 
MsGuns ©   (2007-09-10 20:13) [27]

Если "каракули" работают, то это именно рабочий код


 
Virgo_Style ©   (2007-09-10 20:34) [28]

MsGuns ©   (10.09.07 19:58) [25]
Способность быстро разобраться в чужом коде - признак квалификации программиста ;)


Причем неизвестно, какого в большей степени - того, который писал, или того, который теперь читает


 
Плохиш ©   (2007-09-11 01:14) [29]


> Как вникать в чужой код?

Нафик в него вникать? Переписать всё нафик!


 
Германн ©   (2007-09-11 01:38) [30]


> Плохиш ©   (11.09.07 01:14) [29]

И как только тебя терпят соседи-бюргеры? :-)


 
Anatoly Podgoretsky ©   (2007-09-11 08:38) [31]

> Плохиш  (11.09.2007 01:14:29)  [29]

Наш человек!


 
calm ©   (2007-09-11 09:29) [32]

Kostafey, не паникуй, всё будет хорошо.
Через пару месяцев эта очень непонятная прога будет тебе как родная :)


 
Anatoly Podgoretsky ©   (2007-09-11 09:38) [33]

> calm  (11.09.2007 09:29:32)  [32]

Через пару месяцев кончится испытательный срок.


 
Ditrix ©   (2007-09-11 09:46) [34]

порисовать uml-подобные диаграмки бывает полезно.
ну и отладчик рулит.

по себе скажу так - пока на столе не вырастет гора листочков-черновичков с диаграммами названиями функций стрелками и собственными коментами  - проект будет оставаться черным ящиком

и стараться не использовать разного рода "построители диаграмм" "анализаторов кода" и прочее...

imho разумеется  ;-)


 
Плохиш ©   (2007-09-11 11:09) [35]


> Германн ©   (11.09.07 01:38) [30]
>
> > Плохиш ©   (11.09.07 01:14) [29]
>
> И как только тебя терпят соседи-бюргеры?

Переписать соседей-бюргеров нафик! :-)


 
Плохиш ©   (2007-09-11 11:12) [36]

Вот никогда не возникало вопроса "Как вникать в чужой код?", может некоторым стоит поискать своё дело...


 
Kostafey ©   (2007-09-12 21:15) [37]


> Вряд ли все. Но я не только так начинал, но до сих пор в
> этом болоте :(

Суть не в болоте.
Слишком форсированные сроки.


> [14] Суслик ©   (10.09.07 11:56)
> терпенье и труд все перетрут (с)

За это меня точно никто не выгонит с работы.
Даже несмотря на полную некомпетентность.
Упрямство в изучении и работе рулит :)


> PS Надеюсь полезно будет.

Да, да. Большое спасибо!


> [17] TUser ©   (10.09.07 13:18)
> Еще хорошо, когда есть документация или автор кода, которого
> можно прижать к теплой стенке. Я понимаю, что это - научная
> фантастика, но все же вдруг.

Автор есть, документации нет.
Но ведь с автором встретисля и все.
Рядом с собой его даже на день не посадишь. :)


> 25] MsGuns ©   (10.09.07 19:58)
> Способность быстро разобраться в чужом коде - признак квалификации
> программиста ;)

Значит у меня пока кваификация невысока.
Ни кто не сторит.


> [29] Плохиш ©   (11.09.07 01:14)
> > Как вникать в чужой код?
> Нафик в него вникать? Переписать всё нафик!

Тут ма-а-а-аленькое замечание.
17-го презентация этого творения начальству :)


> Kostafey, не паникуй, всё будет хорошо.
> Через пару месяцев эта очень непонятная прога будет тебе
> как родная :)

Пары месяцев нет.
Но есть еще пару дней :)


> [33] Anatoly Podgoretsky ©   (11.09.07 09:38)
> > calm  (11.09.2007 09:29:32)  [32]
> Через пару месяцев кончится испытательный срок.

Не, не кончится. Почему?
Правильно! Он уже кончился :)

> [36] Плохиш ©   (11.09.07 11:12)
> Вот никогда не возникало вопроса "Как вникать в чужой код?
> ", может некоторым стоит поискать своё дело...

Знаешь сколько таких умников жизьнь покалечила?
В прямом, физическом смысле.
Уж не обижайся.


 
Cobalt ©   (2007-09-13 10:32) [38]

2 Kostafey ©

> Zeqfreed ©   (10.09.07 08:27) [8]
> Суслик ©   (10.09.07 11:56) [14]
Я именно так и вникал в один проект, который наша контора отдала лет 5-6 назад, а потом взяла обратно на поддержку.
Причём работал один, расспрашивая их админа.



Страницы: 1 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.03 c
3-1181285199
ssa
2007-06-08 10:46
2007.10.14
Узнать, что dataset находится в режиме редактирования


2-1189761258
Gaj
2007-09-14 13:14
2007.10.14
Кодировка при копировании полей таблицы BDE


4-1176206198
Ega23
2007-04-10 15:56
2007.10.14
Как воспроизвести видеозапись в конкретном окне?


2-1190006417
bss
2007-09-17 09:20
2007.10.14
Как избавиться от мигания в гриде при переоткрытии запроса


15-1189683406
Константин Батькович
2007-09-13 15:36
2007.10.14
Как удалить установленный MUI? (русский пак для WinXP)