Language agnostic 这些初学者风格的代码有什么问题?
我是个初学者,我在看书。我没有得到什么东西 1.为什么写这样的东西会让人皱眉Language agnostic 这些初学者风格的代码有什么问题?,language-agnostic,Language Agnostic,我是个初学者,我在看书。我没有得到什么东西 1.为什么写这样的东西会让人皱眉 if (IsAManMan == true) { Console.WriteLine("It's a MAN, man!"); } 2.这个怎么样 if (test) { return true; } else { return false; } 我不会像上面那样写代码。是否应该这样写:返回测试?或者为了可读性,我有时编写它,比如returntest?true:false或return(test==
if (IsAManMan == true) {
Console.WriteLine("It's a MAN, man!");
}
2.这个怎么样
if (test) {
return true;
}
else {
return false;
}
我不会像上面那样写代码。是否应该这样写:
返回测试
?或者为了可读性,我有时编写它,比如returntest?true:false
或return(test==true)?真:假
这些代码做同样的事情。在我看来,它只是可读性。这些代码做同样的事情。在我看来,这只是易读性。这只是一个同义反复如果下雨和如果下雨是真的是完全相同的,因此,您可以(或应该)省去多余的比较、检查和返回。这只是一个同义反复如果下雨和如果下雨是真的是完全相同的,因此,您可以(或应该)省去多余的比较、检查和返回。在本例中:
if (IsAManMan == true) {
Console.WriteLine("It's a MAN, man!");
}
if (test) {
return true;
}
else {
return false;
}
在大多数语言中,if
条件总是对布尔表达式求值,这意味着isamann
只能是true或false。因此,与真或假进行比较是不必要的,因为它是隐含的。因此,我们只需写下以下内容:
if (IsAManMan) {
Console.WriteLine("It's a MAN, man!");
}
在这个例子中:
if (IsAManMan == true) {
Console.WriteLine("It's a MAN, man!");
}
if (test) {
return true;
}
else {
return false;
}
按照上面的示例,这意味着test
只能是true或false,这就像说:
if (true) {
return true;
}
else { // If it's not true, it's false
return false;
}
这又是不必要的冗长代码,所以我们
return test;
相反
最后,这仍然是一个偏好和可读性的问题。例如,如果您认为if(isamann==true)
比if(isamann)
更容易解释,您仍然可以这样编写,编译器不会介意。在本例中:
if (IsAManMan == true) {
Console.WriteLine("It's a MAN, man!");
}
if (test) {
return true;
}
else {
return false;
}
在大多数语言中,if
条件总是对布尔表达式求值,这意味着isamann
只能是true或false。因此,与真或假进行比较是不必要的,因为它是隐含的。因此,我们只需写下以下内容:
if (IsAManMan) {
Console.WriteLine("It's a MAN, man!");
}
在这个例子中:
if (IsAManMan == true) {
Console.WriteLine("It's a MAN, man!");
}
if (test) {
return true;
}
else {
return false;
}
按照上面的示例,这意味着test
只能是true或false,这就像说:
if (true) {
return true;
}
else { // If it's not true, it's false
return false;
}
这又是不必要的冗长代码,所以我们
return test;
相反
最后,这仍然是一个偏好和可读性的问题。例如,如果您认为
if(isamann==true)
比if(isamann)
更容易解释,您仍然可以这样编写,编译器也不会介意。在这两种情况下,您都在测试布尔变量的值。因为您的值已经是布尔值,所以不需要显式地针对true
进行测试,因为它隐含在if语句中(以及包含布尔测试的类似结构,如循环)
比如说
if(isAManMan == true){
//...
}
可以评估为
if(true == true){ //answer: true
//...
}
或
这和写作是一样的
if(isAManMan){
//...
}
在第二个示例中,您正在检查另一个布尔值的值,然后再决定返回哪个布尔值
再说一遍
if (test) {
return true;
}else {
return false;
}
可以评估为
if (true == true) { //returns true
return true;
}else {
return false;
}
或
if语句是冗余的,因为变量已经保存了您想要返回的值,因此这是等效的,并且是首选的:
return test;
但需要注意的是,您的示例是完全有效的,但是一个好的编译器会将它们优化为我给出的改进版本,因此最终归结为可读性和惯例。我相信我给出的版本更具可读性,更接近普遍接受的约定。在这两种情况下,您都在测试布尔变量的值。因为您的值已经是布尔值,所以不需要显式地针对
true
进行测试,因为它隐含在if语句中(以及包含布尔测试的类似结构,如循环)
比如说
if(isAManMan == true){
//...
}
可以评估为
if(true == true){ //answer: true
//...
}
或
这和写作是一样的
if(isAManMan){
//...
}
在第二个示例中,您正在检查另一个布尔值的值,然后再决定返回哪个布尔值
再说一遍
if (test) {
return true;
}else {
return false;
}
可以评估为
if (true == true) { //returns true
return true;
}else {
return false;
}
或
if语句是冗余的,因为变量已经保存了您想要返回的值,因此这是等效的,并且是首选的:
return test;
但需要注意的是,您的示例是完全有效的,但是一个好的编译器会将它们优化为我给出的改进版本,因此最终归结为可读性和惯例。我相信我给出的版本更具可读性,更接近普遍接受的约定。因为这被标记为语言不可知: 有些语言可以使用关键字作为变量名。在FORTRAN中,这是一个有效的语句:IF THEN ELSE 如果将
true
定义为值为false
的布尔变量,则建议的速记解决方案与更详细的解决方案不同。if-test、IsAMan、true和false最初都不是布尔值
Python 2.0中的一个真实示例
>>>True = False
>>>True
False
言不由衷。由于这被标记为语言不可知论: 有些语言可以使用关键字作为变量名。在FORTRAN中,这是一个有效的语句:IF THEN ELSE 如果将
true
定义为值为false
的布尔变量,则建议的速记解决方案与更详细的解决方案不同。if-test、IsAMan、true和false最初都不是布尔值
Python 2.0中的一个真实示例
>>>True = False
>>>True
False
开玩笑。假设要返回布尔值,而不是第二种情况下的实际测试值 你可以
return !!test
用大多数语言,或者类似的语言
return bool(test)
更明确、更可读。假设您想要返回一个布尔值,而不是第二种情况下的实际测试值 你可以
return !!test
用大多数语言,或者类似的语言
return bool(test)
哪个更明确、更可读。我认为
返回测试?tr