PHP Ewolucje – standardy i niestandardy … jeszcze

Z każdym dniem w wolnym czasie udaje mi się implementować nowe klasy funkcyjne w projekcie Phunc, otwarte repozytorium znajduje się na GitHub.

Typowe Myślenie

Contents

Dla mnie to pierwsze wdrożenie projektu w idei o której pisałem już wcześniej. Wówczas implementowałem pojedyncze rozwiązania testowew celach doświadczalnych. Im bardziej używam myślenia funkcyjnego opartego na typowaniu tym bardziej widzę jak ułatwiam sobie pracę i jak bardziej wieloużteczny kod produkuję.

Gdy pora na refaktoring, myślę o drzewie, które wyrosło nadwymiar i przysłania to co istotne.

Pora na rozsadzenie:

fotolia_122947272

Przebieg refaktoryzacji

  1. Pozbywam się gałęzi klas
  2. Zamieniam je na pojedyncze listki na nowym mniejszym drzewie projektu

Korzyści refaktoryzacji

  1. Modułowy kod staje się bardziej jednoznaczny i czytelny
  2. Funkcyjna implementacja usuwa wiele atrybutów, efektem jest Single Responsibility
  3. Typowanie daje jednoznaczne określenie danej funkcjonalności, dając wieloużywalność i naturalnie efektem jest Łatwość stosowania Dependency Injection

Efekt uzyskuje się odpowiednio nazywając klasy, tutaj też warto otworzyć umysł, aby precyzyjnie a nie tylko rzeczownikowo nazywać, często po prostu definiuję zdanie:

  • new SaveFileToRemoteServer()
  • new DownloadFileFromUrl()
  • new ChangeFileName()
  • new AddNewLineInFile()
  • new AddErrorToLogs()

Czy długość przeszkadza jeśli korzyścią jest czytelność kodu?

Programowanie w PHP ma swoje wady, ale też jest wiele możliwości, minusem jest konieczność sprzątania kodu, który bywa długi i szeroki, ale … może to pora na zmianę?

np. zmianę monitora na wyższą rozdzielczość 2560×1440 ?

Czy strata czasu na zrozumienie krótkich i nieprecyzyjnych przez to nazw jest uzasadniona?

Ponadto precyzyjne określenie nazwy ułatwia użycie w innym przypadku.

Zasady

  1. Najmniejsza publiczna zmienna jest objektem reprezentowanym przez klasę funkcjyjną lub reprezentację danych.
  2. Prywatne zmienne reprezentowane w typach prostych istnieją tylko wewnątrz klasy na użytek wewnętrzny, na zewnątrz publicznie dostępne są methody klasy
  3. Zapisywaniem danych i zmianą ich wartośći zajmuje się konstruktor
  4. Odczyt danych z obiektu jest możliwy poprzez methody, bez możliwości zmiany wartości, tylko odczyt.
  5. Nazwa klasy funkcyjnej ściśle określa zadanie jakiemu ona służy,

Podsumowanie

Kod jest czytelny, to jedna z podstawowych korzyści, o innych będę jeszcze pisał.

Tom Sapletta
Facebooktwitterredditpinterestlinkedinmail

Author: Tom Sapletta

Łączę doświadczenie z nowymi technologiami. Od 10 roku życia jestem pasjonatem komputerów i programowania. Moim pierwszym (mikro)komputerem był ZX-Spectrum a językiem programowania: Basic. Od 2010 roku programuję zawodowo, objektowo i funkcjonalnie w architekturach monolitycznych i mikro-usługowych. Obecnie tworzę architekturę ekosystemów dla liderów rynku w firmie Softreck.