Re: Jak správně rozdělit C++ projekt
Ondrej
ondrej-hwl na hawsys.cz
Pondělí Srpen 23 22:02:46 CEST 2021
Zdravím
doporučuji zcela vypustit
* část definice globálních proměnných - z hlediska "good coding
practice" by žádné proměnné neměly být globální. Místo toho mají být buď
lokální pro třídu nebo případně třída může poskytovat get/set pro
přístup k nim. Ještě lepší je, pokud třída vrací pouze "const referenci"
aby jí data nemohl jen tak někdo měnit.
* část vytvoření instancí tříd - instance ať si vytvoří funkce, které
je potřebuje - ať už pomocí new dynamicky nebo na stacku. Případně
použít návrhový vzor "singleton" pokud má být třída jen jedna a globální
pro všechny.
* #define - lepší je použít static const pro proměnné nebo funkce pro
makra (rozdíl ve výkonu nebo kódu je nulový). Výhodou je, že define může
přepsat i to, co nechcete a proměnné mají typovou kontrolu. Pokud např.
definujete makro ERROR na 1 a někdo použije funkci se jménem PRINT_ERROR
tak vaše makro jí změní na PRINT_1 (nehledě na namespace).
a zbytek rozdělit logicky na GPOI, SPI, IIC, algoritmy atd. - to už
záleží na programu.
Jinak na globální proměnné pokud už tam musí být tak do cpp souboru
napsat např.
static const int a = 10;
static const int b [2] = {0, 1};
a do h souboru
#ifdef _AAA__
#define __AAA__
extern static const int a;
extern static const int b [2];
#endif
a pak ten H vložte kamkoliv kde chcete přistupovat k a nebo b (ani
nemusí být const).
Ondřej
Dne 23.8.2021 v 15:47 Petr Zapadlo napsal(a):
> Zdravím,
>
> nějak se nemůžu domluvit s rozdělením původního jedno velkého souboru
> na menší. Mějme jeden soubor main.cpp který má následující strukturu:
>
>
> část #include
>
> část #define (piny a podobně)
>
> část deklarace funkcí
>
> část vytvoření instancí tříd
>
> část definice globálních proměnných
>
> funkce setup
>
> funkce loop
>
> definice funkcí.
>
> A pro zlepšení orientace a čitelnosti bych rozdělit nějak takto po
> souborech:
>
> globální proměnné, instance tříd a #define
>
> setup a loop
>
> definice funkci
>
> Jaký to má správný postup, buď mu někde něco chybí a nebo si naopak
> stěžuje, že je daná proměnná redefinována
>
>
> Díky
>
> Petr
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list