动态VS强类型元素(Dynamic vs strongly typed elements)

2019-09-28 05:45发布

我是谁正在使用MVC3剃刀和Web开发人员一把umbraco创建Web应用程序。 我不是一直在这工作多久,已经从使用动态强类型元素遵循标准的搬了过来。

我从来没有真正被赋予了太多的原因,并在网上搜索它似乎很清楚,它更容易跟踪和调试设置类型的变量,但我感到困惑的功能使用它。

例如,使用一把umbraco内容的时候,我现在已经切换到1Umbraco.TypedContent1。 即时猜测它返回一个强类型的变量,但有没有给它的任何其他好处比调试等?

Answer 1:

我从最初的PHP和Python背景来了,但大约3年前切换到C#。 切换到初级发展如C#强类型语言是大家公认的学习曲线。 有时它可以感觉过于严格,尤其是在与C#的非常严格的继承相结合。 然而,强类型语言给你买了一些东西。

首先,可能也是最重要的是编译时错误。 随着像Python动态语言,没有,直到应用程序正在运行,您已经使用了错误的类型指示,你会得到一个运行时异常。 随着强类型语言,应用程序甚至不会建,所以你一般不会在你的代码timebombs结束。

其次,强类型语言可以被高度优化。 通过确保每个事物始终是一个特定类型的,编译器可以优化存储器分配和实际编译汇编代码。

第三,强类型语言鼓励良好的编程习惯。 虽然它可以感觉到有些限制,强类型语言迫使结构代码,可以经常缺乏的动态语言。 这并不是说这是不可能写在一个动态语言不错的代码,当然,但它确实意味着,当开发人员不小心把细节的时间或注意他们应该,更损害可使用动态语言实现比一个是强类型。

这就是说,C#是不是所有的强类型。 也就是说,有几分可憎dynamic关键字,这是滥用远的时候,和MVC几乎鼓励使用的东西像动态ViewBag 。 虽然dynamic都可以有它的地方,我会建议避免它尽可能多的,因为你基本上丢掉一个强类型语言工作的所有好处。

还有仿制药的概念。 你可能使用仿制药,甚至没有意识到这一点,但如果你在你的编程感觉过于限制,你应该看看他们越来越了解如何真正把他们带来的强大功能。 这是一个有点像具有动态类型,但它仍然设置在编译的时候,这样你就不会丢失任何的带来的好处。



Answer 2:

此外,克里斯提到的东西,还有一个性能优势,如一把umbraco动态API是慢于强类型之一。



Answer 3:

此外,动态类型将一把umbraco V8被删除: http://issues.umbraco.org/issue/U4-8626



文章来源: Dynamic vs strongly typed elements