动态与强类型元素
我主要来自PHP和Python背景,但在3年前转向C#。切换到像C#这样的强类型语言的初级开发当然是一种学习曲线。有时它可能会感觉过于严格,尤其是与C#的非常严格的继承结合在一起时。然而,强类型语言会为您提供很多东西。
首先,也许最重要的是编译时错误。对于像Python这样的动态语言,没有迹象表明在应用程序运行之前您使用了错误的类型,并且您得到了运行时异常。使用强类型语言,应用程序甚至不会构建,因此您通常不会在代码中使用timebombs。其次,强类型语言可以高度优化。通过确保每个东西总是一个特定的类型,编译器可以优化内存分配和实际编译的汇编代码。
第三,强类型语言鼓励良好的编程实践。虽然它可能会受到某种程度的限制,但强类型语言会强制使用动态语言通常缺乏的代码结构。当然,这并不是说用动态语言编写好的代码是不可能的,但是这确实意味着当开发人员不在意花时间或注意细节时,应该用动态语言完成更多的破坏比强类型的强。
也就是说,C#不是全部强类型的。也就是说,有一些令人讨厌的dynamic
关键字,这被滥用得非常频繁,而且MVC几乎鼓励使用类似ViewBag
之类的动态。虽然dynamic
可以有其位置,但我建议尽可能避免它,因为您基本上抛弃了使用强类型语言工作的所有好处。
还有泛型的概念。你可能在没有意识到的情况下使用泛型,但是如果你的编程感觉过度受限,你应该更多地研究它们并学习如何真正利用它们带来的能力。这有点像是动态类型,但它仍然是在编译时设置的,所以你不会失去任何带来的好处。
非常明确的答案,非常感谢:) –
除了Chris提到的东西之外,还有一个性能优势,因为Umbraco中的动态API比强类型的API要慢。
很高兴知道:) –
假设你正在使用一把umbraco 7.4+,我真的可以推荐使用Modelsbuilder。它是Umbraco核心的一部分,并为您提供强有力的键入属性。因此,而不是做Model.GetPropertyValue(“aliasName”),你可以做Model.AliasName。这看起来很像使用动态,但是当你配置visual studio的权利,你可以使用intellisense。 HTTP://24天。in/umbraco-cms/2016/Getting-started-with-modelsbuilder/ – Mark