Sto programmando da poco meno di un anno e ho una certa esperienza nella scrittura di applicazioni di sistemi, app Web e script per aziende / organizzazioni. Tuttavia, una cosa che non ho mai veramente fatto è lavorare con un framework come Django, Rails o Zend.
Osservando il framework Django, sono un po 'frustrato da quanto viene sottratto ai framework. Comprendo gli obiettivi principali di DRY e il codice minimo, ma alcuni di questo eccessivo affidamento su moduli diversi e pesante astrazione delle funzioni core sembra:
Rende i programmi molto datati a causa della natura mutevole di moduli / framework,
Rende il codice difficile da capire a causa della pletora di framework e moduli disponibili e di tutte le loro idiosincrasie,
Rende il codice meno logico se non hai letto tutta la documentazione; ad esempio, posso leggere alcune comprensioni dell'elenco e la logica condizionale e capire cosa sta facendo un programma, ma quando vedi funzioni che richiedono il passaggio in stringhe e dizionari arbitrari, le cose diventano un po 'difficili da capire a meno che tu non sia già un guru in un dato modulo; e:
Rende difficile e noioso passare da un framework all'altro. Passare da una lingua all'altra è già una sfida, ma è gestibile se si ha una comprensione abbastanza forte della loro funzionalità / filosofia di base. Il passaggio da un framework all'altro sembra essere più una questione di memorizzazione automatica, che in qualche modo sembra incoraggiare l'inefficienza che questi framework sono stati progettati per eliminare.
Dobbiamo davvero mettere come 50 strati di astrazione su qualcosa di semplice come una query MySQL? Perché non usare qualcosa come l'interfaccia PDO di PHP, in cui vengono gestite istruzioni preparate / test di input ma la query SQL universalmente comprensibile fa ancora parte della funzione?
Queste astrazioni sono davvero utili? La caratteristica gonfia non li rende inutili, rendendo le applicazioni più difficili rispetto ad applicazioni simili scritte senza utilizzare un framework?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- In primo luogo, un buon framework è uno strato di astrazione (forse 2 o 3 internamente), e in secondo luogo "qualcosa di semplice come una query MySQL" in realtà comporta una buona dozzina di astrazioni. Anche dopo che la query eseguita dal linguaggio interpretato è arrivata al server di database, sono ancora presenti query sui database sui motori sui file system sulla memoria fisica. Quindi in breve: sì, abbiamo bisogno di astrazioni, perché impediscono alle nostre teste di esplodere.
as a relatively inexperienced programmer
- più a lungo produci software, più apprezzerai passare meno tempo a reinventare la ruota e più tempo a casa a fare le cose che ami.