{
  "version": "https://jsonfeed.org/version/1",
  "title": "gruszka.dev",
  "home_page_url": "https://gruszka.dev",
  "feed_url": "https://gruszka.dev/tag-cleancode.json",
  "description": "Things I would like to share",
  "items": [
    {
      "id": "https://gruszka.dev/cleancode.html",
      "url": "https://gruszka.dev/cleancode.html",
      "title": "Clean Code",
      "content_html": "<p>Pisanie czystego kodu nie jest łatwe i każdy, kto napisał trochę kodu w swoim życiu wie co mam na myśli.</p>\n<p>Jestem obecnie na etapie lektury (a właściwie powrotu do) &quot;Clean Code&quot; Uncle Boba. Chciałbym wypunktować parę rzeczy, które znalazły się w książce i warto o nich pamiętać. Krótko i zwięźle:</p>\n<ul>\n<li>niech nazwy przedstawiają intencje i komunikują do czego są przeznaczone</li>\n<li>unikanie dezinformacji (np. unikanie skrótów)\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">$criteria zamiast $c</code></pre>\n</li>\n<li>nie używamy magicznych liczb\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">if($counter === 12)</code></pre>\nlepiej\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">if($counter === ALLOWED_ENTRIES)</code></pre>\n</li>\n<li>nie stosujemy notacji węgierskiej\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">$strFirstName</code></pre>\nlepiej:\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">$firstName</code></pre>\n</li>\n<li>nie stosujemy prefiksu lub postfiksu <code>Interface</code>. Interfejs jest tylko abstrakcją\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">interface CsvWriterInterface</code></pre>\nlepiej:\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">interface CsvWriter</code></pre>\n</li>\n<li>to że Ty wiesz, że zmienna <strong><code>r</code></strong> znaczy coś, nie znaczy, że ktoś inny jak będzie to czytał, to będzie też to wiedział</li>\n<li>nazwy klas powinny być rzeczownikami lub wyrażeniami rzeczownikowymi\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">class User {}</code></pre>\n</li>\n<li>nazwy metod powinny być czasownikami lub wyrażeniami czasownikowymi\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-php\">function login() {}</code></pre>\n</li>\n<li>akcesory, mutatory i predykaty powinny być poprzedzone przedrostkiem get, set, is</li>\n<li>będź spójny w ramach bazy kodu - np. fetch, retrieve, get do analogicznych metod w róznych klasach</li>\n<li>dodaj znaczący kontekst - wiele nazw nie niesie za sobą wystarczająco treści - konieczne jest umieszczenie nazw we właściwym kontekście przez wstawienie ich w odpowiednio nazwane klasy, funkcje i przestrzenie nazw</li>\n<li>nie prefiksujemy nazw ogólnoznanym terminem np. &quot;Luksusowa Stacja Benzynowa&quot; używamy w nazwach jako LSBCustomer</li>\n<li>twórz małe funkcje max. 20-30 wierszy</li>\n<li>bloki w instrukcjach if, else, while i podobnych powinny mieć po jednym wierszu i prawdopodobnie wiersze te powinny być wywołaniem funkcji; oznacza to że funkcja nie może być na tyle duża, aby zawierała zagnieżdzone struktury, dlatego poziom wcięć w funkcji nie powinien przekraczać dwóch.</li>\n<li>funkcje powinny wykonywać tylko jedną operację, powinny robić to dobrze. powinny robić tylko to.</li>\n<li>długa opisowa nazwa jest lepsza niż krótka enigmatyczna</li>\n<li>im mniej parametrów przekazywanych do funkcji tym lepiej (najlepiej zero), może trzeba je wydzielić jako parametry klasy</li>\n<li>gdy funkcja wymaga więcej niż dwóch lub trzech argumentów, najprawdopodobniej niektóre z nich powinny być umieszczone w osobnej klasie.</li>\n<li>jeśli funkcja musi zmieniać stan czegokolwiek, powinna zmieniać stan własnego obiektu</li>\n<li>rozdzielanie poleceń i zapytań (funkcje powinny coś wykonywać lub odpowiadać na jakieś pytanie, ale nie powinny robić tych dwóch operacji jednocześnie)</li>\n<li>powinniśmy stosować wyjątki zamiast obsługi błędów</li>\n</ul>\n",
      "summary": "",
      "date_published": "2020-05-10T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Błażej Gruszka",
          "url": "https://www.linkedin.com/in/blazejgruszka/",
          "avatar": "https://github.com/bgruszka.png"
        }
      ],
      "tags": [
        "cleancode"
      ],
      "language": "pl"
    }
  ]
}