Kako se snaći u lavirintu koda većeg projekta ( recimo C )?

Naslov sve govori al’ pitam za vaša iskustva. Ima na netu dosta C++ savjeta, al za C slabo. Uglavnom se kod pisanja predlaže hijerarhijski model organizacije projekta ili aplikacije :

  • sistem
    • podsistemi ( baze, dependencies, ui…)
      • klase
        • objekti
          • funkcije, metode

To je u teoriji tako, al u praksi džungla. Recimo gledam u Elinks source - dosta stvari mi je jasno al opet ne mogu da povežem cijelu sliku. C kod mi je interesantiji zbog same imperative prirode ( a i zbog Linuxa :slight_smile: )
Vedrane, predpostavljam da ti imaš iskustva ?

U svakom slučaju hvala.

Hm… nemoj gledati ovako, inace ces zavrsiti sa previse bloated kodom.

Kao prvo, elinks je jako los primjer (iskreno jedan od najlosijih kojeg sam ja barem vidio); probaj uzeti neku gtk aplikaciju ili pogledaj Chirokee kod. Druga stvar, uvijek probaj drzati podsisteme (kako ih nazivas) iliti module nezavisnim; npr. u posebnim bibliotekama ili folderima. Ovo ima malo vise sa samim dizajnom nego sa kodom. I trece, tesko ces ovo nauciti iz savjeta; probaj sa malim primjerima, pa neka budu veci i tako ces nadoci kako da najefikasnije organizujes svoj kod.

Ma jasno;

Možda je moja greška što u tuđem kodu pokušavam naći smisao, kad smisla često nema ?

IMHO najbolja metrika je vrijeme koje je potrebno da ispraviš bug. Ako onome ko će održavati softver treba manje od 15 minuta da na osnovu backtrace (ili bilo kakve poruke greške) nađe bug i popravi, onda je organizacija dobra.

Tu se dolazi do ključnog pitanja: da li je ta osoba ti ili neko drugi i ko je taj drugi?

Ako razvijaš opensource projekat i cilj ti je da ga koristi i održava ostatak svijeta, poželjno je da se pridržavaš neke uobičajene prakse za odabrani jezik i platformu. Recimo ako radiš u C-u ja bih prije svega pogledao organizaciju Gnome projekata, i onda sljedeća preporuka je koristiti Glib i Gobject. Razlog je što će se neki volonter koji eventualno sutra odluči da hakuje na tvom projektu lakše snaći ako radiš isto kao ostatak svijeta.