Programuję od nieco ponad roku i mam doświadczenie w pisaniu aplikacji systemowych, aplikacji internetowych i skryptów dla firm / organizacji. Jednak jedna rzecz, której nigdy tak naprawdę nie zrobiłem, to praca z frameworkiem takim jak Django, Rails lub Zend.
Patrząc na środowisko Django, jestem trochę sfrustrowany tym, jak bardzo jest on abstrakcyjny w ramach. Rozumiem podstawowe cele DRY i minimalnego kodu, ale wydaje się, że niektóre z tego nadmiernego polegania na różnych modułach i dużej abstrakcji podstawowych funkcji:
Sprawia, że programy są naprawdę szybko datowane z powodu ciągle zmieniającej się natury modułów / ram,
Utrudnia zrozumienie kodu z powodu mnogości dostępnych frameworków i modułów oraz wszystkich ich osobliwości,
Uczynia kod mniej logicznym, chyba że przeczytasz całą dokumentację; tzn. potrafię odczytać niektóre wyliczenia i logikę warunkową oraz dowiedzieć się, co robi program, ale kiedy zobaczysz funkcje wymagające przekazywania dowolnych ciągów znaków i słowników, sprawy stają się trochę trudne do zrozumienia, chyba że jesteś już guru dany moduł; i:
Utrudnia i uciążliwe jest przełączanie między ramami. Przełączanie języków jest już wyzwaniem, ale jest możliwe do opanowania, jeśli dobrze rozumiesz ich podstawową funkcjonalność / filozofię. Przełączanie między ramami wydaje się być bardziej kwestią zapamiętywania na pamięć, co w pewien sposób wydaje się sprzyjać bardzo nieefektywności, którą te ramy mają wyeliminować.
Czy naprawdę musimy nakładać około 50 warstw abstrakcji na coś tak prostego jak zapytanie MySQL? Dlaczego nie użyć czegoś takiego jak interfejs PDO PHP, w którym obsługiwane są przygotowane instrukcje / testowanie danych wejściowych, ale powszechnie zrozumiałe zapytanie SQL jest nadal częścią funkcji?
Czy te abstrakcje są naprawdę przydatne? Czy funkcja nie jest nadęta, czyniąc je bezużytecznymi, czyniąc aplikacje trudniejszymi niż podobne aplikacje napisane bez użycia frameworka?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- Po pierwsze, dobry framework to jedna warstwa abstrakcji (może 2 lub 3 wewnętrznie), a po drugie „coś tak prostego jak zapytanie MySQL” w rzeczywistości wymaga kilkudziesięciu abstrakcji. Nawet po tym, jak zapytanie wykonane z interpretowanego języka dotarło do serwera bazy danych, nadal masz zapytania dotyczące baz danych nad silnikami, nad systemami plików, nad pamięcią fizyczną. Krótko mówiąc: tak, potrzebujemy abstrakcji, ponieważ powstrzymują nasze głowy przed wybuchem.
as a relatively inexperienced programmer
- im dłużej tworzysz oprogramowanie, tym bardziej docenisz spędzanie mniej czasu na odkrywaniu kierownicy i więcej czasu w domu, robiąc rzeczy, które kochasz.