Entonces, trabajo en .Net. Realizo proyectos de código abierto en .Net. Uno de mis mayores problemas no es necesariamente con .Net, sino con la comunidad y los marcos que lo rodean. Parece en todas partes que los esquemas y cadenas de nombres mágicos se tratan como la mejor manera de hacer todo. Declaración en negrita, pero míralo:
ASP.Net MVC:
Hola ruta mundial:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Lo que esto significa es que ASP.Net MVC buscará de alguna manera HomeController
en su código. De alguna manera, cree una nueva instancia y luego llame a la función Index
aparentemente con un id
parámetro de algún tipo. Y luego hay otras cosas como:
RenderView("Categories", categories);
...or..
ViewData["Foobar"]="meh";
Y luego hay cosas similares con XAML también. DataContext
se trata como un objeto y tienes que esperar y rezar para que se resuelva del tipo que deseas. DependencyProperties debe usar cadenas mágicas y convenciones de nombres mágicos. Y cosas como esta:
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
Aunque se basa más en el lanzamiento y en varios soportes mágicos de tiempo de ejecución.
De todos modos, digo todo eso para terminar aquí: ¿Por qué esto es tan bien tolerado en el mundo .Net? ¿No estamos usando lenguajes estáticamente escritos para saber casi siempre qué tipo de cosas son? ¿Por qué se prefiere tanto la reflexión y el tipo / método / propiedad / cualquier nombre (como cadenas) en comparación con los genéricos y los delegados o incluso la generación de código?
¿Hay razones heredadas que me faltan por qué la sintaxis de enrutamiento de ASP.Net se basa casi exclusivamente en la reflexión para resolver realmente cómo manejar una ruta? Odio cuando cambio el nombre de un método o propiedad y de repente las cosas se rompen, pero no parece haber ninguna referencia a ese método o propiedad y, por supuesto, no hay errores de compilación. ¿Por qué la aparente conveniencia de las cuerdas mágicas se considera "vale la pena"?
Sé que también hay alternativas comúnmente escritas estáticamente para algunas cosas, pero por lo general pasan a segundo plano y parecen nunca estar en tutoriales u otro material para principiantes.
var
.