Specificații cod sursă

[vezi Task guidelines – Principii generale]

  1. Entități funcționale (e.f.)
      1. fișier
      2. clasă
      3. funcție / metodă
      4. variabilă / membru de clasă / parametru de funcţie / constantă
      5. tabelă
      6. câmp din tabelă
    1. Elemente de avut în vedere la crearea / implementarea unei e.f.:
      1. scop precis şi limitat (o clasă / metodă trebuie să facă un singur lucru)
      2. mod de funcţionare clar
      3. mod de utilizare clar şi documentat (setare / citire valoare, apel, relaţionare etc)
    2. Denumiri / identificatori
      1. În limba Engleză, cu excepția e.f. transmise către aplicații externe ce necesită alte convenții sau denumiri fixe (e.g. câmpurile din declaraţiile anaf)
      2. Corespund scopului lor – scopul / conținutul / funcționalitatea trebuie să poată fi înţelese, în principal, doar citind denumirea (pt. detalii se consultă docblockul respectiv).
      3. http://www.yiiframework.com/doc/guide/1.1/en/basics.convention
      4. Tabelă
        1. litere mici
        2. separare cuvinte prin “_” (e.g. user_company)
        3. singular (user, option, nu users, options)
      5. Câmp din tabelă
        1. camelcase, prima literă mică (user.currentCompanyId)
      6. Fişier
        1. Dacă este clasă, numele este identic cu numele clasei
        2. Vezi regulile Yii pentru fişiere tip model, view, controller.
      7. Clasă
        1. first-upper-camelcase (UserController)
        2. in funcţie de scop (controller, helper, widget, model etc) se aplică reguli specifice
      8. Funcţie / metodă
        1. first-lower-camelcase (actionCreate(), getCompany())
        2. Dacă scopul este să întoarcă date folosite mai departe în alte operaţii, numele ar trebui să fie de genul getSomething().
        3. Dacă scopul este să execute operații fără să întoarcă date folosite necesare în alte operaţii, numele ar trebui să fie de genul doSomething() (computeVat(), registerAccountingNotes()). Aceste funcții, pe lângă execuția operațiilor destinate, pot și ele întoarce date precum true (succes) / false (eroare), null (nu am găsit), cod/mesaj de eroare.
      9. Variabilă / membru de clasă / constantă
        1. first-lower-camelcase ($userId, $totalWithoutVat)
    3. După crearea unei e.f. se completează MAI ÎNTÂI docblockul / descrierea, apoi se trece la implementarea și/sau utilizarea efectivă. Astfel implementarea trebuie să corespundă cu informaţiile redactate în docblock – scop, mod de utilizare, parametri, valori întoarse, scenarii etc. Docblockul poate fi actualizat în timpul implementării.
      Scurt tutorial despre docblock-urile de bază: https://phpdoc.org/docs/latest/getting-started/your-first-set-of-documentation.html
    4. PHPSTORM – liniile galbene de pe bara din dreapta ferestrei de editare – cod de optimizat / corectat / clarificat / documentat. După finalizarea task-ului se trece prin fişierele în care s-a lucrat şi se rezolvă cât mai multe din aceste probleme (chiar dacă nu s-a lucrat efectiv în zonele indicate).
  2. Calcule
    1. Înmulțirile și împărțirile de sume de bani se fac totdeauna cu round(2)
      $this->$attribute = 232.02;
      $this->invoice->total = 50;
      $this->invoice->currencyRate = 4.4604;
      
      $this->invoice->total * $this->invoice->currencyRate; // aparent este 232.02, în realitate PHP calculează 232.01999999...
      $greater = ($this->$attribute > $this->invoice->total * $this->invoice->currencyRate);    // TRUE
      $greater = ($this->$attribute > round($this->invoice->total * $this->invoice->currencyRate, 2));    // FALSE (corect business logic), sunt egale la zecimala 2

About

Das Yii Man

Leave a Reply

Your email address will not be published. Required fields are marked *

[TOP]