欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 679

点击:64722[回复顶层] [树状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 11 楼
文章id: 690
回复: 感谢,谢老师的指点。

作者: xietao


==========

以下是引用 精灵 于 2011-11-7 9:34:02 发表的文字:

    非常感谢谢老师的指点,我是否可以这么理解“this.BiblioStatisForm.Channel”,“this”是代指“MyStatis”类,而这个类本身叫什么其实并不重要,它可以叫任意的名字,只要不与系统内置类名冲突就行(这里使用“this”其实是便于移植脚本,因为无论“MyStatis”这个类叫什么“this”始终成立)。这个类是“BiblioStatis”的派生类,而“BiblioStatis”本身只是一个接口类,“this.BiblioStatisForm”其实,是在调用“BiblioStatis”这个接口类中的“BiblioStatisForm”这个成员,而这个成员来自“BiblioStatisForm”类的一个实例,而“Channel”是“BiblioStatisForm”类中的某个类的实例,所以,“this.BiblioStatisForm.Channel”其实是“MyStatis”调用“BiblioStatis”类中的“BiblioStatisForm”这个类的“BiblioStatisForm”实例中的“Channel”实例,而后面的一些函数都是“Channel”这个类中的方法。。。。。

==========

对。

不过在一个类中书写函数代码的时候,在成员函数中,说类(实例化以后的对象)自己是this恐怕是一个唯一的做法,没有替代办法吧。

为二次开发服务的一次开发代码,一个重要任务是维持以前的二次开发脚本代码的兼容性。这需要动用语言的各种设施来确保。脚本代码需要的通常是一种“形式主义”地兼容,并不深究OM的细节实现方法。

我这里举两个例子:

1) 一个类以前的成员是普通的类变量,后来改为getter / setter方式存取的成员。或者反之。从脚本源代码的角度,这没有什么区别,只要能照常编译通过就可以了。

例:

以前是

public class SomeClass

{

    public MainForm = null;

}

后来修改为:

public class SomeClass

{

    private MainForm m_mainForm = null;

    public MainForm

    {

        get

        {

            return this.m_mainForm;

        }

        set

        {

            this.m_mainForm = value;

        }

    }

}

2) C#在某个版本以后增加了函数参数的缺省值能力。可以将原有的函数扩展后,保持调用处的兼容。

以前是:

public void TestFunction(string s1)

{

    ....

}

后来修改为:

public void TestFunction(string s1, string s2 = null)

{

    ....

}

目前dp2系统中的脚本代码都是即时编译的。这为脚本代码的兼容提供了更大的空间。因为这只要求“源代码”级的兼容,只要能重新编译通即可。比要求“二进制的兼容”例如已经编译好的DLL之间的兼容要简单很多。

~~~

有二次开发接口的产品项目,由于二次开发的需求和特点,就等于为项目上了一个紧箍咒,如果这个项目运行不错,那么我们可以认为它的水平要维持在某个较高的线以上。

这正是某些优秀的项目经理所希望的效果。有点像时下常说的“倒逼”概念 --- 项目的基本特征和用户的需求,逼迫项目水平至少要在某个线以上。

为了要服务于二次开发,开发人员时刻要想着对象模型怎么向用户解释和推行,理解这些概念的代价有多高,变量的命名规则该如何通俗...。好像项目被装进了一个透明的盒子,提供电视台24小时直播,一点一滴都会被用户看在眼里。

水平在某个线以下的公司和项目小组,根本不敢碰这个领域。本来就是一团乱麻的源代码和架构设计,如果再提供给用户“二次开发”,该是多么可怕的一种“社会实践”。当然,反过来说,如果公司创始人和技术骨干能意识到这种倒逼的价值,引入外力强力脱胎换骨也许是一种坏事变好事的机会,但风险非常大,可能会陷入一种邯郸学步的境地 --- 旧的方法破坏了,新的方法还没有建立起来...。

数字平台当然不是主要取这种额外的“效果”而用二次开发这种特性的。因为让产品总是具有二次开发能力,是其设计师职业生涯的一个恒定的追求。从dt1000中完全自己设计的dtscript脚本语言,甚至追溯到这个的前身 --- DOS版就开始的打印卡片专用语言的尝试,很早就开始了这方面的努力和渐进的过程。也可以说“吃的就是这碗饭”,既然这样,所以正作用副作用也都不觉得有什么了。



发表时间: 2011-11-07 11:05:43
最后修改时间: 2011-11-07 11:21:48



页 2 / 2 |< < 1 2 >|
 

在线用户
访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客 (我自己)   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客
当前栏目在线用户数 35, 总在线用户数 37