Coding style 如果语句格式设置是最佳做法,那么';你的风格是什么?
希望改进我的IF语句,我想让我的代码看起来漂亮 这就是我目前正在做的,可读性好吗,还有改进的余地吗Coding style 如果语句格式设置是最佳做法,那么';你的风格是什么?,coding-style,Coding Style,希望改进我的IF语句,我想让我的代码看起来漂亮 这就是我目前正在做的,可读性好吗,还有改进的余地吗 我没有人可以四处打听。这就是我来这里的原因。请不要结束我的问题:(您的冗长导致代码可读性较差,我认为以下格式是最好的: if ( null == o || null == o.ID || null.Title || 0 == o.ID.Length || 0 == o.Title.Length ) { // do stuff } 我们都有高分辨率/宽屏显示是有原因的,没有理由用非常短的语法来
我没有人可以四处打听。这就是我来这里的原因。请不要结束我的问题:(您的冗长导致代码可读性较差,我认为以下格式是最好的:
if ( null == o || null == o.ID || null.Title || 0 == o.ID.Length || 0 == o.Title.Length )
{
// do stuff
}
我们都有高分辨率/宽屏显示是有原因的,没有理由用非常短的语法来锁定代码
if ( IsIDEmpty(o) )
{
// do stuff
}
使代码更简单、更干净。该函数将执行实际检查并返回一个布尔值。我相信这可能是您可以重复使用的东西,而且它还可以作为一种简单的方法,使代码更加自我记录/注释。如果它合适,我会将其全部放在一行上(这一行显然不适合).这样,我会将| |始终放在行的开头或结尾:
if( null == o ||
null == o.ID ||
null == o.Title ||
0 == o.ID.Length ||
0 == o.Title.Length
)
或
如果一条线上的条件大于1,我认为| |的位置更重要
我忽略了一个事实,null.Title似乎没有多大意义老实说,我觉得它很让人分心。主要是因为“| |”开始发出有趣的声音 我更喜欢这样的东西
if ( o == null || o.ID == null || null.Title ||
o.ID.Length == 0 || o.Title.Length )
或者更好,如果可能的话,把它放在一行中。为了下一个家伙,我总是尽量避免复杂的布尔表达式,但是如果我不得不写一个不容易在一行上的表达式,我会将其格式化如下:
if (value1 == value2 ||
value3 == value4 ||
value5 == value6 ||
value7 == value8) {
executeMyCode();
}
我通常会这样做:
if(x < 0 || x >= width
|| y < 0 || y >= height)
{
/* Coordinate out of range ... */
}
如果(x<0 | | x>=宽度
||y<0 | | y>=高度)
{
/*坐标超出范围*/
}
第一个y和x以单空格字体排列,这很好,我不会被半缩进搞糊涂
这种方法在做类似的比较时效果最好。否则,我通常会将我的if分开。我认为它非常不可读 在我看来,将常数放在第一位的效果总是有点奇怪——如果大多数编译器在条件表达式中找到赋值,他们都会被说服发出警告 然后对两个不同的对象测试null,然后对两个不同的对象测试零长度,但重要的不是长度检查,而是要检查的成员
if (o == null ||
o.ID == null || o.ID.length == 0 ||
o.Title == null || o.Title.Length == 0)
对于你所拥有的最简单的格式,我会选择每行一个
if(null == o
|| null == o.ID
|| null == o.Title
|| 0 == o.ID.Length
|| 0 == o.Title.Length)
如果您可以重构条件,使其适合于一行,则更好。我发现大量的| | |或&&通常很难读取。也许您可以将其重构为一个函数,并留下:
if(myFunction(...))
它是不可读的。 这就是我如何做真正长的如果(或那些我不得不经常玩弄的) 对于你的,我只做一行
if(o == null || o.ID == null || o.Title == null || o.ID.Length == 0 || o.Title.Length == 0)
或者,如果你使用C++,我会做这样的事情:< /P>
if(!o)
{}
if(! (o.ID && o.Title && o.Length))
{}
…因为它将创造与正确分开
然而,由于我对新行的喜爱,我被指控臃肿的LOC。
< P>一般我和TravisO在这一点上,但是如果你的IF-语句中有这么多的条件,那么它就变得疯狂了,考虑把它自己的小功能改成:bool wereTheConditionsMet()
{
if( NULL == 0 )
return true;
if( NULL == o.ID )
return true;
: : // and so on until you exhaust all the affirmatives
return false;
}
if ( wereTheConditionsMet() )
{
// do stuff
}
传达一个命名良好的谓词函数的意图要比传达一个无穷无尽的| | s和&&s字符串容易得多。我的经验法则:避免半智能自动格式化程序无法复制的任何格式 在我看来,拥有一套已定义的格式和一个自动工具/模板/配置来实际生成该格式的代码是一个巨大的优势
如果您的代码在自动格式化后仍然无法读取,那么很有可能您仍然需要重构。与其只为这一个问题制定一个标准,我建议对您使用的任何语言采用现有的编码标准 例如: GNU编码标准
Java编程语言的代码约定
.NET Framework类库开发人员通用参考设计指南
“null.Title”?您看到的是null对象的Title成员?Shome mishtake,Shirley?这完全是主观的,以前已经被问过(并且已经结束)。@EBGreen-我认为这是以合理的方式问过的(真诚地寻求改进建议)有很多不同的答案,但我不认为任何答案是有争议的。我认为这是一个非常相似的问题,如果它有帮助的话。我不认为它是有争议的,但它是非常主观的,没有办法仅仅主观地结束它。也许,但最终会有一句话是不明智的一句话。我真的不想成为你办公室里的一个近视眼!“没有理由用非常短的语法来锁定你的代码”.当然,在我的屏幕上,Stackoverflow会在右边显示最后几个字符和一个滚动条!我不太希望所有内容都在一行中,但我同意将复杂的逻辑放在一个单独的函数中会让它更可读。@Paul-不仅仅是你的屏幕。所以的列固定在一定数量的ems上宽。我想这是因为杰夫·阿特伍德讨厌这样的人:“好吧,我在一个像样的显示器上用像样的编辑器编写代码,还有剩下的几个不配痛苦地死去的特罗格洛迪人。”.或类似的文字。+1表示在连续行的开头使用运算符。这使得程序员可以轻松快速地通知该行是前一行的延续,而不是第一行的延续
if(o == null || o.ID == null || o.Title == null || o.ID.Length == 0 || o.Title.Length == 0)
if(!o)
{}
if(! (o.ID && o.Title && o.Length))
{}
bool wereTheConditionsMet()
{
if( NULL == 0 )
return true;
if( NULL == o.ID )
return true;
: : // and so on until you exhaust all the affirmatives
return false;
}
if ( wereTheConditionsMet() )
{
// do stuff
}