Notatnik Webmastera : Architektura ...



Obserwuj zmiany wprowadzane na tej stronie | Wersja do druku | Zaloguj się:   Hasło:  

Architektura


Przemyślenia

Niech «obszar czułości» pewnej dającej się wyodrebnić funkcjonalności systemu będzie zdefiniowany jako obszar, w którym dokonanie zmiany może unieczynnić lub upośledzić tą funkcjonalność.

Należy dążyć do minimalizacji tego obszaru i do redukcji nakładania się takich obszarów różnych funkcjonalności.

przykład:

Plik towary.php na zapleczu e-cyfrowych obsługuje kilka dających się wyodrębnić funkcjonalności:
– klonowanie produktów z kategorii
– zmiana typu parametrów kategorii
– definiowanie parametrów kategorii

Wszytkie razem były obsługiwane przez jeden formularz który rozpoczynał sie na początku szablonu towary.thtml a kończył na końcu.
Wskutek tego wszystkie te trzy funkcje miały bardzo rozległy «obszar czułości».

Kiedy dodałem nową funkcjonalność do tego pliku:
– ustawianie atrybutu na potrzeby onetu

To zrobiłem sobie własny formularz w szablonie towary.thtml ... oczywiście nie zauważyłem tak rozległego formularza obsługującego poprzednie funkcje i zrobiłem swój wewnątrz tamtego co spowodowało problemy.
Nawet gdybym był świadom istnienia tego wielkiego formularza to i tak mógłbym uszkodzić tamte funkcje poprzed stworzenie w mojej części formularza kontrolki o nazwie takiej samej jak istniejące.
Dlatego należy dążyć do tego aby obszary, w których można uszkodzić istniejące funkcjonalności były tak niewielkie jak się da i możliwie dobrze oznaczone. W szczególności znaczniki form w szablonach powinny swoim zasięgiem obejmować tylko to co niezbędne.

Dodatkowo należy zmniejszać ryzyko przypadkowego uszkodzenia.

Podczas tworzenia funckjonalności trzeba się zawsze zastanowić co trzebaby zrobić żeby zepsuć daną funkcjonalność z zewnątrz i robić tak żeby przypadkowe wykonanie takiej czynności było jak najmniej prawdopodobne.
Jeżeli wykonujemy moduł, który ma docelowo być włączany w inne systemy (a praktycznie zawsze jest to w nieokreślonej przyszłości możliwe) to należy unikać stosowania zmiennych globalnych, klas i funkcji o nazwach popularnych ... jak przekonałem się ostatnio nazywanie klasy dostępu do bazy CTable jest złym pomysłem podczas łączenia dwóch modółów korzystających z nieco różnych wersji tej klasy (podobny problem dotyczył tablicy $CONFIG[]) .... myślę że należałoby prefixować nazwy klas, jakimś tekstem ściśle związanym z tworzoną funkcjonalnością np. Newsletter_CTable zamiast CTable.
Nie powieniento być duży narzut pracy przy tworzeniu nowych rzeczy a znacznie może ułatwić integrację z innymi naszymi (i nie tylko) projektami.

Dostęp do wszelkich zasobów zewnętrznych (i wogóle wszystkich dających się wyróżnić całości) należy opakowywać w funkcje

Każdy, nawet najbanalniejszy, dlatego, że może ulec zmienie, albo, że w pewnym momencie warto zobaczyć kiedy dostęp się odbywa.
Przykład:
A kilku miejscach w sklepie odczytuję coś i zapisuję do plików. W pewnym momencie okazało się że jedynym sensownym rozwiązaniem pewnych problemów jest włączenie magic_quotes_runtime. Włączenie tej opcji powoduje że zmienia się między innymi działanie funkcji operujących na plikach. Każda funkcja zapisu wykonuje na danych podanych do niej funkcję stripslashes (to nawet nie jest udokumentowane), a każda funkcja odczytująca dane z pliku wykonuje na danych wczytanych z pliku tuż przed ich zwróceniem addslashes.
Gdybym dostep do pliku opakowywał to musiałbym tylko w jednym miejscu uwzględnić te zmiany. Ponieważ tego nie robiłem to musiałem wyśledzić wszytkie miejsca gdzie robiłem jakiekolwiek zapisy zcy odczyty z plików. A to nie łatwe ponieważ czasem do odczytu używałem file() a czasem file_get_contents(), a jeszcze mogłem to robić przy pomocy fread()

Antywzorce


Wskazówki


 
Nie ma plików na tej stronie. [Wyświetl pliki/formularz]
Komentarze (0). [Dodaj/Wyświetl komentarze]

Informacje zanotowane na tej stronie sa publicznie dostępne. Każdy kto ma ochote może je wykorzystaż w dowolnym celu. Notujac tu coś godzisz sie z tym faktem.

Jeżeli widzisz na tej stronie treść lub kod Twojego autorstwa, na których upublicznianie przeze mnie sie nie godzisz daj mi znać.

Jeżeli uważasz informacje zamieszczone na tej stronie za użyteczne umieść linka do tej strony na własnych stronach. Dzięki temu większa ilość ludzi będzie mogła na tą stronę trafić.

Internetowy katalog stron internetowych