Quindi, lavoro in .Net. Faccio progetti open source in .Net. Uno dei miei maggiori problemi con esso non è necessariyl con .Net, ma con la comunità e le strutture intorno ad esso. Sembra ovunque che schemi e stringhe di nomi magici vengano trattati come il modo migliore per fare tutto. Grassetto, ma guardalo:
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 codice. In qualche modo ne crea una nuova istanza, quindi chiama la funzione Index
apparentemente con un parametro id
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
è trattato come un oggetto e devi sperare e pregare che si risolva nel tipo desiderato. DependencyProperties deve utilizzare stringhe magiche e convenzioni di denominazione magica. E cose del genere:
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
Anche se si basa maggiormente sul cast e su vari supporti magici di runtime.
Ad ogni modo, dico tutto questo per finire qui: perché è così ben tollerato nel mondo .Net? Non stiamo usando linguaggi tipizzati staticamente per sapere quasi sempre qual è il tipo di cose? Perché la riflessione e il tipo / metodo / proprietà / quali nomi (come stringhe) preferiscono così tanto rispetto ai generici e ai delegati o persino alla generazione del codice?
Ci sono motivi ereditari che mi mancano perché la sintassi di 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 proprietà e improvvisamente le cose si rompono, ma non sembrano esserci riferimenti a quel metodo o proprietà e ovviamente non ci sono errori del compilatore. Perché l'apparente comodità delle stringhe magiche era considerata "ne vale la pena"?
So che ci sono anche alternative tipicamente statiche ad alcune cose, ma di solito prendono un backseat e sembrano non essere mai in tutorial o altro materiale per principianti.