python 元编程有多强_怎么理解元编程?

元编程就是多了个元,就是元数据,即除了代码之外的数据,这些数据会影响到程序的行为,java的反射,osgi,spring等技术无一不是这种编程技术的践行者,而抛弃语言本身可以按照以下的例子来理解元编程.如果理解这个过程那么我相信你应该对元编程就有了比较深入的理解.

在这之前我们大概讲编程分别数据和处理过程,数据就是数据,本身只是被动的被程序进行处理,而处理则是有代码组成的逻辑过程,程序就是数据加算法.编程就是将程序实现的过程.

以上内容是一个xml文件.

按照普通的编程方法,这就是一个xml文件,我定义了dom节点class他有name属性,还包含了a b c三个propery他们分别有自己的数据类型和值,这个理解完全正确.你这么理解那么多这个就是数据,这个xml描述的是数据,而不是过程.

例外一种理解方式就是将xml定义动态逻辑化,这段xml对应的理解就是我创建一个Test的对象,然后给他a这个属性赋值为1,b赋值为"1",c赋值为1.0,这个时候请思考一下,这个xml描述的是过程而不是数据,他具有某种程度动态处理的过程,这个Test类还有其他很多属性呢,我只是选择修改a b c属性而已,也就是说在这个理解模式下,xml可以控制程序的行为表达,修改,这个时候就是创建TestA对象了,也就是说xml文件直接可以控制程序的行为了.

如果你理解了上面的描述那么第二种思维方式去编写程序就是元编程,很显然这个xml就是元数据,用户通过元数据也能改变程序的行为.

第一种写程序只是叫一个功能代码,我这个代码可以解析这个xml结果的数据而已,而第二种元编程就是架构,你的代码能够根据用户定义的数据,而动态改变自己的行为.比如对上面的xml片段做简单的修改.

这个xml可以理解为,Test只是一个非常普通的数据类,就是只是包含这些数据而已.

而这个时候Test就表示是一个UI控件,框架会自动创建这个对象,并将其显示到ui某个地方上去.

只是一个字符串的区别,但是对程序的影响却是决然不同,而且如何实现一个小小的修改就能导致完全不同程序行为就是依靠架构的设计,以及对于元数据的定义和解析来实现的.

当然每一个的理解可能不同,特别是每一个人的开发背景不同,在一个语言中元数据,在另外一个语言的视角里可能就不是元数据,但是这种程序流程数据化的能力是元编程的核心,因为数据改变是非常容易的,而且改变源代码流程则是要经过编译链接等繁琐的过程,所以元编程无疑是更灵活开发方式,功能扩展性也更好.

但是对于开发者要求更高,因为任何一个功能你考虑都是如何扩展,而不是如何实现,一个不具扩展性的实现对于元编程架构的破坏性是非常严重的.而当你用平台或者系统来形容一个软件程序的时候基本上就是一个元编程的产物,如果你在功能实现上不考虑扩展性,几次这样功能的迭代对你整个架构就是毁灭性的打击,这也是国内软件开发的一个非常巨大的缺陷,反复的推倒重来.

元编程也是一把双刃剑,过度扩展性考虑导致的是开发难度曲线过大,导致框架脱节,又或是框架本身灵活性不够开放,导致扩展开发代价太大了.好的框架应当是一个动态生长过程,既可以让你快速实现功能,又可以吸纳新的业务到框架中,而这个过程需要开发团队的沟通,以及对于技术细节的钻研才能实现.太过于注重框架结构的严谨,或者太偏向于快读迭代开发功能最后都得不好的结果.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值