Więc pracuję w .Net. Robię projekty open source w .Net. Jednym z moich największych problemów nie jest konieczność korzystania z .Net, ale ze społecznością i otaczającymi go ramami. Wszędzie wydaje się, że magiczne schematy i ciągi nazewnictwa są traktowane jako najlepszy sposób na zrobienie wszystkiego. Odważne stwierdzenie, ale spójrz na to:
ASP.Net MVC:
Witaj, światowa trasa:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Oznacza to, że ASP.Net MVC w jakiś sposób wyszuka HomeController
Twój kod. W jakiś sposób stwórz jego nową instancję, a następnie wywołaj funkcję Index
najwyraźniej z jakimś id
parametrem. Są też inne rzeczy:
RenderView("Categories", categories);
...or..
ViewData["Foobar"]="meh";
Są też podobne rzeczy z XAML. DataContext
jest traktowany jako przedmiot i musisz mieć nadzieję i modlić się, aby to rozwiązał do pożądanego rodzaju. DependencyProperties musi używać magicznych ciągów i konwencji nazewnictwa magicznego. I takie rzeczy:
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
Chociaż bardziej opiera się na rzucaniu i różnych magicznych mechanizmach uruchomieniowych.
W każdym razie mówię to wszystko, aby tu skończyć: Dlaczego jest to tak dobrze tolerowane w świecie .Net? Czy nie używamy języków o typie statycznym, aby prawie zawsze wiedzieć, jakiego rodzaju rzeczy? Dlaczego odbicie i typ / metoda / właściwość / jakiekolwiek nazwy (jako ciągi znaków) są tak bardzo preferowane w porównaniu do nazw ogólnych i delegatów, a nawet generowania kodu?
Czy istnieją odziedziczone powody, dla których brakuje mi powodu, dla którego składnia routingu ASP.Net opiera się prawie wyłącznie na odbiciu, aby faktycznie rozwiązać sposób obsługi trasy? Nienawidzę, kiedy zmieniam nazwę metody lub właściwości i nagle coś się psuje, ale wydaje się, że nie ma żadnych odniesień do tej metody lub właściwości i oczywiście nie ma błędów kompilatora. Dlaczego widoczną wygodę magicznych ciągów uważano za „tego wartą”?
Wiem, że istnieją również statycznie typowane alternatywy dla niektórych rzeczy, ale zwykle zajmują miejsce na drugim końcu i wydaje się, że nigdy nie są w tutorialach ani innych materiałach dla początkujących.
var
.