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

Nenad Korolija nenadko at gmail.com
Tue Feb 22 09:01:17 CET 2022


Sjajno! Ne diramo onda nista vise za sad...

Pozdrav,
Nenad

On Tue, Feb 22, 2022 at 8:53 AM Dusan Cvijetic <dusancvijetic2000 at gmail.com>
wrote:

> 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
>>
> --
> 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/7a85be70/attachment-0001.htm>


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