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