Re: Názvy proměnných

Slavomir Skopalik skopalik na elektlabs.cz
Sobota Duben 13 00:08:20 CEST 2024


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