Ի լրումն իմ վերջին գրառման՝ Clean Code Made Simple — Part 1, այս գրառման մեջ ես պատրաստվում եմ շարունակել ներկայացնել տեխնիկան Robert C. MartinClean Code գրքից:

#6 Թաքցնել տվյալները

Ստորև բերված կոդի հատվածներից ո՞ր մեկն է ավելի լավ մշակված:

1)

interface Vehicle {
    public function getFuelTankCapacityInGallons();
    public function getGallonsOfGasoline();
}

2)

interface Vehicle {
    public function getPercentFuelRemaining();
}

Վերոնշյալ երկու դեպքում էլ նախընտրելի է երկրորդ տարբերակը։ Մենք չենք ցանկանում հնարավորինս բացահայտել մեր տվյալների մանրամասները: Ավելի շուտ մենք ուզում ենք մեր տվյալները արտահայտել վերացական ձևով։ Պետք է լուրջ մտորումներ մտցնել օբյեկտի պարունակած տվյալները ներկայացնելու լավագույն ձևով: Ամենավատ տարբերակն այն է, որ կամայականորեն ավելացնել ստացողներ և սեթերներ:

Այսպիսով, ցանկացած իրավիճակում, որտեղ հարմար է թաքցնել օբյեկտի տվյալները, դուք կարող եք դա անել:

#7 Դիզայնի պարզ կանոններ

Քենթ Բեքը ներկայացրեց այս 4 կանոնները որպես ծրագրեր ավելի լավ մշակելու հիմնական չափանիշներ.

  1. Կատարում է բոլոր թեստերը
  2. Չի պարունակում կրկնօրինակում
  3. Արտահայտում է ծրագրավորողի մտադրությունը
  4. Նվազագույնի է հասցնում դասերի և մեթոդների քանակը

Մեր դասերը և մեթոդները փոքրացնելու համար մենք կարող ենք ստեղծել չափազանց շատ փոքր դասեր և մեթոդներ: մենք պետք է նաև ցածր պահենք մեր գործառույթների և դասերի քանակը: սա kent-ի պարզ դիզայնի կանոնների չորրորդ կանոնն է, որն ավելի կարևոր է, քան մյուսները:

#8 մտադրությունների բացահայտման գործառույթներ

Ձեր կարծիքով, ինչպե՞ս կարող է այս կոդի հատվածը ավելի լավանալ:

public function getFlaggedCells() {
    $flaggedCells = new List();
    foreach ($cells as $cell) {
        if ($cell[STATUS_VALUE] == 1) {
            $flaggedCells->add($cell);
        }
    }
    return $flaggedCells;
}

Կախարդական թվերը թաքցնելու համար մենք կարող ենք գրել մտադրությունների բացահայտման ֆունկցիա (կոչել isFlagged): Դա հանգեցնում է գործառույթի նոր տարբերակի.

public function getFlaggedCells() {
    $flaggedCells = new List();
    foreach ($cells as $cell) {
        if ($cell->isFlagged())
            $flaggedCells->add($cell);
    return $flaggedCells;
}

#9 Գրելու թեստերը հանգեցնում են ավելի լավ դիզայնի

Համակարգերը, որոնք ստուգելի չեն, ստուգելի չեն: Կարելի է ասել, որ համակարգը, որը չի կարող ստուգվել, երբեք չպետք է տեղակայվի: Բարեբախտաբար, մեր համակարգերը ստուգելի դարձնելը մեզ մղում է դեպի դիզայն, որտեղ մեր դասերը փոքր են և մեկ նպատակ: Թեստեր գրելը հանգեցնում է ավելի լավ դիզայնի:

#10 մտահոգությունների տարանջատում

Ինչպիսի՞ն խորհուրդ կտաք սլաքների ուղղությունը՝ construction use-ից առանձնացնելու համար:

Main             Application
Builder

Ուղղությունները պետք է լինեն հետևյալը.

           run
  Main  --------->  Application
   |
   | build and construct
  \|/
Builder

Դա պարզապես նշանակում է, որ մեր հավելվածի construction-ը պետք է առանձին լինի usingից: Այս երկու քայլերը սկզբունքորեն առանձնացված են, և դրանց անջատումը մեզ ավելի լավ դիզայն և կառուցվածք է տալիս:

Լավ. Սա այս մասի համար է: Դուք կարող եք միանալ իմ Telegram ալիքին՝ վերջին գրառումների մասին տեղեկանալու համար։ Նաև կարող եք հետևել ինձ Twitter-ում և LinkedIn-ում: