Saya telah memprogram selama kurang dari setahun dan memiliki beberapa pengalaman menulis aplikasi sistem, aplikasi web, dan skrip untuk bisnis / organisasi. Namun, satu hal yang belum pernah saya lakukan adalah bekerja dengan kerangka kerja seperti Django, Rails atau Zend.
Melihat kerangka Django, saya sedikit frustrasi dengan berapa banyak yang disarikan dalam kerangka kerja. Saya memahami tujuan inti KERING dan kode minimal, tetapi beberapa ketergantungan berlebihan pada modul yang berbeda dan abstraksi berat fungsi inti terasa seperti itu:
Membuat program mendapatkan tanggal sangat cepat karena sifat modul / kerangka kerja yang selalu berubah,
Membuat kode sulit dimengerti karena kebanyakan kerangka kerja dan modul yang tersedia dan semua keistimewaan mereka,
Membuat kode menjadi kurang logis kecuali Anda sudah membaca semua dokumentasi; yaitu, saya dapat membaca beberapa daftar pemahaman dan logika kondisional dan mencari tahu apa yang sedang dilakukan suatu program, tetapi ketika Anda melihat fungsi-fungsi yang memerlukan melewati string dan kamus yang berubah-ubah, segala sesuatunya menjadi sedikit sulit untuk dipahami kecuali Anda sudah menjadi guru di modul yang diberikan; dan:
Membuatnya sulit dan membosankan untuk beralih antar kerangka kerja. Beralih antar bahasa sudah merupakan tantangan, tetapi dapat dikelola jika Anda memiliki pemahaman yang cukup kuat tentang fungsionalitas / filosofi inti mereka. Beralih di antara kerangka kerja tampaknya lebih merupakan masalah menghafal, yang dalam beberapa hal tampaknya mendorong inefisiensi kerangka kerja ini dirancang untuk dihilangkan.
Apakah kita benar-benar harus meletakkan seperti 50 lapisan abstraksi di atas sesuatu yang sederhana seperti permintaan MySQL? Mengapa tidak menggunakan sesuatu seperti antarmuka PDO PHP, di mana pernyataan disiapkan / pengujian input ditangani tetapi query SQL yang dapat dimengerti secara universal masih merupakan bagian dari fungsi?
Apakah abstraksi itu benar-benar bermanfaat? Bukankah fitur mengasapi menjadikannya tidak berguna, membuat aplikasi lebih sulit dibandingkan dengan aplikasi serupa yang ditulis tanpa menggunakan kerangka kerja?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- Pertama, kerangka kerja yang baik adalah satu lapisan abstraksi (mungkin 2 atau 3 secara internal), dan yang kedua "sesuatu yang sederhana seperti permintaan MySQL" sebenarnya melibatkan banyak sekali abstraksi. Bahkan setelah kueri yang Anda jalankan dari bahasa yang ditafsirkan telah membuatnya ke server basis data, Anda masih memiliki pertanyaan tentang basis data di atas mesin di atas sistem file di atas penyimpanan fisik. Jadi singkatnya: ya, kita perlu abstraksi, karena mereka menjaga kepala kita dari meledak.
as a relatively inexperienced programmer
- semakin lama Anda membuat perangkat lunak, semakin Anda akan menghargai menghabiskan lebih sedikit waktu menciptakan kembali roda dan lebih banyak waktu di rumah melakukan hal-hal yang Anda sukai.