OOP与程序化编程 - 页 27

 
Реter Konow:
在函数式程序设计中,你所描述的访问问题并不存在。没有重载函数,没有字段和对象,没有指针之类的东西,当你只有一个内存用于所有全局变量,你可以从任何地方访问,怎么可能调用错误的函数?可能会发生什么样的访问错误?而且,要记住所有的东西就容易多了。

最简单的错误是引用了错误的变量,包含一个价值接近的值。

这样的错误可能在很长一段时间内都不会被发现,但根据吝啬法则,在这个地方非常需要没有错误的工作的时候,它就 "突然出现 "了

而这将是哦很难搞清楚的......你试图理解为什么专家顾问在一个良好的趋势中关闭了一个交易,而TS不应该关闭它--你不能理解。一切似乎都在正常工作。

这正是最令人不快的错误之一--不初始化变量,或寻址错误,但按数值接近。而在程序的这个或那个部分,变量越多--出现这种错误的概率就越大。

是的,当然,如果你有一个全局可访问的图形核心,并且你与订单一起工作,访问错误的变量真的很困难。但在一个较早的区块中,你检测到开立订单的必要性,并为此目的和可能根据用户的行动解决指标--很有可能将变量混淆。

如果有更多的结构,并且重要的细节定期从内存中消失--你会得出结论,全局访问--是一个问题的来源,你应该不惜一切代价避免使用它。而且,代码的编写方式应该是让你尽可能少地记住。理想情况下,不要在内存中保留任何东西--每个块都有一个名称,表明它的功能,在输入端,它接收这个功能所必需和足够的数据,剩下的就是实现这个功能,而不涉及任何其他 "来自外部 "的知识。

 
George Merts:

这是一个简单的错误--引用错误的变量,包含一个价值接近的值。

这样的错误可能在很长一段时间内都不会被发现,但根据吝啬法则,在这个地方非常需要没有错误的工作的时候,它就 "突然出现 "了

而这将是哦很难搞清楚的......你试图理解为什么专家顾问在良好的趋势中关闭了一笔交易,而TS不应该关闭它--而你却不能。一切似乎都在正常工作。

这正是最令人不快的错误之一--不初始化变量,或寻址错误,但按数值接近。而在程序的这个或那个部分,变量越多--出现这种错误的概率就越大。

是的,当然,如果你有一个全局可访问的图形核心,并且你与订单一起工作,访问错误的变量真的很困难。但在一个较早的区块中,你检测到开立订单的必要性,并为此目的和可能根据用户的行动解决指标--混淆变量是很真实的。

如果有更多的结构,并且重要的细节定期从内存中消失--你会得出结论,全局访问--是一个问题的来源,你应该不惜一切代价避免使用它。而且,代码的编写方式应该是让你尽可能少地记住。理想的情况是--不在内存中存储任何东西--每个块都有一个名称,表明其功能,在输入时,它接收该功能所必需和足够的数据,只剩下实现该功能,不涉及任何其他 "来自外部 "的知识。

那么,如果它们都有不同的名字,你怎么能调用错误的变量呢?如果一个错误的函数有一个唯一的名字,而且没有重载,怎么可能被调用?在内核数组内,所有的单元格索引都是用人话命名的。这里有什么可以混淆的呢?要明白,你所说的问题根本就不存在。


我只在内存中保留内核结构,这非常简单。我也知道对象的属性列表。所有的对象都有相同的属性,只是数值不同。我总共有140个财产,但我只保留了最重要的那些,大约30个。其余的我在需要时才会想起。为了做到这一点,我用定义打开了一个文件,并查看了全部的属性列表。并不复杂。焦点中的全局变量,例如 "OBJECT "或 "WINDOW "根本不需要被记住。而且不可能把它和其他东西混在一起。

我的变量在俄语里有有意义的名字。你只能在狂欢之后混淆视听)。
 

我的全局变量 是焦点中使用的变量,它们被 "瞄准 "在内核上,并随着光标的移动而移动。

例如:变量 "WINDOW "不断携带光标所在窗口的编号。变量 "OBJECT "是光标所在的那个对象的编号。

我通过它们来处理内核中的特定窗口、对象和属性--G_CORE[WINDOW][OBJECT][_NAME]或G_CORE[WINDOW][OBJECT][_OBJECT_GROUP]。在任何函数中,如果我需要一个物体的X坐标,我从G_CORE[WINDOW][OBJECT][_X]中得到它,如果物体的高度--从G_CORE[WINDOW][OBJECT][_Y_SIZE]中得到,等等。


总而言之,我有大约一百个单独声明的全局变量,但在全局内核数组中却有成千上万个,因为数组中的每个单元都是一个变量。然而,管理这个数量的变量非常容易,因为它们是有序的。内核中的每个窗口是一个数组字段;每一行是一个对象,由140个属性组成。在这种情况下,元素是对象的集合。每个元素都有一个主对象,它包含整个元素的主要属性。属于每个元素的对象通过特殊的索引联系在一起,因此无论该对象成为焦点,它所属的元素也会成为焦点。绘制它的画布也是如此。由于内核的显式原型和来自任何函数的直接访问,我可以操作由内核数组单元表示的数以千计的变量,而不会忘记任何东西,也不必在它们周围导航。

 
СанСаныч Фоменко:

一个完全没有意义的对话:没有任何标准可以将代码分类为 "好 "或 "坏"。这就是为什么不清楚OOP的原因。

对我来说,这样的标准是代码的可行性,这表现在作者或第三方可以阅读代码并使用它进行修改,在相当长的一段时间后寻找错误.....。


在这里,上面的费多谢耶夫取代了OOP开关。这个特殊的例子,也许是不幸的,对我来说,是OOP的恶毒的证明:有100个位置开关的清晰代码被单行取代。要理解这条线路,你必须要去一个地方。这对我来说是不允许的。

上面第二个例子是乔治-梅茨的作品

当调试后,清除代码被非清除代码所取代。根据我的标准,高质量的代码(易于阅读)被我不能接受的代码所取代。


这就是为什么我有一个问题要问所有的OOP支持者:当应用OOP 时,程序会变得更加生动,而Fedoseyev所举的关于切换的例子是失败的,或者相反,Fedoseyev的例子非常准确地描述了OOP,而OOP几乎总是导致生动性的丧失?


好吧,在CC那里一切都很清楚。一切高于他理解水平的东西都是不好看的。但他知道R这个字母 ))))))))))))))

 
Alexey Volchanskiy:

那么,CC是清楚的。任何高于他理解水平 的东西都是没有 吸引力的。但他知道R这个字母 ))))))))))))))

我将添加中文,也许是日文...

为什么是巴解组织?为什么会更好呢?

可见性是指简化调试、修改。可见性来自于精心的程序设计,来自于结构化的功能,而不是对象,因为整个世界是基于对象的行动,而不是反过来。

当分解为功能时,是由输入转化为输出的顺序得出的。例如,只有通过指定一个ACTION,才能将BUY|SELL输入转换为输出。

这就是人类思维的运作方式。


PS。

关于你对R的评论。

你想讽刺一下吗?

我很少回答,但我可以。

 
Реter Konow:

如果它们都有不同的名字,你到底怎么能调用错误的变量?如果函数有一个唯一的名字,而且没有重载,怎么可能调用错误的函数?在内核数组内,所有的单元格索引都是用人字命名的。这里有什么可以混淆的呢?要明白,你所说的问题根本就不存在。

好吧,我有过几个这样的案例。

最常见的是,当你从另一个地方复制一段代码,然后根据当前的区块来 "纠正 "它时,就会发生这样的错误。如果你有全局访问权--你很可能错过改变其中一个变量。如果在这种情况下,你只能访问你的工作内容--那么在复制之后--编译器本身会给你一个需要改变的所有变量和位置的列表。

标签 Konow:

我的内存中只有内核结构,这非常简单。我也知道对象的属性列表。所有对象的属性都是一样的,只是数值不同。我总共有140个财产,但我只保留了最重要的那些,大约30个。其余的我在需要时才会想起。为了做到这一点,我用定义打开了一个文件,并查看了全部的属性列表。并不复杂。

30处房产? 嗯,这对我来说是不可接受的。不是说我记不住他们,但我不想依赖我的记忆。更好的是,当在每个区块中--你总是有确切的那些变量,在这个区块中应该被处理,而没有对其他变量的访问。

但是,这让我感到压力很大,因为要记住...既然这对你来说并不难--没有必要做不必要的OOP摆弄,这是可以理解的。

 
George Merts:

嗯,我有几个这样的案例。

大多数情况下,当你从另一个地方复制一段代码并 "修正 "它以匹配当前块时,就会发生这种错误。如果你有全局访问权,你很可能错过改变其中一个变量。如果在这种情况下,你只能访问你的工作内容--那么在复制之后--编译器本身会给你一个需要改变的所有变量和位置的列表。

30套房产? 好吧,这对我来说是不能接受的。我不是记不住他们,但我不想依赖我的记忆。更好的是,当在每个区块中--你总是有确切的那些变量,在这个区块中应该被处理,而根本没有对其他变量的访问。

但是,这让我感到压力很大,因为要记住...既然这对你来说并不难--没有必要进行不必要的OOP-交易,这是可以理解的。


嗯,坦率地说,我记得很多事情。只要看看抢购对象的缩写_X2X, Y2Y, B2B, R2R, H2Y, W2X, Y2H, X2W, C2C等等。每一个都定义了一个物体相对于另一个的位置。这些在参数A1,B1,C1,A2,B2,C2,A3,B3,C3,A4,B4,C4,A5中找到。我还记得几十个对象的类别和子类别的名称,几十个窗口的属性(有100多个)。例如,构建块中有几十个函数,它们占用了4000多行代码。你必须浏览并记住很多东西。但记忆来自于长期的实践,不是一下子,而是逐渐地。我的脑袋曾经因为实体的数量和代码的大小而变得沉重,但后来都被塞进了,变得简单了。

 
Реter Konow:

嗯,坦率地说,我记得很多事情。对象参考的缩写_X2X, Y2Y, B2B, R2R, H2Y, W2X, Y2H, X2W, C2C, 等等。每个定义一个对象到另一个对象的某个位置,都是在参数A1,B1,C1,A2,B2,C2,A3,B3,C3,A4,B4,C4,A5...。我还记得几十个对象的类别和子类别的名称,几十个窗口的属性(有100多个)。例如,构建块中有几十个函数,它们占用了4000多行代码。你必须浏览并记住很多东西。但记忆来自于长期的实践,不是一下子,而是逐渐地。我的脑袋曾经因为实体的数量和代码的大小而膨胀,但后来这一切都被淹没了,变得简单起来。


为了分散自己的注意力,忘记一切,去度假一个月,不去想代码的事。然后回来,看到所有这些a1、b1等,就会歇斯底里 :)

 
Alexey Oreshkin :

分心,忘记一切,去度假一个月,不去想代码。来之后,看到所有这些a1,b1等。并歇斯底里:)

例如,这是 proto-core 中的“复选框”元素的样子:

_OBJECTS_SET, CHECKBOX,
//============================================================================================================================================================================================================================================================================================================================================================================================================================================
//------------T------X----Y----W-----H----B_TYPE-- MOB---PXL-----------G-----C------SG---SC--OBJSCR--NEUTRAL-----------A1--B1--C1-----------A2----B2--C2----------A3----B3--C3--------A4--B4--C4-------OBH--OBI--C5--D5--E5--------------------------------------------------------------------------------------------------------------ACT-STATUS--CURRENT-----CURRENT---LAST--------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Основание чекбокса--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,   5 ,     0 ,   0 ,   200 ,   17 ,  _STRIP,  _CNVS,     0 ,    _aq1,CHECKBOX,   0 ,_MOB,   0 ,    _aq1,  _NS_gr1,   A1,  _C2C,_CNVS, 0 ,  A2,  _C2C,_CNVS, 0 ,    A3,_W2T, _aq3,   30 ,      A4,   0 , 0 ,   0 ,    A5, 0 ,   0 ,   0 ,   0 ,   0 ,   A6,   0 ,      A7, 1 ,    _aq1, CHECKBOX,         0 ,         0 ,         0 ,         0 ,         0 ,       0 ,       0 ,       0 ,         0 ,         0 ,       0 ,       0 ,   A8,   0 ,   0 ,   0 ,   A9, _OBJECT_RELEASED, _NS_gr1,   0 ,   0 ,   0 ,     0 ,     0 ,     0 ,   _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Лейбл чекбокса--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,   5 ,     0 ,     0 ,   0 ,     0 , _LABEL,  _CNVS,     0 ,    _aq2,CHECKBOX,   0 ,   0 ,   0 ,    _aq1,  _NS_gr3,   A1,  _X2X,_aq1, 0 ,   A2,  _Y2Y,_aq1,   0 ,    A3,   0 ,   0 ,   0 ,      A4,   0 , 0 ,   0 ,      A5, 0 ,_CHECKBOX_OFF, 0 ,   0 ,   0 ,   A6,   0 ,    A7, 2 ,    _aq1,         0 ,         0 ,         0 ,         0 ,         0 ,     0 ,       0 ,       0 ,       0 ,         0 ,         0 ,       0 ,       0 ,       A8,   0 ,   0 ,   0 ,  A9, _OBJECT_RELEASED, _NS_gr4,  _CHECKBOX_ON,   0 ,   0 ,   _NS_gr5,   _NS_gr6,    _NS_gr7,   _NS_gr7, _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Наименование чекбокса--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,   5 ,     0 ,     0 ,   0 ,     0 , _TEXT_,  _CNVS,     0 ,    _aq3,CHECKBOX,_OCN,   0 ,   0 ,    _aq1,  _NS_gr2,   A1,  _X2X,_aq1, 25 ,   A2,  _Y2Y,_aq2,   2 ,    A3,   0 ,   0 ,   0 ,      A4,   0 , 0 ,   0 ,     A5, 0 ,   0 ,   0 ,   0 ,   0 ,   A6,   0 ,              A7, 3 ,    _aq1,         0 ,         0 ,         0 ,         0 ,         0 ,     0 ,       0 ,       0 ,       0 ,         0 ,         0 ,       0 ,       0 ,       A8,   0 ,   0 ,   0 ,   A9, _OBJECT_RELEASED, _NS_gr2,   0 ,   0 ,   0 ,    _NS_gr9,    _NS_gr9,    _NS_gr10,   _NS_gr10,    _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_END_,
//============================================================================================================================================================================================================================================================================================================================================================================================================================================

//_NEUTRAL_STATE
//====================================================================================================================================================================================================================================================
//             X           Y        PIXEL_0     ALFA_0     PIXEL_1      ALFA_1    PIXEL_2     ALFA_2     PIXEL_3     ALFA_3       PIXEL_4     ALFA_4      PIXEL_5     ALFA_5        PIXEL_6     ALFA_6    PIXEL_7     ALFA_7
//====================================================================================================================================================================================================================================================
_NS_gr1,       0 ,           0 ,         0 ,         0 ,         - 1 ,         - 1 ,        - 1 ,        - 1 ,         - 1 ,         - 1 ,          - 1 ,        - 1 ,          - 1 ,         - 1 ,           - 1 ,         - 1 ,         - 1 ,        - 1 ,          _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//====================================================================================================================================================================================================================================================

//==========================================================================================================================================================================================================================================
//-------------X-----------Y--------TEXT COLOR-----TEXT_ALFA   FONT----FONT SIZE-----ANGLE------POSITION----------STYLE---------------------------------------------------------------------------------------------------------------------------------------       
//==========================================================================================================================================================================================================================================
_NS_gr2,     0 ,           0 ,           clrBlack ,         255 ,       1 ,       10 ,         0 ,     TA_LEFT | TA_TOP ,     FW_NORMAL ,        - 1 ,         - 1 ,         - 1 ,          - 1 ,      - 1 ,         - 1 ,        - 1 ,           - 1 ,        - 1 ,          _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//=======================================================================================================================================================================================================================================
//==========================================================================================================================================================================================================================================
//-------------X-----------Y--------TEXT COLOR-----TEXT_ALFA   FONT----FONT SIZE-----ANGLE------POSITION----------STYLE---------------------------------------------------------------------------------------------------------------------------------------       
//==========================================================================================================================================================================================================================================
_NS_gr9,     0 ,           0 ,           clrBlue ,         155 ,       1 ,       10 ,         0 ,     TA_LEFT | TA_TOP ,     FW_NORMAL ,        - 1 ,         - 1 ,         - 1 ,          - 1 ,      - 1 ,         - 1 ,        - 1 ,           - 1 ,        - 1 ,          _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//=======================================================================================================================================================================================================================================
//==========================================================================================================================================================================================================================================
//-------------X-----------Y--------TEXT COLOR-----TEXT_ALFA   FONT----FONT SIZE-----ANGLE------POSITION----------STYLE---------------------------------------------------------------------------------------------------------------------------------------       
//==========================================================================================================================================================================================================================================
_NS_gr10,     0 ,           0 ,       C'150,150,150' ,     255 ,       1 ,       10 ,         0 ,     TA_LEFT | TA_TOP ,     FW_NORMAL ,        - 1 ,         - 1 ,         - 1 ,          - 1 ,      - 1 ,         - 1 ,        - 1 ,           - 1 ,        - 1 ,          _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//=======================================================================================================================================================================================================================================


//LABEL _NEUTRAL_STATE
//====================================================================================================================================================================================================================================================
//             X           Y        PIXEL_0     ALFA_0     PIXEL_1      ALFA_1       PIXEL_2     ALFA_2        PIXEL_3     ALFA_3         PIXEL_4       ALFA_4           PIXEL_5     ALFA_5        PIXEL_6     ALFA_6    PIXEL_7     ALFA_7
//====================================================================================================================================================================================================================================================
_NS_gr3,       0 ,           0 ,     C'255,255,255' ,   255 ,   C'253,253,253' ,   255 ,     C'80,80,80' ,   255 ,         C'140,140,140' , 255 ,       C'200,200,200' ,   255 ,         C'245,245,245' ,   255 ,     C'240,240,240' ,   255 ,       0 ,     0 ,          _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//====================================================================================================================================================================================================================================================

//LABEL _ACTIVATED_STATE
//====================================================================================================================================================================================================================================================
//             X           Y        PIXEL_0     ALFA_0     PIXEL_1      ALFA_1       PIXEL_2     ALFA_2        PIXEL_3     ALFA_3         PIXEL_4       ALFA_4           PIXEL_5     ALFA_5        PIXEL_6     ALFA_6   PIXEL_7     ALFA_7
//====================================================================================================================================================================================================================================================
_NS_gr4,       0 ,           0 ,     C'255,255,255' ,   255 ,   C'253,253,253' ,   255 ,     C'80,80,80' ,   255 ,         C'140,140,140' , 255 ,       C'200,200,200' ,   255 ,         C'245,245,245' ,   255 ,     C'240,240,240' ,   255 ,       0 ,       0 ,          _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//====================================================================================================================================================================================================================================================

//_OBJECT_NEUTRAL_HIGHLIGHTED
//====================================================================================================================================================================================================================================================
//             X           Y        PIXEL_0     ALFA_0     PIXEL_1      ALFA_1       PIXEL_2     ALFA_2        PIXEL_3     ALFA_3         PIXEL_4       ALFA_4           PIXEL_5     ALFA_5        PIXEL_6     ALFA_6    PIXEL_7     ALFA_7
//====================================================================================================================================================================================================================================================
_NS_gr5,       0 ,           0 ,     clrWhite ,   255 ,         clrWhite ,     255 ,     C'80,80,80' ,   255 ,         C'140,140,140' , 255 ,       C'200,200,200' ,   255 ,         C'245,245,245' ,   255 ,     C'240,240,240' ,   255 ,       clrBlue ,       255 ,          _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//====================================================================================================================================================================================================================================================

//_OBJECT_ACTIVATED_HIGHLIGHTED
//====================================================================================================================================================================================================================================================
//             X           Y        PIXEL_0     ALFA_0     PIXEL_1      ALFA_1       PIXEL_2     ALFA_2        PIXEL_3     ALFA_3         PIXEL_4       ALFA_4           PIXEL_5     ALFA_5        PIXEL_6     ALFA_6    PIXEL_7     ALFA_7
//====================================================================================================================================================================================================================================================
_NS_gr6,       0 ,           0 ,     C'255,255,255' ,   255 ,   C'253,253,253' ,   255 ,     C'80,80,80' ,   255 ,         C'140,140,140' , 255 ,       C'200,200,200' ,   255 ,         C'245,245,245' ,   255 ,       C'240,240,240' ,   255 ,       clrBlue ,       255 ,         _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//====================================================================================================================================================================================================================================================

//_OBJECT_NEUTRAL_BLOCKED/ACTIVATED_BLOCKED
//====================================================================================================================================================================================================================================================
//             X           Y        PIXEL_0     ALFA_0     PIXEL_1      ALFA_1       PIXEL_2     ALFA_2        PIXEL_3     ALFA_3         PIXEL_4       ALFA_4           PIXEL_5     ALFA_5        PIXEL_6     ALFA_6    PIXEL_7     ALFA_7
//====================================================================================================================================================================================================================================================
_NS_gr7,       0 ,           0 ,     C'245,245,245' ,   255 ,   C'245,245,245' ,   255 ,     C'180,180,180' ,   255 ,         C'180,180,180' , 255 ,       C'200,200,200' ,   255 ,         C'245,245,245' ,   255 ,       C'235,235,235' ,   255 ,         C'245,245,245' ,   255 ,         _PL_END,
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//====================================================================================================================================================================================================================================================
 
它只是30多个元素中的一个。也是最小的一个。但令人惊奇的是--我读它就像读一本打开的书。我不难解释它代表什么。另一个奇怪的事情是,这种元素的创建速度非常快,通过复制其他类似的元素并进行一些修正。它看起来很吓人,但事实上非常容易。