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

1 language-agnostic

我是初学者,我正在阅读/sf/ask/16606901/​​oding-mistakes-are-a-telltale-giveaway-of-an-inexperienced-programmer.我没有得到一些东西.

为什么写这样的东西是不受欢迎的?

if (IsAManMan == true) { 
   Console.WriteLine("It's a MAN, man!");
}
Run Code Online (Sandbox Code Playgroud)

这个怎么样?

if (test) {
  return true;
}
else {
  return false;
}
Run Code Online (Sandbox Code Playgroud)

我不写上面的代码.应该这样写:return test?或者为了便于阅读,我有时会把它写成return test?true:falsereturn (test==true)? true:false

Bol*_*ock 12

在这个例子中:

if (IsAManMan == true) { 
   Console.WriteLine("It's a MAN, man!");
}
Run Code Online (Sandbox Code Playgroud)

在大多数语言中,if条件总是评估布尔表达式,这意味着IsAManMan只能是true或false.因此,与真或假相比是不必要的,因为它是隐含的.所以我们只写这个:

if (IsAManMan) {
   Console.WriteLine("It's a MAN, man!");
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中:

if (test) {
  return true;
}
else {
  return false;
}
Run Code Online (Sandbox Code Playgroud)

按照上面的例子,这意味着test只能是真或假,这就像说:

if (true) {
  return true;
}
else { // If it's not true, it's false
  return false;
}
Run Code Online (Sandbox Code Playgroud)

这又是不必要的冗长代码,所以我们只是

return test;
Run Code Online (Sandbox Code Playgroud)

代替.

最后,它仍然是一个偏好和可读性的问题.例如,如果您认为if (IsAManMan == true)比解释更容易if (IsAManMan),您仍然可以这样写,编译器也不介意.


Dar*_*rio 8

这只是一个重言式.如果下雨,如果下雨完全相同,那么你可以(或应该)省去多余的比较,检查和退货.