ceckovy kviz

Aleš Procháska ales.prochaska na divesoft.com
Středa Září 6 23:26:52 CEST 2023


Já třeba proto, že si myslím, že ta úplně nejlepšinkatější verze je

if kozy>2 then
  splnuje_predpoklady=1;
  endif;

při formátování příkazu dělám, že tam ta otevírací závorka vůbec není a píšu

if (kozy>2) {
    splnuje_predpoklady=1;
    }

(včetně stejného odsazeni „}“.

Aleš Procháska


From: Hw-list <hw-list-bounces na list.hw.cz> On Behalf Of Jaroslav Buchta
Sent: Wednesday, 6 September, 2023 23:13
To: hw-list na list.hw.cz
Subject: Re: ceckovy kviz

Jo, to je taky zakladni doporuceni v MISRA...
Jeste k tem zavorkam, kdyz to vidim, tento zapis me naprosto irituje, podle me vubec nejsou prehledne bloky. Jak jsem pochopil, je pro to i ruzne pojmenovani formatovani textu.
Proc normalne vsichni nepouzivaji:

if(..)
{
   if(..)
    {
        neco;
    }
    neco;
}

?
Dne 06.09.2023 v 23:09 Petr Labaj napsal(a):
Jen úplně nepodstatná poznámka:
právě kvůli nebezpečí nějakého odsunutí nebo naopak dopsání, které by už bylo mimo podmínku, používám zásadně blokové závorky i při jediném příkazu v if.

Tedy ne:
if (kozy>2) splnuje_predpoklady=1;

ale

if (kozy>2) {
    splnuje_predpoklady=1;
}

PL

********************
Dne 6.9.2023 v 22:45 Pavel Hudeček napsal(a):
Já si myslím, že tohle je typický příklad umělé konstrukce, kterou přímo v této podobě nikdo normálně nepoužije. Jenže šedá je teorie a zelený strom života...

Měříme na pár kanálech ADC a jednou to uděláme bez přerušení a podruhé s:

for (uint8_t mxIdx=AD_chanStart; mxIdx<=AD_chanEnd; mxIdx++) {
    ADC0_MUXPOS = mxIdx;
    ...
    adData[mxIdx-AD_chanStart] = ADC0_RES;
}

Normální for, v jednom řádku se dozvíme od, do a po jak velkých krocích.

Jenže normálně nechci měřit for cyklem a v něm čekat až je změřeno, takže chci použít přerušení. Ale v něm chci mít taky takový jeden řádek, kde je jedna konstrukce s od, do a po jakých krocích.

ISR (ADC0_RESRDY_vect) {
    static uint8_t mxIdx=AD_chanStart;

    adData[mxIdx-AD_chanStart] = ADC0_RES;
    if (++mxIdx > AD_chanEnd) mxIdx = AD_chanStart;
    ...
}
Jen je škoda, že ta inicializační hodnota je tam dvakrát. Ale pořád je to lepší, než rozdělený na řádky ++ a if. Proč? Jednak když to vidím, tak je to jako vidět ten for, prostě jasná konstrukce, kde hned vím co dělá a proč. No a hlavně se při nějaké úpravě nemůže snadno stát, že se z toho omylem kus odsune, vymaže, či zkopíruje kam nemá.

Je možné, že když to někdo vidí poprvé, tak mu to chvíli jasné není. Jakmile to pochopí, tak je to prostě standardní konstrukce s na první pohled jasným chováním, stejně jako for použitý běžným způsobem.

PH
Dne 06.09.2023 v 21:38 Petr Labaj napsal(a):
Myslím, že jde o to, jak má člověk nastaveno samohodnocení.
Jestli na svém interním žebříčku postoupím výše pokud napíšu fakt prďáckou konstrukci, kterou nikdo jiný napsat neumí.
Nebo jestli naopak postoupím tehdy, pokud napíšu program, který je každému jasný na první pohled.

a=i--;
a=--i;

je jistě správně.
Ale pokud napíšu
a=i;
i--;

i--;
a=i;

tak je to stejné, a zřejmě i kompilátor to přeloží stejně nebo skoro stejně.

A otázka:
Který z těch zápisů je na první pohled jasnější, a kde spíš neudělám chybu? Ne v okamžiku, kdy se soustředím na kvíz, ale kdy jsem unavený a mám vytahané očí čuměním 10 hodin na monitor.
Který zápis bude pochopitelnější kolegovi, který sice programuje PLC, ale C viděl jen z rychlíku?

PL

********************

Dne 6.9.2023 v 21:22 Jindrich Fucik napsal(a):

...
Protože pochopitelně i tohle je správný zápis:
a=i--;
a=--i;
a kupodivu "a" se bude lišit.
...





_______________________________________________

HW-list mailing list  -  sponsored by www.HW.cz<http://www.HW.cz>

Hw-list na list.hw.cz<mailto:Hw-list na list.hw.cz>

http://list.hw.cz/mailman/listinfo/hw-list


------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20230906/e03c9af3/attachment.htm>


Další informace o konferenci Hw-list