Quindi, lavoro in .Net. Realizzo progetti open source in .Net. Uno dei miei maggiori problemi con esso non è necessario con .Net, ma con la comunità e le strutture circostanti. Sembra ovunque che gli schemi e le stringhe di nomi magici siano trattati come il modo migliore per fare tutto. Dichiarazione audace, ma guarda:
ASP.Net MVC:
Ciao itinerario mondiale:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Ciò significa che ASP.Net MVC cercherà in qualche modo HomeController
nel tuo codice. In qualche modo crearne una nuova e quindi chiamare Index
apparentemente la funzione con un id
parametro di qualche tipo. E poi ci sono altre cose come:
RenderView("Categories", categories);
...or..
ViewData["Foobar"]="meh";
E poi ci sono cose simili anche con XAML. DataContext
viene trattato come un oggetto e devi sperare e pregare che si risolva nel tipo che desideri. DependencyProperties deve utilizzare stringhe magiche e convenzioni di denominazione magica. E cose come questa:
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
Anche se si basa maggiormente sul casting e su vari supporti runtime magici.
Ad ogni modo, dico tutto ciò per finire qui: perché questo è così ben tollerato nel mondo .Net? Non stiamo usando linguaggi tipicamente statici per sapere quasi sempre che tipo di cose sono? Perché la riflessione e il tipo / metodo / proprietà / qualunque nome (come stringhe) preferisce così tanto rispetto a generici e delegati o persino alla generazione di codice?
Ci sono motivi ereditari che mi mancano per cui la sintassi del routing di ASP.Net si basa quasi esclusivamente sulla riflessione per risolvere effettivamente come gestire un percorso? Odio quando cambio il nome di un metodo o di una proprietà e improvvisamente le cose si rompono, ma non sembrano esserci riferimenti a quel metodo o proprietà e non ci sono ovviamente errori del compilatore. Perché l'apparente convenienza delle corde magiche era considerata "degna"?
So che ci sono anche alternative tipicamente statiche ad alcune cose, ma di solito prendono un sedile posteriore e sembrano non essere mai in tutorial o altro materiale per principianti.
var
.