3. 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
4. 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
8. 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;
}
9. Odwróć ifa
function 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;
}
10. 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ą
11. Nie grzeb obiektom w spodniach
if($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
12. 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!)
13. 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!
14. 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