Doctor Ciomu

E vara, e soare, forumurile sint goale, daca-mi permiteti sa parafrazez un curent ideologic din perioada pre-gregoriana a unui mare cintaret, producator si faraon. Pentru a umple golul lasat de plecarea in vacanta a expertilor m-am gindit sa-i dau cuvintul unui fost coleg, actual pericol public.

Intii si-ntii Peter ne arata ca pentru a accede in sferele superioare ale programarii, trebuie sa te lepezi de ultima expresie din instructiunea for:

for( nFold = 0; nFold++ < nFolders; )
{
    // ...
}

Dupa aceasta tura de incalzire, Peter ridica stacheta. Ca un adevarat Bryukhonenko, el decide sa amputeze si corpul for-ului. Fierastraul se prezinta sub forma operatorului virgula, acest luceafar calauzitor pentru programatorii ce se aventureaza pe drumul conciziei:

for(int x=0; s[x++]=c, Data>>c, !Data.eof() && x<100; ) ;

Scoala Ardeleana ne invata sa folosim virgula cit mai des, mai ales intre subiect si predicat. Peter e de acord. Cind nu putem elimina corpul unui for cu ea, putem macar sa scapam de acolade:

while( x < m_cGrid.GetCols() &&
  nXoff + (nW=m_cGrid[x].Width()) < nCx-3 )
    nXoff += nW,
    iB++,
    x++;

Nici subiectul std::map nu-i este strain lui Peter:

std::map<uint,identitylist_t>::iterator iT =
  m_cStatic.m_cTemplate.find(Type);
identitylist_t& TypeList =
  iT == m_cStatic.m_cTemplate.end() ?
  m_cStatic.m_cTemplate[Type] : iT->second;

Mai departe eroul nostru transeaza o dilema cu care s-a confruntat mai demult si Ovidiu “MVP” Cucu:

int HandlerView::GetNodeIcon( TreeNode* pcNode ) const {
  //! isequal returns 0; is 5, 1 is 2, 2 is 7
  return "\5\2\7"[pcNode->IsEqual2Head()];
}

In urmatorul fragment se introduce un concept revolutionar: crapatul pentru pastrarea datelor:

CString cS;
cS.Format(
  "Error in reading Directory <>,\n"
  "Database may be corrupt.\n"
  "Tide will now crash to preserve data.", GetName() );
AfxMessageBox( cS );
throw;

Peter poarta astazi titlul de “software architect” in firma in care lucreaza (care face soft pentru platforme petroliere). Se impune deci sa dam un exemplu de arhitectura conceputa de el, in care clasa de baza apeleaza explicit metode dintr-o clasa derivata:

class ResourceData_t {
    // ...
    static int GetBackupMode();
};

class SecureResource_t : public ResourceData_t{
    // ...
    static BackupMode_e GetBackupMode();
};

int ResourceData_t::GetBackupMode(){
  return SecureResource_t::GetBackupMode();
}

Inchei acest necrolog cu goatse-ul for-urilor:

for( uchar*p = m_pData; !++*--p; );
Tags: , , , , , , , , , , , ,

5 Responses to “Doctor Ciomu”

  1. Radu Says:

    pana la urma ce face for( uchar*p = m_pData; !++*–p; ); ? ca tot nu ma prind

  2. Mihnea Says:

    Aduna 1 la un numar tinut in baza 256. Bucla incrementeaza byte-ul la care pointeaza p si continua daca byte-ul e 0 dupa incrementare, adica daca era 255 inainte (face carry). Ca bonus, LSB-ul e in ultimul element al array-ului, deci cind se plimba prin el trebuie sa decrementeze pointerul. Probabil a facut asta pentru ca incerca sa foloseasca cit mai multi operatori, ca daca-l tinea ca oamenii cu LSB-ul in m_pData[0], ar fi trebuit sa-l repete pe ++ (adica !++*++p in loc de !++*–p).

  3. Radu Says:

    foarte tare, mersi..
    imi place blogul, cateodata ma face sa ma simt destept si cateodata foarte prost :)).

  4. siEu Says:

    da, e interesant. continua :)

  5. soferu de pe emacs Says:

    Da Mihnea e cel mai tare. Ca monarhul cel despotic, se lupta sa zadarniceasca codul malitios scris de Peter (cel obfuscat).
    A explodat platforma petroliera din cauza lui Peter !!!!!!

Leave a Reply

Optionally add an image (JPEG only)