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ł.
![Share on Facebook Facebook](https://tom.sapletta.com/wp-content/plugins/social-media-feather/synved-social/image/social/regular/96x96/facebook.png)
![Share on Twitter twitter](https://tom.sapletta.com/wp-content/plugins/social-media-feather/synved-social/image/social/regular/96x96/twitter.png)
![Share on Reddit reddit](https://tom.sapletta.com/wp-content/plugins/social-media-feather/synved-social/image/social/regular/96x96/reddit.png)
![Pin it with Pinterest pinterest](https://tom.sapletta.com/wp-content/plugins/social-media-feather/synved-social/image/social/regular/96x96/pinterest.png)
![Share on Linkedin linkedin](https://tom.sapletta.com/wp-content/plugins/social-media-feather/synved-social/image/social/regular/96x96/linkedin.png)
![Share by email mail](https://tom.sapletta.com/wp-content/plugins/social-media-feather/synved-social/image/social/regular/96x96/mail.png)