如何解决在动态语言中进行隐式转换的优缺点?
| 我并不真正使用动态/脚本语言。因此,我不知道缺点,优点等。在与某人交谈时,他提到python可以将对象隐式转换为您想要的对象,但甚至不会尝试。 人们似乎喜欢python。那么动态语言中的隐式转换不好吗?不好吗(他想要)动态语言中隐式转换的优缺点是什么?解决方法
优点:
在大多数情况下,“按照您的意思”。
它使您可以半自由地将字符串视为数字,反之亦然。我在Perl中用了一点点来对数字进行字符串操作,否则将涉及许多非显而易见的数学运算。
缺点:
当它确实失败时,它通常会以神秘的方式失败。例如,前导零可能会在知道八进制数的语言中引起奇怪的问题。 \ '00 \'到\ '07 \'可以正常工作,但是\ '08 \'和\ '09 \'会损坏。
有时候,您确实很想知道类型。示例:PHP及其在出现故障时返回“ 0”的习惯。如果
strpos($a,$b)
返回0,则在$ a的开头找到$ b; false
表示完全找不到。但是隐式转换使0和false
比较相等。 (幸运的是,PHP具有===
运算符来减轻这种情况。)
转换需要花费CPU周期。数量不多,但是如果您不希望隐式转换魔术,为什么要为此付出代价呢?
, 我喜欢在用例方面看到这一点;所以我的答案是,这实际上取决于您想做什么。
如果您正在编写Web应用程序,则这将有助于您编写更简洁的代码(没有大量函数和方法调用的代码,仅用于转换类型),而向下的方向是可能会产生一些神秘的错误,并且在这种情况下(Web应用程序)编写更清晰,更易理解的代码有助于降低开发和更改的成本,因此可以忽略修复这些潜在错误的成本。
但是,例如,如果您正在为安全性至关重要的硬件(例如,航天飞机)编写固件,则任何潜在的错误都可能会花费数百万美元,数年甚至数年的时间和精力,因此在这种情况下,忍受编写一些转换函数和方法以保护项目的整个目的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。