Saya berbicara hari ini dengan seorang rekan kerja saya tentang kerangka kerja web Python dan kesan kami tentang mereka. Saya mengatakan kepadanya bahwa saya pikir Flask memiliki permintaan global berbau tidak enak dan merupakan anti-pola.
The docs katakan tentang konteks permintaan:
Sebaliknya, selama penanganan permintaan, ada beberapa aturan lain:
- saat permintaan aktif, konteks objek lokal (flask.request dan lainnya) menunjuk ke permintaan saat ini.
- kode apa pun dapat memperoleh benda-benda ini setiap saat.
Saya pikir saya mengerti ide di balik keputusan desain ini - untuk membuat aplikasi lebih sederhana. Ini hanya kompromi, seperti dalam kasus Thread Locals :
Ya itu biasanya bukan ide yang cemerlang untuk menggunakan thread lokal. Mereka menyebabkan masalah untuk server yang tidak didasarkan pada konsep utas dan membuat aplikasi besar lebih sulit untuk dipelihara. Namun Flask tidak dirancang untuk aplikasi besar atau server asinkron. Flask ingin membuatnya cepat dan mudah untuk menulis aplikasi web tradisional.
Apakah menambal objek global dengan informasi permintaan saat ini merupakan anti-pola?
Saya percaya itu, karena dalam pandangan penganalisa kode statis negara global, meskipun tidak. Dan saya sebagai programmer tidak akan mengerti cara kerjanya tanpa membaca dokumen dengan hati-hati. Dan ini memiliki konsekuensi pada tes .
Bukankah itu praktik yang baik untuk menyampaikan permintaan sebagai argumen untuk dilihat? Saya pikir ini lebih mudah dibaca, eksplisit dan lebih mudah untuk di-debug. Dan menghindari negara global.