关于编码风格 - 页 5

 

MQL4、C-4 中的类在哪里?而且我认为开发商说过,在5中暂时不会有继承权。

 
Mathemat >> :

MQL4、C-4中的类在哪里?而且我认为开发者说过,5中不会有继承权。

已经有了,还有所有附带的好处。而且你甚至可以在俄罗斯方块 中看到它(在mq5来源中)。

 

哇,这很有趣。自玩具出版后三个月,我才发现...

 
Mathemat >> :

哇,这很有趣。自玩具出版后的三个月,我才发现...

我想我可能已经错过了....

这个感叹词 "哇 "是什么意思? 有任何mt5在那里测试来源吗? 如果有,不介意给我一个下载链接。

 

嗯,不,MT5还看不到(对凡人),但至少你可以看看代码。大致上很清楚该怎么做。

 

谁能推荐一个应用程序,能够解析MQL-源,并以某种形式输出所使用的变量/函数的名称以及它们在文本中 "提及 "的数量?

例如,从抛出的文本中捕捉其余未使用的变量,而不是意外地将一个严重缩写的名字重命名为一个更长更清晰的名字,结果是一个全局变量的 名字,你很久以前就忘记了它,它存在于代码的某个地方。

 
YuraZ >> :

我更喜欢

如果 ( a > c )

codret=3。

如果 ( l < b )

codret=5。

...

...

如果 ( h != b )

codret = 100。


// 特别是在返回之前,有一些对所有输出都通用的额外操作。

... 例如:在这里我们做一些其他的事情

retrun( codret)。

}

你刚才举了一个最好的例子,说明我为什么要使用多路返回的输出。在你的例子中,该函数将返回最后触发的if(),而不是第一个。在我的例子中,该函数将返回第一个匹配。在实践中,我经常发现我需要准确地返回第一个匹配的值,而我几乎从来没有必要返回最后一个触发的检查。在这个例子中,只有一个返回值并不能使追踪函数返回的值变得更容易,相反,你可以从只有一个返回值中期待一切。

顺便说一下,我个人不喜欢将关键的";"字符与表达式分开。

外部双数max_price[100]; //存储最后一百个柱状图的最大值的价格。

extern double max_price[100];//保存最近一百个柱状的价格最大值 - 我只这样写。

 
在70年代,有一个非常时尚的趋势,叫做 "结构化编程"。许多书都是这样写的。记忆最深的句子是:功能应该装在一张纸上(那时还没有显示器),没有GETO,所以整本书都是如此。然后,据说,这一切都变成了面向对象的编程。也许我们又在重新发明车轮了?
 

不,我们在这里只是在谈论风格。顺便说一下,在某些情况下,我根本不介意得到。

 
C-4 >> :

为什么要在一个函数中声明一个函数?就个人而言,由于我只在C和C++中长大,我不理解这种方法。

封闭性...当你写模板并想隐藏一个非常局部的函数或漏斗或类时,它是非常有用的。

而且大多数时候,你可以用一个未命名的命名空间来解决。

2.我讨厌像这样放大括号的非常普遍的风格。

非常多的白费。滋生了各种带着牙套的丑闻。在过去,其理由是节省空间和功能代码大小的规则。

但现在是TB时代,我们为什么要为缺乏空间而遗憾呢?

5.我在函数中使用函数。

效率低下(有几次调用一个),被涂抹掉,时间长。特别是UB中的一个,它是一个恶意的非微不足道的错误的温床。


进一步 -- 关于抄写的问题。非常烦人的事情:)。我承认,我使用它,并经常犯错。例如,我忘记重命名一个变量,改变一个注释或其他什么。

这就是为什么代码审查是一个非常有用的东西。


关于帕斯卡尔 :) 。到目前为止,它仍然是主要的奥林匹亚语言。原因很简单--关键词少,逻辑结构好。

在很长一段时间里,我不相信Pascal(或者说Delphi)比C++差,直到我发现C++更好。

现在我认为Pascal在一个方面更好:用它写二进制代码更难。


>> 然后,关于评论,都是废话,尤其是关于30%。

编写自我记录的代码,你就会很高兴。因为在MQL4中没有类,所以相当难做。但随着课程的进行,它应该变得更容易。


其他一切--缩进、命名原则、对齐--都不过是建议。

顺便说一下,说到功能。字体应该是什么?如果多了一条线呢?最主要的是要明确它的作用,其余的只是建议。


最重要的是要让那些可能维护它的人尽可能地理解代码。