C# “使用”的缺点;变量!==假;
在阅读招聘广告时,一个要求(叹气)是应聘者或多或少应该讨厌使用C# “使用”的缺点;变量!==假;,c#,php,coding-style,conditional,C#,Php,Coding Style,Conditional,在阅读招聘广告时,一个要求(叹气)是应聘者或多或少应该讨厌使用变量!==错误。一、 但是,我看不出原因,因为我觉得它很方便 假设一个函数(get\u user(int user\u id))返回FALSE,如果它没有成功(找到请求的用户),我可以简单地使用: user = get_user(823); if(user !== FALSE) { // User found } else { // No user found } 当然,如果(!user),我可以简单地使用
变量!==错误
。一、 但是,我看不出原因,因为我觉得它很方便
假设一个函数(get\u user(int user\u id)
)返回FALSE,如果它没有成功(找到请求的用户),我可以简单地使用:
user = get_user(823);
if(user !== FALSE) {
// User found
} else {
// No user found
}
当然,如果(!user),我可以简单地使用,但是,我并不总是觉得它合适,尤其是当我需要满足一些条件时
这样写代码有什么缺点吗
澄清:这是一个更全球性的问题,因为广告反对PHP使用!==FALSE
和C#使用!=FALSE
您可以在发生意外时执行此操作
if($variable = FALSE)
这会改变你在事故中可以做的$variable
的值
if($variable = FALSE)
这将改变$variable
的值,如果您在Java中有
Boolean flag1 = new Boolean(true);
Boolean flag2 = new Boolean(false);
if (flag1 == Boolean.TRUE || flag1 == Boolean.FALSE) // is false.
if (flag2 == Boolean.TRUE || flag2 == Boolean.FALSE) // is false.
if (flag1 != Boolean.FALSE && flag2 != Boolean.FALSE) // is true
使用==假或!=FALSE可能无法按您认为的方式工作,尽管它更为详细,但它也容易出错。如果您在Java中使用了FALSE
Boolean flag1 = new Boolean(true);
Boolean flag2 = new Boolean(false);
if (flag1 == Boolean.TRUE || flag1 == Boolean.FALSE) // is false.
if (flag2 == Boolean.TRUE || flag2 == Boolean.FALSE) // is false.
if (flag1 != Boolean.FALSE && flag2 != Boolean.FALSE) // is true
使用==假或!=FALSE可能无法按您认为的方式工作,虽然它更为详细,但也容易出错。您说get\u user在失败时返回FALSE,这是最大的问题。如果函数调用没有成功,它应该抛出一个异常,而不是返回一个类型不安全的答案(“false”,与用户相反)。你说get\u User在调用没有成功时返回false,这是最主要的问题。如果函数调用没有成功,它应该抛出一个异常,而不是返回一个类型不安全的答案(“false”,与用户相反)。从开发人员的角度来看,最好设计不返回不同的值(计算结果为false)的方法。例如,函数不应返回多个可能值0或NULL或FALSE或“”(空字符串)或空数组()
另一方面,如果我们谈论PHP,最好知道一些函数返回零或false,例如strpos。如果(!strpos(…)
表示该字符串不包含在另一个字符串中,则不应假定该字符串位于零位置,其计算结果为FALSE
。有时,函数可能会在失败时返回FALSE,或在成功时返回空数组(这不会产生计算结果为TRUE
)
因此,请指出,在某些情况下,这是必要的或有用的,但通常返回多个计算结果为FALSE的值是不好的做法,因此需要在comparisment运算符中包含该类型。从开发人员的角度来看,最好设计不返回计算结果为FALSE的不同值的方法。例如,函数不应返回多个可能值0或NULL或FALSE或“”(空字符串)或空数组()
另一方面,如果我们谈论PHP,最好知道一些函数返回零或false,例如strpos。如果(!strpos(…)
表示该字符串不包含在另一个字符串中,则不应假定该字符串位于零位置,其计算结果为FALSE
。有时,函数可能会在失败时返回FALSE,或在成功时返回空数组(这不会产生计算结果为TRUE
)
因此,请指出,在某些情况下,这是必要的或有用的,但通常返回多个计算结果为FALSE的值是不好的做法,因此需要在comparisment运算符中包含该类型。在Javascript中,以下两个是等价的:
user != FALSE
!user
但是,这有点不同:
user !== FALSE
因为它是对===的否定,检查值和类型是否相同
参考:
在Javascript中,以下两个是等价的:
user != FALSE
!user
但是,这有点不同:
user !== FALSE
因为它是对===的否定,检查值和类型是否相同
参考:
要求的内容可能与口味和使用领域有关
在严格的逻辑系统中,可能倾向于选择表示对象(在任何类型的存储或内存中)的ID值不为0(并且仅为正数)
这为0表示不存在的对象(所谓的NULL对象)留下了空间
负数也可以用来表示错误等元信息。但是一个严格的系统不应该使用任何负数并在某些上下文上传递元信息,而不是数据流的主线
也许这就是我们想要的。在这种情况下,值FALSE
将不存在,因为整个系统只涉及数字
这样一个系统的好处是,它几乎可以在每种编程语言中工作,并且可以跨越不同的范例
通常情况下,数字0表示错误的条件,非零数字表示真实的条件。要求的要求可能与口味和使用领域有关
在严格的逻辑系统中,可能倾向于选择表示对象(在任何类型的存储或内存中)的ID值不为0(并且仅为正数)
这为0表示不存在的对象(所谓的NULL对象)留下了空间
负数也可以用来表示错误等元信息。但是一个严格的系统不应该使用任何负数并在某些上下文上传递元信息,而不是数据流的主线
也许这就是我们想要的。在这种情况下,值FALSE
将不存在,因为整个系统只涉及数字
这样一个系统的好处是,它几乎可以在每种编程语言和不同的pa中工作