Как разобраться в ЧУЖОМ коде ?
От: Advanced_User Израиль  
Дата: 29.06.03 08:59
Оценка:
Скажу сразу, что программист я не очень опытный ещё Поэтому часть из моих размышлений о работе в составе команды носит чисто теоретический характер

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

Мне, как начинающему, интересно разобраться с популярными open-source проектами, такими как, например,
eMule, Miranda или, скажем Quake


Но КАК можно в ЭТОМ всём разобраться, ведь там же ТОЛЬКО исходники

Мои познания на сегодня: ("частично" — значит не до конца ещё осилил )
Assembler — с деЦтва
Pascal — успешно забыт
C — Керниган и Ричи
С++ — Дейтелы, частично — Страуструп
Win32 — Петзольд
Advanced Win32 — частично Рихтер.
MFC — частично Круглинский
OOD — частично Буч

плюс ко всему — физический факультет

Какие будут ваши рекомендации ?
Re: Как разобраться в ЧУЖОМ коде ?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.03 09:28
Оценка: 20 (1) +2 :)
Здравствуйте, Advanced_User, Вы писали:

A_U>Мои познания на сегодня: ("частично" — значит не до конца ещё осилил )

A_U>Assembler — с деЦтва
A_U>Pascal — успешно забыт
A_U>C — Керниган и Ричи
A_U>С++ — Дейтелы, частично — Страуструп
A_U>Win32 — Петзольд
A_U>Advanced Win32 — частично Рихтер.
A_U>MFC — частично Круглинский
A_U>OOD — частично Буч

A_U>плюс ко всему — физический факультет


A_U>Какие будут ваши рекомендации ?


Перейти от читания книжек к практике.
... << RSDN@Home 1.1 beta 1 (np: тихо) >>
AVK Blog
Re: Как разобраться в ЧУЖОМ коде ?
От: peterbes Россия  
Дата: 29.06.03 09:30
Оценка:
Здравствуйте, Advanced_User, Вы писали:

Нет ничего страшного, осилишь все сам, было бы желание.
Чужой код (Open source) интересен сам по себе, по нему просто учится можно и получать удовольствие и он снимает зашореннось, которую вдалбливают в процессе учебы
Re: Как разобраться в ЧУЖОМ коде ?
От: bkat  
Дата: 29.06.03 09:50
Оценка:
Для начала неплохо бы узнать, а что вообще делает код
с точки зрения пользователя. Когда знаешь, для сего все это сделано,
то намного легче понять как это сделано.

Потом можно придумать какую-нибудь тестовую задачку.
Придумай, что можно полезного добавить или что-то изменить.
Можно попробовать реализовать какую-нибудь фичу повторно.
Не страшно, если это будет просто повторение того, что уже сделано
не тобой. Как минимум ты поймешь "дух" и идеи дизайна

В общем случае нужно иметь какую-нибудь цель и знать, для чего тебе вообще это нужно.
Изучать код просто ради интереса, я лично просто не могу.

Всевозможные "тулзы" для удобной навигации в коде
в этом конечно же сильно помогают.
Re[2]: Как разобраться в ЧУЖОМ коде ?
От: Advanced_User Израиль  
Дата: 29.06.03 10:04
Оценка:
Здравствуйте, bkat, Вы писали:

B>Всевозможные "тулзы" для удобной навигации в коде

B>в этом конечно же сильно помогают.

Можно поподробнее о "тулзах", пожалуйста ?
Re[3]: Как разобраться в ЧУЖОМ коде ?
От: bkat  
Дата: 29.06.03 11:18
Оценка: 30 (5) +1
Здравствуйте, Advanced_User, Вы писали:

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


B>>Всевозможные "тулзы" для удобной навигации в коде

B>>в этом конечно же сильно помогают.

A_U>Можно поподробнее о "тулзах", пожалуйста ?


Я пользуюсь SNiFF,
и иногда Together.

Как-то попадался мне Understand for C++.

Хорошая "тулза" должна уметь строить диаграмы классов
и поддерживать регулярные выражения для поиска чего-либо в коде.

SNiFF очень неплох для навигации и поиску по коду.
Он позволяет настроить себя так, что ты из всей массы
файлов будешь видеть только то, что нужно тебе.
Re: Как разобраться в ЧУЖОМ коде ?
От: George Seryakov Россия  
Дата: 30.06.03 01:15
Оценка: 116 (15) +5
Здравствуйте, Advanced_User, Вы писали:

A_U>Насколько я себе представляю,если я участвую в разработке какого-то проекта, то всегда могу лично пообщаться с другими его участниками. Кроме того, мне, по всей видимости, известен общий дизайн проекта (структура классов, возможно, UML — диаграммы.)


