Re: Názvy proměnných
Pavel Hudeček
edizon na seznam.cz
Sobota Duben 13 04:58:47 CEST 2024
Ano, zakládat projekt pokud možno jako C++ je dobrý začátek.
Ničemu to nevadí a když je potřeba, tak se tím dost věcí usnadní. Když
ne rovnou třídy a objekty, tak aspoň přetěžování funkcí, nebo použití
static_cast.
Škoda že třeba gcc avr má problémy se šablonama, to je ještě lepší
usnadnění než přetížení (nevím jak jinde, ale mě zlobil s AVR64DD32).
Ale třeba řídící proměnné foru často zakládám venku (těsně nad), abych
pak těsně pod zjistil, jestli prošel celej, nebo ne, případně kolik.
PH
Dne 13.04.2024 v 0:08 Slavomir Skopalik napsal(a):
> 1. Vse v kodu anglicky (vcetne komentaru)
>
> 2. Lokalni promene co nejkratsi, a platnost pouze pro nezbytnou cast
> kodu.
>
> 3. Globalni promenne popisne, ale neprehanet
>
> 4. Globalni promenne az na vyjimky jako struktury
>
> 5. Pokud to kompiler umi, tak c++ (a klidne psat jak v c)
>
> Duvody:
>
> struktury mohou mit metody, auto, tridy
>
>
> Takze klidne:
>
> for(int i=0; i<4; i++){
>
> }
>
> a hned potom znovu
>
> for(int i=0; i<4; i++){
>
> }
>
> To ze i plati vzdy jen pro telo cyklu zajistuje, ze nebude nikde
> omylem pouzito.
>
> Dalsi vyhodou je "izolace" kodu, pokud je nekam zkopirujete, tak sebou
> nese vse nezbytne.
>
>
> Pri psani pro ARM hodne vyuzivam inline.
>
> Ukazka spolecneho predka pro vsechny RS komunikace (NXP ARM MCU):
>
> class UART_t{
> protected:
> unsigned long LastRxTime;
> public:
> int Transactions; // How many Rx
> transactions from system start
> int CRCFails = 0; // CRC RX fails
> int RxOverRun = 0;
> LPUART_Type * BaseAddr = NULL;
> short Port = 0;
> bool Enabled;
> bool Logging = false;
> bool SingleWireMode; // Set LPUART
> into single wire mode (
> bool RTSEnable; // Enable RTS
> bool RTSPolarityInversion; // invert RTS
> polarity
> // Methods
> void Open(short APort, int a_CLK, unsigned int BaudRate);
> void Close();
> void BlockedSend(char c); // Try send char, if buffer
> is full than wait for empty
> void Purge(); // drop input FIFO
> // inline methods
> inline bool isTxEmpty(){
> return BaseAddr->STAT & LPUART_STAT_TDRE_MASK;
> }
> inline bool isTransmiting(){
> return !(BaseAddr->STAT & LPUART_STAT_TC_MASK);
> }
> inline void SendChar(char c){
> BaseAddr->DATA = c;
> }
> inline bool ReceiveChar(char* c){
> uint32_t st = BaseAddr->STAT;
> if( st & LPUART_STAT_OR_MASK){
> BaseAddr->STAT = LPUART_STAT_OR_MASK; // clear
> Over Run flag Note:While the OR flag is set, no additional data is
> stored in the data buffer even if sufficient room exists.
> RxOverRun++;
> }
> if( !(st & LPUART_STAT_RDRF_MASK) ) return false;
> *c = BaseAddr->DATA;
> LastRxTime = _T0TC;
> return true;
> }
> inline void SetDirection(bool tx_dir){ // Set direction
> in single wire mode tx_dir = true -> transmitting
> if(tx_dir)
> BaseAddr->CTRL |= LPUART_CTRL_TXDIR_MASK;
> else
> BaseAddr->CTRL &= ~LPUART_CTRL_TXDIR_MASK;
> }
> };
>
> Slavek
>
> Ing. Slavomir Skopalik
> Executive Head
> Elekt Labs s.r.o.
> MASA - Collection and evaluation of data from machines and laboratories
> http://eng.elektlabs.com/products-and-services/masa
> -----------------------------------------------------------------
> Address:
> Elekt Labs s.r.o.
> Chaloupky 158
> 783 72 Velky Tynec
> Czech Republic
> ---------------------------------------------------------------
> Mobile: +420 724 207 851
> skype:skopaliks
> e-mail:skopalik na elektlabs.com
> http://www.elektlabs.com
>
> On 12.04.24 09:57, Martin Záruba wrote:
>> Používáte názvy proměnných:
>>
>> 1) v češtině/sloveštině
>>
>> 2) v angličtině
>>
>> 3) úplně jinak
>>
>>
>> Vytváříte názvy tak, aby dávaly smysl:
>>
>> 1) změnaNapětíNaBateriimV
>>
>> 2)dUBat // změna napětí na baterii v mV
>>
>> 3) jinak
Další informace o konferenci Hw-list