私は主にPHPとPythonのバックグラウンドを使いましたが、約3年前にC#に切り替えました。 C#のような強く型付けされた言語でのプライマリ開発への移行は、明らかに学習曲線でした。特に、C#の非常に厳格な継承と組み合わせると、過度に制限がかかることがあります。しかし、強く型付けされた言語は、あなたに多くのものを買う。
まず、おそらく最も重要なのはコンパイル時エラーです。 Pythonのような動的言語では、アプリケーションが実行され、実行時例外が発生するまで間違った型を使用していることはありません。強く型付けされた言語では、アプリケーションは構築されないため、一般的にはコード内にタイムバンプが残ることはありません。
第2に、強く型付けされた言語を高度に最適化することができます。それぞれのものが常に特定の型であることを保証することによって、コンパイラはメモリ割り当てと実際にコンパイルされたアセンブリコードを最適化できます。
第3に、強く型付けされた言語は良いプログラミング方法を奨励します。それは幾分制限されていると感じることができますが、強く型付けされた言語は、動的言語ではしばしば欠けている可能性のある構造体をコードに強制します。もちろん、動的言語で良いコードを書くことは不可能ではないとは言いませんが、開発者が細部まで時間や注意を払う気にならない場合は、動的言語ではるかに多くの被害が生じます強く型付けされたものよりも。
つまり、C#はすべて厳密に型指定されているわけではありません。すなわち、少し厄介なdynamic
というキーワードがあります。これは頻繁に酷使されており、MVCはほとんどの場合、ViewBag
のようなものでダイナミクスの使用を奨励しています。 dynamic
はその場所を持つことができますが、強く型付けされた言語で作業することの利点をすべて捨ててしまうので、できるだけ避けることをおすすめします。
ジェネリックの概念もあります。おそらくそれを実現することなくジェネリックを使用しているかもしれませんが、プログラミングが過度に制限されていると感じる場合は、おそらくそれらを調べて、実際にその力を活用する方法を学ぶべきでしょう。ダイナミックなタイプのようなものですが、コンパイル時にはまだ設定されているので、もたらす利点を失うことはありません。
あなたはUmbraco 7.4+を使用していると仮定すると、私は本当にModelsbuilderを使用することをお勧めすることができます。これはUmbracoコアの一部であり、強く型付けされたプロパティを提供します。したがって、Model.AttributeValue( "aliasName")を実行する代わりに、Model.AliasNameを実行できます。これはダイナミクスを使用する場合とよく似ていますが、ビジュアルスタジオの権利を設定する場合は、インテリセンスを使用することができます。 http:// 24days。in/umbraco-cms/2016/getting-started-with-modelsbuilder/ – Mark