我是一名 Web 开发人员,目前正在使用 mvc3 razor 和Umbraco https://en.wikipedia.org/wiki/Umbraco创建网络应用程序。我从事这项工作的时间不长,已经从使用动态元素转向使用强类型元素来遵循标准。
我从来没有真正得到过太多的理由,并且在线搜索似乎很清楚,跟踪和调试设置类型变量要容易得多,但我对在函数中使用它感到困惑。
例如,当使用 Umbraco Content 时,我现在已切换到 1Umbraco.TypedContent1。我猜测它返回一个强类型变量,但是除了调试之外它还有其他好处吗?
我的背景主要是 PHP 和 Python,但大约 3 年前转向 C#。无可否认,转向使用 C# 等强类型语言进行初级开发是一个学习曲线。有时它会让人感觉过于严格,尤其是与 C# 非常严格的继承相结合时。然而,强类型语言给你带来了很多东西。
首先,可能也是最重要的是编译时错误。对于像 Python 这样的动态语言,在应用程序运行并且出现运行时异常之前,没有任何迹象表明您使用了错误的类型。使用强类型语言,应用程序甚至无法构建,因此您的代码中通常不会出现定时炸弹。
其次,强类型语言可以高度优化。通过确保每个事物始终是特定类型,编译器可以优化内存分配和实际编译的汇编代码。
第三,强类型语言鼓励良好的编程实践。虽然强类型语言可能会让人感觉有些限制,但它会强制您的代码采用动态语言通常缺乏的结构。当然,这并不是说不可能用动态语言编写出好的代码,但这确实意味着当开发人员不花时间或不注意细节时,用动态语言可能会造成更大的损害比强类型的。
也就是说,C# 并不都是强类型的。也就是说,有一些令人讨厌的dynamic
关键字,这个词经常被滥用,MVC 几乎鼓励使用动态,比如ViewBag
. While dynamic
可以占有一席之地,我建议尽可能避免它,因为您基本上放弃了使用强类型语言工作的所有好处。
还有泛型的概念。您可能在没有意识到的情况下使用泛型,但如果您感觉自己的编程受到过度限制,您可能应该更多地研究它们并学习如何真正利用它们带来的强大功能。这有点像动态类型,但它仍然在编译时设置,因此您不会失去任何带来的好处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)