Pesannya akan tentang fundamental dalam pemrograman - objek global. Saya akan mengatakan ini adalah masalah ilmiah yang ingin saya diskusikan. Jadi, agar tidak "menembak kaki mereka sendiri", programmer tidak memprogram di bidang global. Ok, semuanya jelas dan sangat sederhana, pikirkan ini? Tidak dalam hal ini. Seperti yang Anda ketahui, tindakan apa pun menyebabkan serangkaian peristiwa dan konsekuensi logis.
Pertama, mengapa membuat dogma yang tidak bisa Anda buat? Sebagai gantinya, mari kita buat fungsi stop_globals (), misalnya, untuk bahasa PHP. Kerangka kerja, pada awal pelaksanaan kodenya, dapat menjalankannya, dan upaya lebih lanjut untuk bekerja dengan lingkup global akan menyebabkan kesalahan PHP. Apakah solusi ini baik?
Itu jauh dari semua yang bisa dibahas.
Alasan utama untuk keberadaan dogma di atas adalah bahwa ada kemungkinan secara tidak sengaja menimpa nilai-nilai variabel global, dan ini, pada gilirannya, dapat menyebabkan kesalahan pelokalan yang sulit dalam program. Dan jika Anda dapat menggunakan variabel global untuk membaca, tetapi tidak untuk menulis?
Mari kita memperhatikan alam semesta di sekitar kita. Ada objek global di dalamnya: ruang, waktu, materi, energi, mungkin materi gelap dan energi. Demikian pula, berdasarkan pengalaman saya dalam pemrograman web, ada sejumlah objek yang merepotkan untuk menggunakan Injeksi Ketergantungan, dan objek tersebut pada dasarnya bersifat global. Ini adalah objek komunikasi basis data, objek USER, dan lainnya. Untuk bekerja dengan objek-objek seperti itu, dalam PHP, orang dapat memperkenalkan fungsi super ('sky', 'user'), yang akan membuat $ sky dan $ variabel pengguna menjadi super, seperti $ _GET atau $ _POST.
Solusi semacam itu tidak lebih buruk daripada dogma tradisional βtidak mungkin diprogram dalam bidang globalβ, karena menulis data ke variabel-variabel tersebut akan segera terdeteksi dan PHP akan memberikan kesalahan, dan keuntungannya adalah sebagai berikut:
- Objek-objek global yang konseptual tetap global, programnya terlihat lebih sederhana
- Pendekatan ini lebih produktif. Jauh lebih cepat untuk mengakses variabel secara langsung daripada melewatkan nilainya melalui tumpukan sebelumnya. Ini berarti tumpukan prosesor, yang digunakan oleh kompiler untuk melewatkan parameter fungsi. Dengan satu atau lain cara, penerapan pola DI memiliki overhead pada sumber daya yang digunakan.
Seperti yang Anda tahu, proyek PHP memposisikan dirinya sebagai gajah, mengingat fakta bahwa ia menyediakan banyak pendekatan untuk pemrograman, sejumlah besar fungsi dan kelas, banyak kode eksperimental yang dievaluasi dari waktu ke waktu dan dapat dikembangkan atau dihapus di masa depan. Dalam hal ini, saya meminta orang-orang yang berpikiran bebas untuk mengungkapkan pendapat mereka yang beralasan tentang pertanyaan-pertanyaan:
- Apakah Anda mendukung pengenalan fungsi eksperimental super () dan stop_globals ()?
- Apa pendapat Anda tentang ide di atas secara keseluruhan?
Tidak ada perang suci, terima kasih.
Sebagai kesimpulan, saya ingin mencatat pengamatan saya tentang laravel dan bahaya pola pemrograman. Seperti yang Anda tahu, laravel disebut
"gudang antipatterns .
" Saya percaya bahwa fakta ini, dan juga pemikiran bebas dari penulisnya, memungkinkan proyek ini menjadi sepopuler sekarang. Pola-pola itu baik untuk dikomunikasikan oleh pemrogram, untuk menunjuk ke beberapa entitas pemrograman. Tetapi mereka membahayakan, membingungkan programmer, tidak membiarkan program menjadi efektif. Mari kita buat pemrograman lebih mudah.