だから、私は.Netで働いています。.Netでオープンソースプロジェクトを作成します。それに関する私の最大の問題の1つは、.Netではなく、その周辺のコミュニティとフレームワークに必要なことです。魔法のネーミングスキームと文字列は、すべてを行うための最良の方法として扱われているようです。大胆な発言ですが、見てください:
ASP.Net MVC:
Hello world route:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
これが意味することは、ASP.Net MVCが何らかの形でHomeController
コードを検索するということです。どういうわけか、それの新しいインスタンスを作成してから、Index
明らかid
に何らかのパラメーターで関数を呼び出します。そして、次のようなものがあります:
RenderView("Categories", categories);
...or..
ViewData["Foobar"]="meh";
そして、XAMLにも同様のことがあります。DataContext
オブジェクトとして扱われ、希望するタイプに解決されることを期待し、祈らなければなりません。DependencyPropertiesは、マジックストリングとマジックネーミング規則を使用する必要があります。そして、このようなもの:
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
ただし、キャストとさまざまな魔法のランタイムサポートに依存しています。
とにかく、私はすべてをここで終わらせると言います:なぜこれは.Netの世界でそれほどよく許容されるのですか?静的に型付けされた言語を使用して、ほとんどの場合、物事の種類を把握していませんか?ジェネリックスやデリゲート、さらにはコード生成に比べて、リフレクションと型/メソッド/プロパティ/何でも(文字列として)名前が好まれるのはなぜですか?
ASP.Netのルーティング構文が実際にルートの処理方法を解決するためにほとんど排他的にリフレクションに依存する理由で私が逃している理由を継承していますか?メソッドまたはプロパティの名前を変更すると突然壊れるのは嫌ですが、そのメソッドまたはプロパティへの参照は存在しないようであり、もちろんコンパイラエラーはありません。なぜマジックストリングの見た目の便利さが「価値がある」と考えられていたのですか?
静的に型付けされたいくつかの代替手段も一般にあることは知っていますが、通常は後部座席を取り、チュートリアルやその他の初心者向け資料には含まれていないようです。
var
。