Programistyczna kanapka, czyli wprowadzenie do warstw abstrakcji

Ten wpis jest częścią mojego starego bloga, prowadzonego w latach 2005-2007 pod adresem dragonee.jogger.pl. Został on zachowany w celach archiwizacyjnych i niekoniecznie reprezentuje moje bieżące stanowisko na dany temat.

Pomysłów na kanapkę jest wiele. Aby nadać jej odpowiedni smak, możemy posłużyć się ogromem składników. Mimo to, większość z nas, tworząc własną kanapkę korzysta z tych samych zasad, podyktowanych głównie przez eksperymenty i zdrowy rozsądek. Wymieńmy je:

  1. Na spodzie kładziemy chleb, lub wyrób chlebopodobny. Chociażby dlatego, że pomniejsze składniki na samej ręce nie będą chciały zbytnio się utrzymać.
  2. W środku kładziemy główny składnik (w znakomitej większości jeden, dość rzadko – dwa, większa ich ilość jest pomijalna).
  3. Na górze dodajemy warzywa i przyprawy, które nadal potrafią odmienić wielce smak tej samej kanapki z głównym składnikiem. Dodatkowo, zapewniają one wizualizację zaplanowanego przez nas wyglądu idealnej kanapki.

Schemat na budowę kanapki wydaje się prosty, jednak dzięki niemu możemy stworzyć zadziwiającą ilość kombinacji. Dojdziemy także do wniosku, że ten schemat właściwie nas nie ogranicza.

Po zaprogramowaniu i zjedzeniu kanapki oraz umyciu rąk, siadamy przed monitorem i zastanawiamy się, jak stworzyć jakiś program. Paradoksalna sytuacja, skoro przed chwilą bez zastanowienia projektowaliśmy w ten sam sposób. Dojście do najprostszych rozwiązań, choć tak popularnych i naturalnych, zawsze bywa kłopotliwe.

Z wiedzą o zależności kanapki i programu, możemy się zabrać za sensowne go tworzenie. Postawmy sobie następujące założenia:

  1. Chcemy zminimalizować czas potrzebny na poprawianie błędów w programie.
  2. Chcemy, aby nasz program dawało się rozwijać bez jakiejś skomplikowanej ingerencji w dotychczasowy kod. Implikując, chcemy go rozwijać.
  3. Nie chcemy, aby kod był duplikowany.

W tym wypadku, sensowne wydaje się użycie warstw abstrakcji. Co możemy dzięki nim zyskać?

  1. Przejrzystość i czytelność kodu – wymuszone naszymi założeniami.
  2. Pewność, że nie będziemy naruszali spójności całego programu, zmieniając lub dopasowując właściwości danego komponentu.
  3. Znacznie mniej koniecznej dokumentacji do zrozumienia działania programu.
  4. Elastyczność w dodawaniu nowych funkcji – chyba największa zaleta warstwowego podejścia do programowania.
  5. Możliwość używania kodu z wcześniejszych projektów bądź łatwo dostępnego w sieci bez konieczności przepisywania jego połowy w celu przystosowania do programu.

Następnym razem – jak przygotować się mentalnie do programowania warstwowego.

Tags:
One Response
  1. 6 grudnia, 2006

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *