关于编码风格 - 页 4

 
Mathemat >> :

尤拉,你的例子有一个回报,当然,这是符合逻辑的。但要注意的是,在这种情况下,所有的if都会被运行,而不像有许多返回的情况下,当函数的退出是在达到条件的字符串后立即得到的。

ForexTools,谢谢,我已经采纳了你关于格式化的想法。

数学,因为条件运算符 "if "也有 "else "这样一个噱头。

if(expression1) operator1。

else if(expression2) operator2;

else if(expression3) operator3;

否则操作者4。

然后在第一个真条件之后执行运算符,就是这样。所有的如果都没有进一步运行。如果发现一个真实的条件,就会执行相应的运算符,程序在这个结构体之后继续进行(在结构体中没有进一步的搜索)。

 

我不是在争论,谢尔盖。我在这里说的是朱拉的 设计。

 

还有一个有趣的问题可以 "刺激 "讨论:平台限制对编写MQL程序的风格有多大影响? 例如:如果在不同的函数中进行逻辑隔离的计算,那么代码更容易编写、理解/阅读和维护。但每次调用一个函数(特别是在解释器中,如MQL)都是一个耗时的操作。单一的调用当然不是关键,但我们大多数人不得不在一个循环中写这样的东西(for int i=0; i<Bars; i++)等。在这里我们开始决定什么更重要--漂亮的代码(以函数的形式--这样以后我们就能理解我们写的东西)或执行速度(复制类似的片段--这样你的循环可以在下一个tick到来之前一直工作)。

很明显,在每种情况下--黄金分割线的决定是不同的,但....谁来解决这个问题?

 

我在第一页的同一个主题中发布了一个简短的研究结果。以我的计算量(它很小),我对这些功能相当满意--即使是单行长度。但这里也有其他意见。

 
这不是我的意思...我的意思是,编码风格在多大程度上受到需要考虑平台(任何--不仅仅是MT)的外部约束的影响。
 

它可能有影响。我曾经认为古老的特鲁博-帕斯卡尔语是理想的。在那里,可以对函数进行结构化处理,即在函数中对函数进行声明。C不允许这样做。而这正是我现在要做的事情,但基本上是在C平台上。当然,这只是一个外在的表现。

现在更精确了,谢尔盖

 

Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях.

这到底是怎么一回事?就我个人而言,我在学习编程语言的时候是从C语言开始的。现在我知道其中两个:C和C++。我必须说,我根本没有被吸引去学习任何其他语言。为什么我必须在函数中声明函数?就个人而言,由于我只在C和C++中长大,我不理解这种方法。

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

但我现在确实明白了。如果我有一直到第六个调用顺序的函数,对我来说,把不同调用顺序的所有函数归为一堆并不总是方便。它失去了对调用结构的整体看法。而在Trubo Pasqualee中,这一切都很方便:几个主要功能进行关键处理,所有的小的子功能都隐藏在里面。

但这可能是一个习惯问题。我已经很久没有在里面写东西了--而且我并不后悔。

 
C-4 >> :

为什么要在一个函数中声明一个函数?就个人而言,由于我完全是在C、C++中成长起来的,我不理解这种方法。

"霍拉旭朋友,世界上有许多事情是我们的智者从未梦想过的";)

这有一种美感--可以说是封装中的封装。但说真的,这是一个非常有用的工具,如果你明智地使用它,就像其他东西一样。

数学 我曾经认为古老的特鲁博-帕斯卡尔语言是完美的。

我正在考虑重新使用它,至少以Delphi中的DLL形式。 我已经厌倦了用MQL来做简单但必要的事情(例如,与交易员的微不足道的对话)。

 

- 什么是力量,兄弟!?

- 力量在班级里,兄弟!

我认为还没有发明过比班级更好的东西。在类内声明私有函数,并声明公有函数来与之合作。它很好,很强大。继承函数和变量,想清楚层次结构。通过创建复杂的数据结构对数据进行封装。使用标准模板库中的通用算法处理数据。坦率地说,MQL4中的封装性非常差。你必须分别保存不同类型的数据,这导致了错误。通常我们要注意数组的索引(一个非常恼人的错误)。我认为这将在MQL5中被制止。