为什么有这么多代码是这样的?

 

当人们发布他们的代码时,我经常看到这种情况。

if(a==b){
Dothis;
Dothis;
etc;
}

现在,在阅读别人的代码的短文时,这并不是一个问题。

但是当他们的代码很多的时候,它就会使人几乎无法理解。

我想,很多人都很难在自己的代码中发现错误。

为什么不是这样呢?

if(a==b)
{
Dothis
Dothis
etc
}

//Or

if(a==b)
  {
  Dothis
  Dothis
  etc
  }

 

前一种风格(K & R风格)没有什么问题(只要它是缩进的)。它在具有这种语法的语言中被大量使用(C、Java、Perl)。

例如,它是Java标准,在IMO中是相当可读的(只要缩进正确)。 [由于mql4在很大程度上借用了C风格的语法,我认为提及这些其他语言是有意义的] 。

不过它应该缩进。


if(a==b){
   Dothis;
   Dothis;
   etc;
}


第二个例子(Allman风格)也被一些人所喜欢,并且普遍认为它更具有可读性(同样有正确的缩进)。


if(a==b)
{
   Dothis;
   Dothis;
   etc;
}

但你所否定的方法在其他地方是非常流行的(因为可读性的原因)。

你的后一个例子我一点也不喜欢。

 

allman风格也更容易识别缺失的大括号,特别是在复杂的if else树中。

 

支架风格是程序员的偏好,我认为真的没有正确或错误的方法。K&R风格是最好的;-)。为什么要为开头的括号多写一行呢?.... 我真正关心的是它属于哪个if{statement}。例如,什么看起来更好,更容易理解。

if(.............................)
    {
    if(.............................)
        {
        if(.............................)
            {
            if(.............................)
                {
                if(.............................)
                    {
                    if(.............................)
                        {
                        if(.............................)
                            {
                            if(.............................)
                                {
                                if(.............................)
                                    {
                                    if(.............................)
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

或者这个版本。

if(.............................){
    if(.............................){
        if(.............................){
            if(.............................){
                if(.............................){
                    if(.............................){
                        if(.............................){
                            if(.............................){
                                if(.............................){
                                    if(.............................){
}   }   }   }   }   }   }   }   }   }

甚至更好。

if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
我认为,最后一个版本感觉更符合我在现实生活中的写作方式。一行一行地写。
 

我是这样做的。

if(.............................)
{if(.............................)
 {if(.............................)
  {if(.............................)
   {if(.............................)
    {if(.............................)
     {if(.............................)
      {if(.............................)
       {if(.............................)
        {if(.............................)
}}}}}}}}}
 

我喜欢这种讨论。

那么在编码else 语句时的偏好呢 我更喜欢第一个例子,虽然有些编辑器不能折叠/解压这样的块。第二个是一个折中的办法。第三个甚至更一致,但无法阅读。

if (cond) {
   command;
} else if (cond) {
   command;
} else {
   command;
}

if (cond) {
   command;
}
else if (cond) {
   command;
} 
else {
   command;
}

if (cond) {
   command;
} 
else {
   if (cond) {
      command;
   }   
   else {
      command;
   }  
}
 
在某种程度上,这并不重要,重要的是应用所选风格的一致性......当然,我们都有自己的偏好。
 

我已经不怎么使用else了。不久前有一个问题,我被迫使用else(不记得是什么问题)。当我使用else的时候,情况是这样的。

if (cond) { command; } else 
if (cond) { command; } else {
   command;
}

然而,现在我对上述东西的编码的第一个教导是。

if( cond ){ command; return; }
if( cond ){ command; return; }
command;

是的,我将把三行代码变成一个函数 8)))

 
SDC:

我是这样做的,如果其他方面像这样

我个人认为这是很清楚的。
 
RaptorUK: 就我个人而言,我觉得这句话就像泥巴一样清晰。
它只是伤害了我的眼睛:{
 
RaptorUK:
在某种程度上,这并不重要,重要的是应用所选风格的一致性......当然,我们都有自己的偏好。

同意Raptor的意见。关于什么的话题。当人们在这里发布他们的代码而不使用SRC时,我就会感到很沮丧。他们如何给他们的程序编码是由他们自己决定的,除非他们打算寻求帮助。