前一篇文章 科里定律的变量 ( 一 ) - 缘起,透视严重的变量稀缺问题 极大的震撼了我,我对之前团队中的代码为啥越来越难以阅读有了一个新的认知,本来以为翻译完了原文就可以了,没想到下面的评论更精彩
在国外,一个有趣的论点总能得到一大批的支持者和拥护者,而对于那些不支持的人,它们会笑而不语,这就是国外社区好的一面,而对于国内,大多数都是钢精,不乏那些出名的大佬,总想压别人一头
因此,这篇帖子,就来翻译下原文中的所有有价值的评论
关于 Outliving the Great Variable Shortage
原帖为 Outliving the Great Variable Shortage ,不过已经无法访问了,你可以访问 Google 快照
精彩的评论
-
我完全赞同你的想法,在 Perl 中检查用户实际输入是否为
'0'
,0
和''
都被评估为false
会令人变得非常沮丧PHP 就很好的解决了这个问题,它可以通过 恒等于 (
===
) 来检查$value === false
,只有在$value
明确的被设置为false
时才返回true
-
C 语言伴随着我的成长。在 C 语言中,将任何东西与 「 true 」也就是
1
进行比较被认为是非常差的形式,因为它有那么多的 「 true 」 值,但只有少的可怜的 「 false 」 值。 我甚至会定义一个宏 ( 如果你原谅我将进入古老的回忆中 )#define IS_TRUE(x) (!(!(x))
C++ 语言中,则定义了一个可以与
true
或false
进行比较的 布尔类型 (bool
) ,但一朝被蛇咬,十年怕井绳,我已经已经训练过不能比较true
了它困扰我吗?是的,但是我忘记了它让我感到困扰,因为有一段时间没有弄乱它了
顺便说一句,Python 给了我们个非常广泛的
False
值,我总是有点不习惯使用它我尽量小心谨慎
这是一个非常有趣的游戏
毕竟,创建一个具有两个可能值的布尔类型 ( 真的 ) 有多难 ? 你肯定不会认为需要多年的语言演变才能达到这一点
-
编程语言通常缺少的一件事是简洁,明确的泛型系统
在 haskell 中,它被称为类型参数,允许通过将类型组合在一起来构造新类型
-
嗯,Python 将
{}
和[]
认为是False
值是很方便的,当但对我来说并不令人满意,它缺乏美味的外观,我们把它放到一边,因为这不是我的主要观点我的主要观点是,魔术值不应该改变变量的含义,这是我一直看到的,咆哮的事情,在此我感到非常自信
如果存在变量,则每个变量应该是事实,事实的语义应该是稳定的并且反映在名称中,我认为
bothNameOrDateOfBirthForNonResidents
会是一个特别糟糕的变量名称,并且是一种草率思维的迹象针对
{}
和[]
是False
的情况,我一直也很困惑,每次写的时候都会犹豫,所以我索性使用len({}) == 0
和len({}) == 0
来完成判断 -
将 空数组,空元组和 空字符串计算为
False
的情况是我最近才喜欢上的,大多数情况下,函数是否传递空数组,空元组或null/none/nil
值是无关紧要在
PHP
这样可怕的语言中尤其如此,它们具有可以返回多种类型结果的函数,例如当NULL
传递给函数时为NULL
,当它无法处理输入时为False
,如果函数成功则为int
结束语
其实还有很多的评论没有翻译,我挑选处了这几个比较符合作者意思的评论。
变量的时候是一个非常大的问题,可能刚开始学编程语言的时候懵懵懂懂,反而用了很多变量,而后面越来越厉害时,倒是变量的重复利用更多了些
不管怎样? 出于各种目的,我觉得吧,有条件,的确应该更多的使用更多的变量