Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.045 c
15-1189751075
tesseract
2007-09-14 10:24
2007.10.14
Ещё один бастион взят.


2-1190379982
Kolan
2007-09-21 17:06
2007.10.14
Почему Free не делает nil объекту?


15-1189883937
Галинка
2007-09-15 23:18
2007.10.14
Игра Die Siedler


15-1189579588
DVM
2007-09-12 10:46
2007.10.14
Подскажите программу для PINGA


4-1176143482
pit94
2007-04-09 22:31
2007.10.14
Как определить перемен.окружения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский