[QGHG-it-dev-list] Generalni refactoring koda...

Dusan Cvijetic dusancvijetic2000 at gmail.com
Tue Feb 22 08:52:32 CET 2022


Pozdrav,

VS radi kako treba uz najnoviji apdejt! Isprobao sam ponovo
File/New/Project from existing code, i sada ga kompajlira iz prve.

Pozdravi,
Dušan

уто, 22. феб 2022. у 08:48 Nenad Korolija <nenadko at gmail.com> је написао/ла:

> Naravno, meni odmah perfektno radi. :)
> Marko, ja sam razmisljao na temu Makefile, sto bi valjda resilo VS
> probleme.
> Vidim da si include probleme jednostavno resio sa #include
> "triangulator.hpp".
> Sto se mene tice, OK je ovako (ja sam zadovoljan:),
> mada ukljucujes u input-and-output.cpp i set i vector i list.
> Svidja mi se i sto pravis biblioteku.
>
> Mislim da je sustina VS problema sto hoce da kompajlira svaki unit zasebno.
> Makefile bi u neki direktorijum (npr. obj) ostavljao pojedinacne .o
> fajlove,
> kako ne bi moralo sve da se rekompajlira, vec samo promenjeno,
> a brisalo bi se sa make clean. Naravno, kod je mali i ne bi bilo neke
> primetne razlike.
> Nisam razmisljao na temu biblioteka. Naravno, sve je moguce napraviti...
>
> Pozdrav,
> Nenad
>
> On Tue, Feb 22, 2022 at 5:43 AM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>
>>
>> Pozdrav svima,
>>
>> Obratite paznju na moj commit od veceras/nocas, i obavezno uradite "git
>> pull", jer je dosta toga prepravljeno:
>>
>> * Prvo, razmrsio sam .hpp i .cpp fajlove --- .cpp fajlovi se vise ne
>> include-uju nigde, a svi .hpp fajlovi se include-uju u glavni
>> "triangulator.hpp", koji je onda include-ovan u svaki .cpp fajl ponosob.
>> Ovo omogucava da se svaki .cpp fajl kompajlira nezavisno od ostalih (u
>> object-fajl), sto ce verovatno da olaksa zivot delu ekipe koja koristi
>> Visual Studio. :-) Skrecem vam paznju da pazite na redosled kojim se svi
>> ostali .hpp fajlovi include-uju u triangulator.hpp --- vazno je da klase
>> definisemo redom.
>>
>> * Drugo, premestio sam neke delove koda na zgodnija mesta, i kreirao par
>> novih fajlova, tako da sada svaki .cpp fajl ima svoj .hpp fajl i obratno.
>> Izuzetak su triangulator.hpp i main.cpp koji nemaju svoje parnjake. Ovakvu
>> strukturu bi imalo smisla da cuvamo i ubuduce, kada budemo dodavali nove
>> fajlove. Kad broj fajlova naraste, mozemo da ih razvrstamo i po
>> direktorijumima...
>>
>> * Trece, fajl constants.hpp je obrisan, a konstante koje su bile u njemu
>> su premestene u color.hpp odnosno u input-and-output.hpp, gde su im
>> prirodnija mesta. Dusan ce da se obraduje da sam ih sve stavio u #ifndef.
>> ;-) U nov fajl input-and-output.cpp sam stavio log-report f-ju, a tu cemo
>> kasnije da dodamo i f-je za citanje/snimanje u fajl (zadaci 7 i 8), kao i
>> raznorazne druge f-je za export-ovanje u .tex, ovo, ono...
>>
>> * Cetvrto, napisao sam build-script.sh, u kome se vide detalji sta i kako
>> treba da se kompajlira. Pod Linux-om mozete prosto da izvrsite skript, a
>> ako radite pod Windows-om procitajte sta pise u fajlu, pa na osnovu toga
>> konfigurisite svoj build-environment. Skript cemo u buducnosti verovatno da
>> zamenimo nekom ozbiljnijom Makefile strukturom i/ili ekvivalentom za
>> Windows, ali za sada moze da posluzi i ovako.
>>
>> * I peto --- *sam kod* uopste nisam menjao, samo sam ga prepakovao po
>> fajlovima. Sve f-je i klase su iste kao sto su bile pre refactoring-a. Tako
>> da ako ste poceli nesto da radite, mozete da nastavite bez ometanja, samo
>> obratite paznju sta treba da ide u koji fajl --- svaka f-ja ide u neki
>> .cpp, a njena deklaracija u odgovarajuci .hpp.
>>
>>
>> To je to sto se tice izmena. Logika celog poduhvata je sledeca --- glavni
>> "priozvod" celog naseg koda treba da budu sledeca dva fajla:
>>
>>    triangulator-library
>>
>> (sa ekstenzijom .a, .so, .lib, .dll, ili bilo sta sto se smatra
>> standardnim za staticke biblioteke na datoj platformi), i
>>
>>    triangulator-gui
>>
>> (bez ekstenzije ili sa ekstenzijom .exe, .app, ili sta god je
>> odgovarajuce za izvrsni fajl na datoj platformi).
>>
>> Prvi fajl je staticka biblioteka rutina [1] --- nju ce "nas korisnik" da
>> upotrebljava u svom kodu ovako kako je mi sada upotrebljavamo u main.cpp
>> fajlu --- include-ovace triangulator.hpp (koji sadrzi definicije svih
>> konstanti, klasa, i deklaracije svih f-ja), i onda ce ulinkovati biblioteku
>> rutina dok kompajlira svoj kod. Naravno, ako zeli, moze da prekompajlira i
>> samu biblioteku, ako mu binary verzija ne odgovara.
>>
>> Drugi fajl ce da bude izvrsni, koji pokrece GUI. Nega cemo da napravimo
>> isto kao i nas korisnik --- include-ovacemo triangulator.hpp u kod za GUI,
>> i onda cemo da ulinkujemo biblioteku rutina tokom kompajliranja GUI-ja. GUI
>> ce da poziva f-je iz biblioteke kako mu odgovara, zavisno na sta klikcemo
>> po GUI-ju.
>>
>> To je ukratko generalna logika kako cela stvar treba da radi. Ubuduce
>> samo treba da postujemo strukturu .hpp/.cpp parova, da azuriramo
>> build-script.sh kada dodajemo nove .cpp fajlove, i da svi novi include-ovi
>> idu iskljucivo u triangulator.hpp i nigde drugo.
>>
>> Btw, Jaroslave i Dusane, javite mi kako stoje stvari sa Visual Studiom
>> nakon ovog refactoring-a --- da li je sada jednostavnije import-ovati kod u
>> VS, i da li je proradio i native VS-kompajler ili se i dalje oslanjate na
>> g++.
>>
>> :-)
>> Marko
>>
>> [1] https://en.wikipedia.org/wiki/Static_library
>>
>>
>>
>> Dr. Marko Vojinovic
>> Group for Gravitation, Particles and Fields
>> Institute of Physics
>> University of Belgrade
>> ======================
>> home page: www.markovojinovic.com
>> e-mail:    vmarko at ipb.ac.rs
>>
>>
>> --
>> QGHG-it-dev-list mailing list
>> QGHG-it-dev-list at ipb.ac.rs
>> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>>
> --
> QGHG-it-dev-list mailing list
> QGHG-it-dev-list at ipb.ac.rs
> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220222/ed4e90ca/attachment.htm>


More information about the QGHG-it-dev-list mailing list