Joh*_*ard 6 theory int boolean
在大多数编程语言,1并且0可以用来代替True和False.但是,根据我的经验,整数似乎总是更容易使用.
以下是我的意思的一些例子:
if x is True: x = False
else: x = True
Run Code Online (Sandbox Code Playgroud)
VS
x = abs(x-1)
Run Code Online (Sandbox Code Playgroud)
__
if x is False: a = 0
else: a = 5
Run Code Online (Sandbox Code Playgroud)
VS
a = 5*x
Run Code Online (Sandbox Code Playgroud)
在什么情况下,布尔数比1或0更简单/更有效?
Gus*_*ors 11
您应该始终在高级语言中使用任何布尔内置类型作为布尔值.你的第二个例子是在一个x真实的情况下调试的恐怖,但是等于一个不同于1的值,并且是一个棘手的例子来找出任何新的代码开发人员 - 尤其是那些不熟悉你的编码风格的开发人员.怎么了?
x = !x;
Run Code Online (Sandbox Code Playgroud)
要么
a = x ? 5 : 0;
Run Code Online (Sandbox Code Playgroud)
一个整数可能比布尔值更有效的例子将在关系数据库中.一个位列通常不能被索引(我不一定能代表该语句中的所有数据库,因此"通常"),因此如果需要索引,像tinyint这样的东西会更有意义.
请记住,根据使用情况和使用它的系统,虽然布尔"占用更少的空间",因为它只是一个位(取决于实现),整数是硬件的本机字大小.(某些系统可能会使用一个完整的单词作为布尔值,实际上在金属上运行时基本上不会占用空间,只是为了使用简单的单词大小.)
在高级编程语言中,布尔和int之间的选择实际上更多的是代码可读性/可支持性而不是效率.如果值确实限于"true"或"false",那么布尔值是有意义的.(这个模型是否处于给定状态,例如"有效",或者不是?它永远不会是第三种选择.)另一方面,如果目前有两个选项,但有一天可能会有更多选项,它可能会很想使用布尔值(即使只是"现在"),但逻辑上使用int(或枚举)更有意义.
在代码中执行"聪明"的事情时,请记住这一点.当然,做一些快速的数学运算而不是使用布尔值可能看起来更时尚,更酷,但这对代码的可读性有什么影响?太聪明可能很危险.
为了获得可读性和良好的意图,选择布尔值为真/假是更好的选择.
你知道你只有两种可能的选择.对于整数,事情可能会有点棘手,特别是如果你使用0作为false而其他任何事情都是真的.
使用整数表示true/false时,你会变得太聪明,所以要小心.
使用布尔值将使您的意图在6个月后更加清晰,以及其他维护您代码的人.你必须使用的脑循环越少越好.
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |