MetaTrader 5交易终端中的造型器 - 页 5

 
Renat :

先生们,这些代码是为谁而写的?


我很确定这是为其他程序员准备的。对他们来说,阅读别人没有格式化的代码是非常不愉快的。


正是为了解决这个问题,我们创建了内置的样式器功能。如果你想让其他人(不是你,而是其他人)愿意查看你的代码,你最好让它尽可能的简单和明确。而这里的关键词是 "人们",而不是 "你"。


雷纳特,这个造型师 是为谁写的?


我很确定这是为其他用户写的。但对他们来说,阅读以别人的风格格式化的代码是非常不愉快的。


正是为了解决这个问题,我们建议扩展常规样式器的功能。如果你希望其他人(不是你,而是其他人)想使用你的造型器,你最好让它尽可能方便和可定制。而这里的关键词是 "人们",而不是 "你"。



程序员写代码不是为了自己,尽管他们错误地认为是为了自己。你知道的,不是吗?



ps:这个CodeBase的借口太荒谬了,编辑器中的嵌入式样式器与此有什么关系?

 
komposter :

ps:关于CodeBase的借口是荒谬的,嵌入式风格器与它有什么关系......?

当你自己建立、维护和支付代码库时,这个问题会一下子消失。还是你认为周围的一切都是免费的?


现在,我们所讨论的是 "仅仅因为它不能定制就不好 "的原则性立场。


让我们继续讨论具体的要点--指出哪一点,以及为什么造型师 没有正确完成。

 
Renat :

现在所有的谈话都只是关于 "它不好只是因为它不能调整 "的原则立场。

我不同意。

例如,我有如下立场--"我们所拥有的并不好,因为它不符合公认的编码标准。满足结果的手段并不重要"。


你有一个原则性的立场,而且不仅仅是在这个问题上。

而且你断然不愿意听别人的论点,即使这些论点是相当合理和理性的。

让我们继续讨论具体要点--指出哪一点以及为什么造型师做错了。

Styler 做的一切都很正确。但结果却不尽如人意(可接受)。
 
TheXpert :

我不同意。

例如,我的立场如下 -- "不满意的东西,因为它不符合公认的编码标准。不满意时,我不会使用,满意时,我会使用。满足结果的手段并不重要"。


你有一个原则性的立场,而且不仅仅是在这个问题上。

而且你坚决不愿意听别人的论点,即使他们相当合理和理性。

Styler做的一切都很正确。但结果却不是你想要的(可以接受)。

+1.在所有方面。

只需要一个决定,就可以回到标准风格。他们根本不愿意承认过去曾经采用歪门邪道的错误。

 
marketeer :

+1.在所有方面。

只需要一个决定,就可以回到标准风格。他们只是不愿意承认在过去某个时候采用歪门邪道的错误。


我不同意 "弧度 "的说法。

对他们来说,它的味道 "更美味 "和 "更明亮"......不要争论这个问题。

而关于定制,他们说--稍后回到主题

;)

 
Sorento :


我不同意 "曲率 "的说法。

对他们来说,它的味道 "更美味 "和 "更明亮"......不要争论这个问题。

而关于设置,他们说--以后再谈这个问题

;)

你说你不同意是什么意思?有一些事实上的标准,你不能不同意,你只需要遵循它们。他们没有想到要用自己的HTML生成报告,并有一个子版本--他们完全是在标准版本中做的。风格也是如此。编程是一个全球性的行业,风格是确定的,MetaQuotes不能用这样的 "创新 "去对抗大众。

 

请说明是哪一个项目,以及为什么造型师 没有正确完成。


最好是有格式化的代码片的演示。

 
Renat :

请说明是哪个项目,以及为什么造型师做得不对。

最好是有格式化的代码片断的演示。

https://www.mql5.com/ru/forum/122145, 只有那里的标签是小的 -- 2个字符,但它不是那么关键,虽然它是正常的3-4个。

演示在第一个帖子中。那里没有逗号,应该是这句话中的那样。


如果你是认真的,我可以引用我们公司风格协议中的节选部分。

Вот это стиль! :) - MQL4 форум
  • www.mql5.com
Вот это стиль! :) - MQL4 форум
 
Renat :

请说明是哪个项目,以及为什么造型师做得不对。

最好能展示格式化的代码片段。


雷纳特,这已经是不符合体育精神的行为了;)

MQL是你的语言,没有标准,所以你有权利制定你的标准。我们也不会向你证明什么。

但MQL是一种类似C语言的语言。而C有几个公认的标准。在这里,他们是:https://en.wikipedia.org/wiki/Indent_style。

我个人更喜欢Allman风格(Emacs中的bsd)

该样式将与控制语句相关的大括号放在下一行,缩进到与控制语句相同的层次。 大括号内的语句缩进到下一个层次。

while (x == y)
{
something()
{ somethingelse();
}
finalthing()


在我看来,为自己的观点辩护的问题绝对是牵强的。你想看到你的文本格式是这样的,就请便吧!但也有一些人希望看到它以不同的格式出现。这些人(他们不能进入正文)要求你考虑他们的需要,并对格式进行调整,以便既能按照你的方式,也能按照他们的方式进行格式化。只有你--开发者才能做到这一点。这就是我们向你提出的请求。你要么满足我们的要求,要么把我们全部送回你的标准。选择你的选项并宣布它。

Indent style - Wikipedia, the free encyclopedia
  • en.wikipedia.org
Indentation is not a requirement of most programming languages, where it is used as secondary notation. Rather, programmers indent to better convey the structure of their programs to human readers. In particular, indentation is used to show the relationship between control flow constructs such as conditions or loops and code contained within...
 

只是补充几段,为什么我认为这个问题很重要,为什么我认为Allman风格(Emacs中的bsd) 是正确的。让我们暂时忘记谁习惯于什么,而诉诸于赤裸裸的逻辑。

为什么需要对文本进行格式化?为了隔离和划分其中的单个逻辑 块,使用这种非常的格式化


让我们来看看一个普通的同时。它有两个逻辑隔离的块:循环的 "头 "和循环体。为了不把它们混在一起,必须把它们放在不同的线路上。由于这个原因,在与 "而 "字同行中打开小括号(对我个人来说)会引起困惑(这就像一个人半进入一个房间--整个身体都在房间里,而头却仍然 "留在 "门后)。


现在,第二个问题是,到底要不要把托架推入?原则上,括号并不直接指向标题,而是循环主体的一部分。然而,只有可执行的命令应该被推到里面,也就是有自己独立逻辑的东西。但至少有一个合理的例子是没有主体的循环。

while ( TradingServerNotAvailable() )
{
}

在交易服务器不可用时,我们根本无事可做--所以我们什么都不做,身体循环是空的。在这种情况下,推到里面的括号看起来(从我的角度看)--有点奇怪:右移和空突出。

当一个循环有一个主体时,它被移到右边,左边的空间可以用来寻找成对的闭合括号。

while ( TradingServerNotAvailable() )
{
Sleep ( 1000 );
}

这也是为什么开口括号不应该和循环头放在同一行的原因--当你寻找闭合括号时,它们更难在那里找到。在我的版本中,你可以清楚地看到这个位置的小括号和另一行的对应物,但在同一位置。此外,带有单括号的行(即使没有注释!)作为一个额外的视觉元素,突出并分离了内部块和外部块。


正如你所看到的:没有什么个人的东西--只是文本的视觉感知的逻辑!


而正是从这一逻辑的角度(而不是个人的偏好和习惯),目前的风格器格式化的文本对我来说是不可理解的。

// чего вдавлен внутрь кусок кода - в котором кода нет и выделять там нечего
while ( TradingServerNotAvailable() )
{
}
// каждый отступ вправо ассоциируется с новым уровнем вложенности, а здесь визуально ТРИ уровня!
while ( TradingServerNotAvailable() ) // первый уровень
  { // второй уровень
   Sleep(1000); // третий уровень
  }

而如果在GNU启发下的写作中,它只是一团糟。

if ( TradingServerNotAvailable() ) {
  ....
} else { // вот тут в одной строке ТРИ элемента разных блоков: закрытие предыдущего, разделитель, начало следующего :(((
  ....
}

你怎么知道你没有丢掉一个开头括号或多放一个结尾括号?它是这样的。

if ( TradingServerNotAvailable() ) 
{
  ....
}
else
{
  ....
}
再次强调:这不是我的个人习惯或其他问题--只是文字的视觉感知逻辑!这是我的个人习惯。
Indent style - Wikipedia, the free encyclopedia
  • en.wikipedia.org
Indentation is not a requirement of most programming languages, where it is used as secondary notation. Rather, programmers indent to better convey the structure of their programs to human readers. In particular, indentation is used to show the relationship between control flow constructs such as conditions or loops and code contained within...
原因: