Net*_*ide 12 c# java if-statement
我总是使用If语句(在C#中)作为(1. Alternative);
if (IsSuccessed == true)
{
//
}
Run Code Online (Sandbox Code Playgroud)
我知道没有必要写"== true"作为(2. Alternative));
if (IsSuccessed)
{
//
}
Run Code Online (Sandbox Code Playgroud)
但是,我使用它是因为它更具可读性并且不会导致性能问题.当然,这是我的选择,我知道许多软件开发人员更喜欢第一种选择.什么是最佳用法,为什么?
Bri*_*sen 25
我不喜欢第一种选择.它不仅是多余的,而且一个简单的拼写错误会引入一个错误.
考虑一下
bool b = false;
if (b = true) {
Console.WriteLine("true");
}
Run Code Online (Sandbox Code Playgroud)
显然,代码将输出"true",但这可能不是程序员的意图.
幸运的是,像Resharper这样的工具会对此发出警告,但它会使用默认设置(*)进行编译.
直接使用bool将完全消除问题.
(*)公平地说,VS也会对此发出警告,如果你将警告作为错误打开它甚至不会编译.
Ant*_*lev 19
我个人会选择第二种选择.它更自然地读取并表明程序员实际上意识到内置bool类型,这是一流的公民.
我声称赞成第一种选择的人粗略地掌握了布尔逻辑.他们可能在理智上"理解"它,但他们肯定不会理解它; 他们没有内化这种思维方式.
毕竟,是否有人都使用以下成语?"如果明天下雨是假的,我们可能会去游泳" - 不,当然不是.没有人说这样的话,这太荒谬了.什么论证支持这种说法,即当应用于编程(而不是自然)语言时,这个成语突然变得清晰?
我更喜欢第二种选择.我认为它更具可读性,但是如果Boolean?因某些原因需要使用,第一种替代方案具有保持相同的优点.
如果布尔值的名称完全清楚它是什么,那么我总是选择版本 2。但是,有时您会遇到一个特别迟钝的变量名称,您无法更改它,至少可以'现在不要改变...重构一切都很好,但在对代码进行功能更改时我也会尝试避免过度重构。
例如:
if (!NoDropDownInHeader == true)
{
// Activates when there *is* a dropdown in the header)
}
Run Code Online (Sandbox Code Playgroud)
我实际上已经在生产代码中看到了这个特定的示例,并将其简化为:
if (NoDropDownInHeader == false)
{
// Activates when there *is* a dropdown in the header
}
Run Code Online (Sandbox Code Playgroud)
我个人认为这两个示例都比以下示例更具可读性(尽管可以说第一个示例可能与这个示例在心理解析上的难度相当):
if (!NoDropDownInHeader)
{
// Activates when there *is* a dropdown in the header
}
Run Code Online (Sandbox Code Playgroud)
注意: 是的,我知道该变量的命名很糟糕,但是在它存在的多个地方更改它超出了我所做的更改的范围,因为 if 会影响.
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |