Ładny Kod

14
Ładny Kod Jakub Nietrzeba

Transcript of Ładny Kod

Ładny Kod

Jakub Nietrzeba

Co to znaczy?

Ludzki mózg nie jest w stanie podążać za rozgałęzieniami

Jest liniowy Ogarnia siedem pojęć na raz – większość zdań

składa się z siedmiu wyrazów

Co to znaczy?

Brzydki kod jest pełen rozgałęzień Jest trudny w czytaniu Wymaga skupienia do zrozumienia Jest mylący, zagmatwany, nasztuczkowiony Przekracza zdolności pojmowania typowego

człowieka

Co to znaczy?

Co to znaczy?

Jak?

Odwróć ify Jedna rzecz na raz Nie grzeb innym w spodniach Rąbaj metody Nie gmatwaj Używaj narzędzi

Odwróć ifa

Z przodu liceum

if ($request->isMethod('post')) {

if ($request->isType('ajax')) {

$data = $request->getData();

if ($data->isValid($this->rules)) {

$order = new Order($data);

return $order;

Z tyłu groza

} else {

return false;

}

} else {

return false;

}

} else {

return false;

}

Odwróć ifafunction parseOrder($request) {

if (! $request->isMethod('post')) {

return false;

}

if (! $request->isType('ajax')) {

return false;

}

$data = $request->getData();

if (! $data->isValid($this->rules)) {

return false;

}

$order = new Order($data);

return $order;

}

Jedna rzecz na raz

return $this->messages[$status]; Takie komentarze:

// ----------- ORDER ----------------

// calculate vat

// 3. attach mouse to a cat

Zmienne $return, $ret, $result Funkcje które można scharakteryzować jako te:

Które liczą i formatują

Które pobierają, aktualizują i zapisują

Nie grzeb obiektom w spodniachif($order->getParams()->getParam('payment_type') == PaymentType::CARD) {

$order->getPayment()->getCard()->save();}

Jeden -> w linii Zamiast grzebać zapytaj:

if($order->hasCardPayment()) { $order->saveCard();}

Nie używaj tablic do przekazywania przetworzonych danych!

Nie dotyczy DQL

Siecz, rżnij, rąb!

Sztywny limit długości metody (25 linii) Sztywny limit głębokości wcięcia (2 wcięcia)

function doSomething($data) { foreach ($data as $item) { // 1 $item->doMe(); // 2 if ($item->isYou()) { $item->doYou(); // <---- Bąęł! } }}

Sztywny limit ilości metod w klasie (larva style!)

Macarena!

Nie używaj sztuczek i mało znanych metod next jako podgląd pierwszego elementu tablicy

Nie używaj pełnych nazw namespace'ów Something/OtherThing/Library/Macarena

Jedna kropka, strzałka przyrównanie na linię Warunki w if w jednej linijce

Wyliczaj przed ifem

Warunki do widoku wyliczaj w kontrolerach

Nigdy nie pisz własnego frameworka!

Używaj narzędzi

Pull request podstawowym narzędziem dbania o przejrzystość kodu: Warto używać GIFów

Brak świętych krów

Ciągła integracja i walidacja kodu: csfixer

mess detector

copy paste detector