Не знаю как за опенсорец, но в коммерческих разработках типическая ситуация — куча мутно написанного кода, не со всеми разработчиками можно пообщаться, а с некоторыми и не хочется, структура классов ничего не отражает, дизайна нет, а проектная документация ничему не соответствует. И в этой ситуации нужно исправить ошибку, подавить утечку памяти, впарить новую фичу, отпортировать проект на другую операционку/базу данных, довести сырой код до ума и т.д. и т.п. Да, и мантру русского программиста — "Все это надо переписать" — разрешается произносить только про себя.

Вот так и разбираешься в чужом коде. Причем с годами приходит тонкое исскуство разбираться только в том чужом коде, что нужно, и ни строкой больше.
GS
Re[2]: Как разобраться в ЧУЖОМ коде ?
От: КАА Россия  
Дата: 30.06.03 07:41
Оценка: :)
Здравствуйте, George Seryakov, Вы писали:

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


A_U>>Насколько я себе представляю,если я участвую в разработке какого-то проекта, то всегда могу лично пообщаться с другими его участниками. Кроме того, мне, по всей видимости, известен общий дизайн проекта (структура классов, возможно, UML — диаграммы.)


GS>Не знаю как за опенсорец, но в коммерческих разработках типическая ситуация — куча мутно написанного кода, не со всеми разработчиками можно пообщаться, а с некоторыми и не хочется, структура классов ничего не отражает, дизайна нет, а проектная документация ничему не соответствует. И в этой ситуации нужно исправить ошибку, подавить утечку памяти, впарить новую фичу, отпортировать проект на другую операционку/базу данных, довести сырой код до ума и т.д. и т.п. Да, и мантру русского программиста — "Все это надо переписать" — разрешается произносить только про себя.


GS>Вот так и разбираешься в чужом коде. Причем с годами приходит тонкое исскуство разбираться только в том чужом коде, что нужно, и ни строкой больше.


Как это близко!!!
Могу еще добавить, что, как правило, код без комментов или с такими, что лучше бы их и не было :D).
Все будет Украина!
Re[2]: Как разобраться в ЧУЖОМ коде ?
От: VCoder http://wxbar.sf.net
Дата: 30.06.03 08:48
Оценка:
Здравствуйте, George Seryakov, Вы писали:

GS>Не знаю как за опенсорец, но в коммерческих разработках типическая ситуация — куча мутно написанного кода, не со всеми разработчиками можно пообщаться, а с некоторыми и не хочется, структура классов ничего не отражает, дизайна нет, а проектная документация ничему не соответствует.


Поэтому желательно нормально комментировать свои проги для того, чтобы тот, кто придет после тебя не ругал тебя последними словами. И вообще писать прогу нужно так, чтобы ее код был читабельным не только для тебя.
Я на своей шкуре сталкивался как с читабельными прогами , так и с полной мутью .
А недавно столкнулся с прогой, которая вроде бы написана красиво (осмысленные всех имен классов, темплейтов и переменных, комментарии и т.д.), но логика работы была настолько запутаной , что я просто переписал все с нуля .
С уважением,
Дмитрий.
Re: Как разобраться в ЧУЖОМ коде ?
От: Joker6413  
Дата: 30.06.03 14:01
Оценка: :)
Здравствуйте, Advanced_User, Вы писали:

Дык, с помощью VS и какой-то матери... Иногда свой старый код посмотришь ... и изумишься...

Игорь
Re[2]: Как разобраться в ЧУЖОМ коде ?
От: Demiurg  
Дата: 01.07.03 07:05
Оценка: 1 (1) :)
Здравствуйте, George Seryakov, Вы писали:

GS>Не знаю как за опенсорец, но в коммерческих разработках типическая ситуация — куча мутно написанного кода, не со всеми разработчиками можно пообщаться, а с некоторыми и не хочется, структура классов ничего не отражает, дизайна нет, а проектная документация ничему не соответствует. И в этой ситуации нужно исправить ошибку, подавить утечку памяти, впарить новую фичу, отпортировать проект на другую операционку/базу данных, довести сырой код до ума и т.д. и т.п. Да, и мантру русского программиста — "Все это надо переписать" — разрешается произносить только про себя.


GS>Вот так и разбираешься в чужом коде. Причем с годами приходит тонкое исскуство разбираться только в том чужом коде, что нужно, и ни строкой больше.


Совершенно точно подмечено! Меня мой проект уже забодал, порой возникает такое чувство, что остальные разработчики, с которыми общаюсь по аське, просто ничего не понимают в программировании, проектирования нет никакого, код мутнее мутного... Тешу себя мыслей, что хоть мой код привносит немного света в беспроглядную тьму...
Однажды я заикнулся, что надо все переписать, был послан куда подальше в вежливой форме. Однажды спросил робко про CodeRules, встретил полное непонимание... При этом проект успешно продается и все такое.
Пример из практики — этими разработчиками была написана своя версия функции регистрации COM-сервера, просто потому, что они не знали, что есть стандартная.
Re: Как разобраться в ЧУЖОМ коде ?
От: vvaizh http://izh-test.sourceforge.net/
Дата: 01.07.03 07:43
Оценка:
Здравствуйте, Advanced_User, Вы писали:

