Jadi, saya bekerja di .Net. Saya membuat proyek open source di .Net. Salah satu masalah terbesar saya dengan itu tidak wajib dengan. Net, tetapi dengan komunitas dan kerangka kerja di sekitarnya. Tampaknya di mana-mana skema dan string penamaan magis diperlakukan sebagai cara terbaik untuk melakukan semuanya. Pernyataan berani, tetapi lihatlah:
ASP.Net MVC:
Halo rute dunia:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Apa artinya ini adalah bahwa ASP.Net MVC entah bagaimana akan mencari HomeController
di kode Anda. Entah bagaimana, buat instance baru darinya, dan kemudian panggil fungsi tersebut Index
dengan id
parameter. Dan kemudian ada hal-hal lain seperti:
RenderView("Categories", categories);
...or..
ViewData["Foobar"]="meh";
Dan kemudian ada hal-hal serupa dengan XAML juga. DataContext
diperlakukan sebagai objek dan Anda harus berharap dan berdoa agar itu sesuai dengan jenis yang Anda inginkan. DependencyProperties harus menggunakan string ajaib dan konvensi penamaan sulap. Dan hal-hal seperti ini:
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
Meskipun lebih mengandalkan casting dan berbagai dukungan runtime ajaib.
Bagaimanapun, saya mengatakan semua itu untuk berakhir di sini: Mengapa ini bisa ditoleransi dengan baik di dunia .Net? Bukankah kita menggunakan bahasa yang diketik secara statis untuk hampir selalu tahu apa jenisnya? Mengapa refleksi dan tipe / metode / properti / nama apa pun (sebagai string) lebih disukai dibandingkan dengan generik dan delegasi atau bahkan pembuatan kode?
Apakah ada alasan bawaan yang saya lewatkan untuk mengapa sintaksis routing ASP.Net bergantung hampir secara eksklusif pada refleksi untuk benar-benar menyelesaikan cara menangani rute? Saya benci ketika saya mengubah nama metode atau properti dan tiba-tiba hal-hal rusak, tetapi tampaknya tidak ada referensi untuk metode atau properti itu dan tentu saja tidak ada kesalahan kompiler. Mengapa kenyamanan nyata dari string sihir dianggap "layak"?
Saya tahu ada juga alternatif yang diketik secara statis untuk beberapa hal, tetapi mereka biasanya mengambil kursi belakang dan sepertinya tidak pernah ada di tutorial atau materi pemula lainnya.
var
.