Language agnostic 这些初学者风格的代码有什么问题?

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==

我是个初学者,我在看书。我没有得到什么东西

1.为什么写这样的东西会让人皱眉

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