Co sądzisz na ten temat?
Metaprogramowanie jest najczęściej kojarzone z językami niedynamicznymi, ponieważ trudniej jest osiągnąć określone zachowania (takie jak implementacja ORM) bez wielu nieproduktywnych i nie inteligentnych linii kodu.
Ale nawet w bardziej dynamicznych językach, takich jak PHP, generowanie kodu może naprawdę uratować życie i znacznie zwiększyć produktywność. W nowoczesnych ramach często występuje rusztowanie, które generuje większość wspólnego modelu, formy, testu i akcji dla określonego obiektu biznesowego, który deklarujesz. Jest to jeden z powodów, dla których frameworki takie jak symfony lub RoR odnoszą tak duży sukces, te narzędzia do generowania kodu bardzo szybko tworzą spójny kod i zwiększają produktywność programistów.
Na stronach internetowych większość interakcji dotyczy czterech głównych działań:
- Utwórz element
- Pobierz zestaw elementów (z możliwym filtrowaniem)
- Zaktualizuj element o nowe atrybuty
- Usuń zestaw elementów
Przynajmniej wszystko, co kręci się wokół tych 4 głównych działań, i IMHO POWINNO zostać osiągnięte przy użyciu narzędzi do generowania kodu, aby osiągnąć maksymalną wydajność.
W mojej firmie używamy symfony, a jego generator-administrator jest wyjątkowym narzędziem, które nawet generuje kod w czasie wykonywania (i buforuje go), co oznacza, że nie musimy nawet używać żadnego zadania ani zewnętrznego narzędzia do wygeneruj nowy kod, wystarczy wyczyścić naszą pamięć podręczną. MOCNO radzę używać tego rodzaju narzędzia do operacji CRUD.
Ale robienie tego, co zrobili wspaniali współpracownicy symfony, nie jest łatwym zadaniem. Sam zaimplementowałem niektóre zadania związane z generowaniem kodu i wykonanie czegoś, co jest naprawdę spójne, a szeroka implementacja obejmująca większość przypadków narożnych nie jest łatwa.
Czy to coś, co naprawdę zwiększy Twoją wydajność?
Uważam, że metaprogramowanie jest bardzo ważne w niższych poziomach pracy (frameworki, buforowanie, kompilatory itp.), Ale coś, do czego musimy podchodzić z najwyższą ostrożnością, jeśli robimy rzeczy na poziomie biznesowym.
Generowanie kodu jest bez wątpienia głównym czynnikiem zwiększającym produktywność. Wdrażanie własnych narzędzi do generowania kodu, nie tyle, chyba że sam tworzysz framework.
Jakie są dobre zasoby na ten temat, wśród książek, blogów, pokazów slajdów itp.?
Najlepszym zasobem do zrozumienia programowania jest zawsze dobry i dobrze skomentowany kod źródłowy. Powiedziałbym, że przyjrzenie się generatorom administracyjnym RubyOnRails i Symfony to dobry pomysł.