A_U>Какие будут ваши рекомендации ?


Мои рецепт:
разобрался с переменной/функцией -добавь свой комментарий/переименуй
Так постепенно разберёшся со всем..
кроме того помогает разбиение на более мелкие части и выделение потворноуоптребляющихся частей в модули
http://izh-test.sourceforge.net/russian/introduction.html
Re[3]: Как разобраться в ЧУЖОМ коде ?
От: George Seryakov Россия  
Дата: 01.07.03 13:06
Оценка: +1
Здравствуйте, Demiurg, Вы писали:

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


А твой код еще не переписывали? Типа — сделал все чистенько: классы, смартпойнтеры, QWAN. А потом заходишь в архив и видишь правку — кто-то убрал смартпойнтеры, понапихал глобальных переменных, испортил логику и т.п. И все просто потому, что не понимал, что написано.
GS
Re[4]: Как разобраться в ЧУЖОМ коде ?
От: Demiurg  
Дата: 01.07.03 13:19
Оценка:
Здравствуйте, George Seryakov, Вы писали:

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


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


GS> А твой код еще не переписывали? Типа — сделал все чистенько: классы, смартпойнтеры, QWAN.


В Дельфе нет шаблонов, так что обходимся без смартпойнтеров Как же я ее ненавижу... крик души...

GS> А потом заходишь в архив и видишь правку — кто-то убрал смартпойнтеры, понапихал глобальных переменных, испортил логику и т.п. И все просто потому, что не понимал, что написано.


Со мной, слава б-гу, такого не было (только зачастую мой код к своему страшному стилю приводят), а вот с коллегой как-то ужас такой произошел... Именно из-за непонимания кода, все убрали, по-своему написали (неправильно), пришлось с нуля все переписывать, месяц загублен...
Re[5]: Как разобраться в ЧУЖОМ коде ?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.07.03 08:23
Оценка:
Здравствуйте, Demiurg, Вы писали:

GS>> А твой код еще не переписывали? Типа — сделал все чистенько: классы, смартпойнтеры, QWAN.


D> В Дельфе нет шаблонов, так что обходимся без смартпойнтеров Как же я ее ненавижу... крик души...


Смартпоинтеров там нет не из-за отсутствия шаблонов, а из-за отсутствия автоматических деструкторов.
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Re[6]: Как разобраться в ЧУЖОМ коде ?
От: Demiurg  
Дата: 02.07.03 08:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

D>> В Дельфе нет шаблонов, так что обходимся без смартпойнтеров Как же я ее ненавижу... крик души...


AVK>Смартпоинтеров там нет не из-за отсутствия шаблонов, а из-за отсутствия автоматических деструкторов.


А их там и не может быть, так как исключительно ссылочная модель. Предположим, что они там есть, как реализовать смартпойнтер без шаблонов? Не представляю
Re: Как разобраться в ЧУЖОМ коде ?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 02.07.03 08:41
Оценка:
Здравствуйте, Advanced_User, Вы писали:

A_U>Какие будут ваши рекомендации ?


repeat
  View;
  Edit;
  if Need then Undo;
  if Vagueness then WriteUnitTest;
until False;
Re[7]: Как разобраться в ЧУЖОМ коде ?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.07.03 08:43
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> А их там и не может быть, так как исключительно ссылочная модель. Предположим, что они там есть, как реализовать смартпойнтер без шаблонов? Не представляю


А в чем проблема то? В том что одним единственным смартпоинтером для всех типов не обойтись?
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Re[8]: Как разобраться в ЧУЖОМ коде ?
От: Demiurg  
Дата: 02.07.03 08:53
Оценка:
Здравствуйте, AndrewVK, Вы писали:

D>> А их там и не может быть, так как исключительно ссылочная модель. Предположим, что они там есть, как реализовать смартпойнтер без шаблонов? Не представляю


AVK>А в чем проблема то? В том что одним единственным смартпоинтером для всех типов не обойтись?


Именно. Тогда придется писать кучу смартпойнтеров для каждого типа, или извращаться. Лучше тогда вообще их не писать... Для меня указатель это просто указатель на что-то, независимо от типа, а в дельфе эта парадигма уже не соблюдается... Вообще, отсутствие шаблонов — большой сакс... Помню, писал я функцию, в которую объекты разных классов должны передаваться, но обработка для них одна. Такую гадость написал для анализа их типов... Все равно неуниверсально вышло, как ты понимаешь.
Re[9]: Как разобраться в ЧУЖОМ коде ?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.07.03 09:13
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> Именно. Тогда придется писать кучу смартпойнтеров для каждого типа, или извращаться.


Ну зачем так жестоко? Можно создать базовый класс и написать для него смартпоинтер, а потом все управляемые классы наследовать от него.

D>Лучше тогда вообще их не писать...


Ну это уже другой вопрос. Главное что смартпоинтеры отсутствуют прежде всего из-за отсутствия автоматичиеских деструкторов.
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.