Antywzorce Flashcards
Antywzorce – metodyczne
- Copypasteryzm
- Programowanie przez permutację
- Złoty młotek
- Silver bullet
- Czynnik nieprawdopodobieństwa
- Ponowne odkrywanie koła
- Odkrywanie kwadratowego koła
- U mnie działa
Copypasteryzm
ang. Copy and paste programming – zamiast tworzyć ogólne rozwiązania, kopiuje się (i modyfikuje) istniejący kod
Programowanie przez permutację
ang. programming by permutation – próba rozwiązania problemu przez konsekwentne zmiany w kodzie (bez przemyślenia sprawy i zrozumienia problemu), do czasu aż program zadziała.
Złoty młotek
ang. golden hammer – faworyzowanie jednej technologii w celu rozwiązania wszystkich problemów, również tych, dla których istnieją znacznie lepsze metody.
Silver bullet
założenie, że sprawdzone rozwiązanie techniczne musi być zawsze skuteczne przy rozwiązaniu znacznie większego problemu
Czynnik nieprawdopodobieństwa
ang. improbability factor – założenie, że nie jest prawdopodobne, aby znany błąd się ujawnił w działaniu
Ponowne odkrywanie koła
ang. Reinventing the wheel – rozwiązywanie na nowo problemu dla którego jest już optymalne rozwiązanie.
Odkrywanie kwadratowego koła
ang. Reinventing the square wheel) – rozwiązywanie problemu w zły sposób, podczas gdy istnieją skuteczne i sprawdzone rozwiązania. Na przykład tworzenie własnego systemu bazodanowego, zamiast wykorzystania istniejących darmowych rozwiązań, z dużym prawdopodobieństwem lepszych niż sami jesteśmy w stanie stworzyć.
U mnie działa
ignorowanie problemu powstałego na pewnej instalacji systemu ponieważ problem ten nie wystąpił na innej instalacji.
Antywzorce – w projektowaniu
- Inwersja abstrakcji
- Błotna bryła
- Petrochemia
- System, który gra i tańczy
- System z wyścigami
Inwersja abstrakcji
ang. Abstraction inversion: Nieudostępnianie użytkownikom zaimplementowanej funkcjonalności, której potrzebują, przez co muszą ją zaimplementować ponownie używając funkcji wyższego poziomu.
Błotna bryła
ang. Big ball of mud: Dotyczy systemu o trudnej do wyodrębnienia i zrozumienia strukturze. Modyfikowanie takiego systemu jest ryzykowne, gdyż nie sposób jest przewidzieć skutków zmian, kod przypomina spaghetti.
Petrochemia
ang. Gas factory: Zbyt skomplikowany, uciążliwie drobiazgowy projekt systemu lub funkcjonalność.
System, który gra i tańczy
ang Stovepipe system: Ciężko serwisowalny system zbudowany z komponentów niepowiązanych ze sobą (funkcjonalnie).
System z wyścigami
Race hazard: System, w którym źle zorganizowano obsługę zdarzeń i jego działanie jest zależne od ich kolejności.
Antywzorce – w programowaniu
- Przypadkowa złożoność
- Akcja na odległość
- Blind faith
- Boat anchor
- Caching failure
- Ukrywanie błędów
- Sterowanie wyjątkami
- Hard code
- Magic number
- Spaghetti code
Przypadkowa złożoność
ang. Accidental complexity – wprowadzanie niepotrzebnej złożoności kodu
Akcja na odległość
Action at a distance – niespodziewana interakcja pomiędzy oddzielonymi częściami systemu (np. poprzez zmienne globalne)
Blind faith
niesprawdzanie rezultatów napisanego kodu
Boat anchor
zachowanie części systemu która już nie jest potrzebna
Caching failure
pozostawienie ustawionej flagi istnienia błędu w systemie już po obsłużeniu błędnej sytuacji
Ukrywanie błędów
ang. Error hiding – przechwytywanie komunikatu o błędzie w celu ukrycia go przed użytkownikiem
Sterowanie wyjątkami
ang. Coding by exception – używanie konstrukcji językowych służących do zarządzania błędami (wyjątkami) w celu implementacji właściwej logiki programu (np. zwracanie wyniku z funkcji przez wyrzucenie wyjątku)