Як вникати в чужий код

Це перший випадок у моїй практиці коли і програма не хеллоу-ворд, та код повинен доводитися писати не з нуля, а супроводжувати вже напівготовий продукт, підтримувати (читай - доробити) проект розроблений не мною. ні рядки. З самим розробником є ​​можливість найчастіше раз на тиждень зустрічатися.

Якщо хтось пам'ятає, я подібне питання про структуру БД ставив.

Сиджу тут, дивлюсь на нього. це скільки всього зрозуміти тут потрібно. Що робити?

P.S. Питання може і не надто серйозної манері заданий, але саме по собі питання напевно один з найпоширеніших у практиці програмування. Це ж іноді свій код зрозуміти не можеш, а тут ще чужий, та ще й >перший раз.

потрібно знати, а що цей код повинен делать. якщо це виконано, завдання на %20 можна розв'язати. далі дивишся, як цей код робить потрібне. Якщо ж. то %80, що й інше буде через те саме, зворотне за аналогією. ну а решта 20% - творчість :))))

Навіщо безцільно вивчати чужий код? Перед тобою стоїть твоє власне завдання, от і дивися як його реалізувати в поточній обстановці.

> потрібно знати, а що цей код повинен робити. > якщо це виконано, завдання на %20 можна розв'язати.Ну до цього я близький

> Далі дивишся, як цей код робить потрібне. Якщо ж. > то %80А до цього ще мені як пішки до Китаю;)

> А й ніхто не казав, що буде легко. Та й не звик я щоб > легко було. > Я просто уточнював. Це я один такий, як дурник екраном з > ієрогліфами тупо > любуюся чи так само починали? :) >Навряд чи все. Але я не тільки так починав, але й досі в цьому болоті :( Ласкаво просимо! :-)

Болото ще те. Але є іінша сторона. болота. Коли ти дивишся (через деякий час), ЩО зробили з твоїм кодом і. Ну, тихо (незлобиво) вимовляєш усілякі ніжні слова :)

Ну от, наприклад, я нещодавно намагався розібратися, чому у мене плеєр глючить. Відкрив його вихідники. Включив налагодження, подивився якесь повідомлення він мені пише. Знайшов висновок цього повідомлення у вихідному коді. І потім як клубок почав розплутувати код із цього місця. Тобто. дивлюся, звідки цей код викликається, звідки той код викликається і так далі. Потім знайшов місце де плеєр зависає, але причини зрозуміти так і не зміг на жаль, а потім він перестав глючити і стало складно налагоджувати :(

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

А вивчити роботу всієї програми цілком відразу навряд чи вийде, та й не потрібно це, правильно Керк каже. Це було б, звичайно, дуже здорово, але майже нереально.

Так треба не своє повідомлення виводити, а системне, набагато корисніше для налагодження.

Починай розкручувати з конструктора. :)

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

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

> Це іноді свій код зрозуміти не можеш, а тут ще чужий, > та ще й > перший раз.- Ось мені студенти тупі попалися, коллего! Пояснюю раз, другий, третій. сам уже все зрозумів, а вони - як об стінку горох! бородатий анекдот

терпіння і працю все перетруть (с)

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

Твоє головне завдання – скласти у будь-якій формі коцептуальну модель досліджуваного проекту. Зрештою, ти можеш викинути свій док-файл. Але це не означає, що без нього можна обійтися по дорозі до мети. Якщо навести аналогію, то для того, щоб порахувати тобі швидше за все потрібний папірець, який ти зможеш викинути після розрахунку, але результат запам'ятати.

PS Сподіваюся, корисно буде. Я зараз також досліджую чужий проект :)

> Чим воно корисніше? Якщо ж у системний лог виводити буде, > то звідти фільтрувати записи ще доведеться, щоб зайвого > не показувалося.Стара історія, майже щотижня бачимо код, де в обробці помилки видається наприклад: не вдалося відкрити файл. то пиши.

блок-схеми, або каракулі, прирівняні до них, можуть бути корисними.

Тоді треба було цитувати "каракулі, прирівняні до них")))

Малювати корисно. Але моє імхо максимум, що корисно, це діаграма пакетів UML. Тобто. концептуальні залежності класів та блоків. Хто когось і навіщо використовує.

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

Здатність швидко розібратися в чужому коді - ознака кваліфікації програміста;)

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

> розібратися в чужому кодіякщо це код, а не каракулі до нього прирівняні

Якщо "каракулі" працюють, це самеробочий код

Причому невідомо, якого більшою мірою - того, що писав, або того, що тепер читає

> Як вникати в чужийкод?Нафік у нього вникати? Переписати все!

Kostafey, не панікуй, все буде добре. Через пару місяців ця дуже незрозуміла прога буде тобі як рідна :)

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

помалювати uml-подібні діаграми буває корисно. ну і відладчик рулить.

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

і намагатися не використовувати різного роду "побудовники діаграм" "аналізаторів коду" та інше.

Ось ніколи не виникало питання "Як вникати в чужий код?" може деяким варто пошукати свою справу.

> Навряд чи все. Але я не тільки так починав, але й досі > цьому болоті :(Сутність не в болоті. Занадто форсовані терміни.

> PS Сподіваюся, корисно буде.Так, так. Велике дякую!

> Kostafey, не панікуй, все буде добре. > За кілька місяців ця дуже незрозуміла прога буде тобі > як рідна :)Пари місяців немає. Але є ще кілька днів :)