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:
Przebieg refaktoryzacji
- Pozbywam się gałęzi klas
- Zamieniam je na pojedyncze listki na nowym mniejszym drzewie projektu
Korzyści refaktoryzacji
- Modułowy kod staje się bardziej jednoznaczny i czytelny
- Funkcyjna implementacja usuwa wiele atrybutów, efektem jest Single Responsibility
- 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
- Najmniejsza publiczna zmienna jest objektem reprezentowanym przez klasę funkcjyjną lub reprezentację danych.
- 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
- Zapisywaniem danych i zmianą ich wartośći zajmuje się konstruktor
- Odczyt danych z obiektu jest możliwy poprzez methody, bez możliwości zmiany wartości, tylko odczyt.
- 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ł.