Preglednost kôda: IF var1,…,varN IS NOT NULL … vs. COALESCE(var1, var2,…, varN)

Wednesday, 24.10.2012 – Dejan

Po ko zna koji put vidjam u PL/SQL procedurama aljkav kôd i ne mogu se nacuditi raznim improvizacijama i perverzijama, koje pojedini programeri pisu…

Jedna od zadnjih se protezala na 90 linija kôda i izgledala je ovako:

IF var1 IS NOT NULL THEN varResult := var1;
ELSIF var2 IS NOT NULL THEN varResult := var2;
...
ELSIF varN IS NOT NULL THEN varResult := varN;
END IF;

Mislim, cemu to!? Shvatio sam da je cilj provjeriti varijable jednu po jednu, i cim se dodje do prve varijable, koja ima neku vrijednost, dodijeliti ju rezultatskoj varijabli. Zar nije ovako preglednije?

varResult := COALESCE(var1, var2, ..., varN);
  1. 6 Responses to “Preglednost kôda: IF var1,…,varN IS NOT NULL … vs. COALESCE(var1, var2,…, varN)”

  2. zato što OO programeri pišu PL/SQL upite.
    pogledaj samo oglase za posao i sve će biti jasno. 🙂

    u konkretnom primeru programer sigurno nije znao za funkciju COALESCE, a NVL mu je bio previše “aljkav”. 🙂

    By aleksandar on Oct 24, 2012

  3. Dejan,
    I do understand frustrations but let me show other approach.
    1) The coalesce function will compare each value.
    2) Coalesce will make context switch to sql.
    So from performance view initial way is faster and, from Oracle view, less resource heavy.
    Next…it is more then easy to modify IF part later if something changed then add logic to coalesce. I have personally seen OK PLSQL guys who add “IF 1=1 THEN ELSE null ENDIF” parts for later change!

    Last but not least, use CASE rather then DECODE and “IF THEN ELSE” or other splitting logic code. Author Steven Feuerstein
    Rg,
    Damir

    By Damir Vadas on Oct 26, 2012

  4. Damire nemoj se ljutiti, ali ovo nije blog na engleskom jeziku. 🙂

    By Dejan on Oct 27, 2012

  5. Sorry … ovaj oprosti … ponijelo me!
    🙂

    By Damir Vadas on Oct 28, 2012

  6. The coalesce function will NOT compare each value.

    🙂

    By aleksandar on Oct 29, 2012

  7. Možda su programeri plaćeni po liniji koda 😉
    Trebalo bi vrijediti pravilo – Manje je više.

    By tomislav on Jul 7, 2016

Post a Comment