谈下面向过程

虽然最早时候我是写delphi出身的,但是真正第一个让我享受到“操控感”的语言是perl。perl作为一个工具性语言,虽然支持面向对象,但是从原生态来讲是种面向过程的语言。后来写PHP,做PHP的野路子的人多,正规程序训练的人少,少数正规程序训练和野路子但是有兴趣想往高级里面钻研的人里面,又都把OO当作出路。
说实话,OO我的理解不深,不过世界上的事情总是殊途同归,我不相信的是一个项目一定用OO才能做成功,也不相信一个项目用OO才能保证代码简洁效率高可读性好可维护性好重用性好,一切都是程序员素质和团队的开发规范。
下面讲一些细节的PHP的OP下我们怎么保证:可维护性、可重用性、可扩展性。当我们满足了这三个目的的时候,我相信没有人说一定OO就比OP好了。
先讲一下,所谓OP,一样是要有“对象”的思想,要去抽象,把事情做好抽象这件事永远是不会变的。

首先,文件结构很重要。具体的不谈,单谈谈我们的functions目录,这个目录是按照访问不同的"基类"组织的,例如user、department等等。所有目录下,有一些public文件,我们一般命名做xxx.base.php,放public函数。
函数、变量命名也很重要,
所有的相当于common类的变量,我们会做全局散列变量$g_config,$g_company_structure,等等。public的函数按照取数据还是设置数据尽量写为get_xxx set_xxx,get_xxx_and_set_xxx。
private的函数,写为calc_xxx,update_xxx,外部只include那些public函数文件。
对于一个过程中,如果只对一个实例化的对象做操作,如果是频繁传参的变量,我们也做全局变量散列,命名做$g_this_xxx,例如$g_this_user['name'],$g_this_department['level']
其实很多时候,OO的好处是传参很短.......不过函数内改变变量的值始终不是个好的事情,业务逻辑的可读性可维护性会降低。不过为了较短的传参,在严格控制全局变量数量的前提下,是可以接受的。
OO还有一个重要的应用,多态。实际上我们做OP的时候,是这样实现:
$mapping[$typ]=xxx;这样一个typ值到含义的mapping表,
然后
include_once $mapping[$typ].'.php';
这样,就把相同函数名的不同应用下的不同实现include进来了,
然后,调用同名的函数,就会根据不同的输入条件做不同的操作。
当然,这个方法有局限性,主要体现在循环体内,针对不同的$typ操作。因为php貌似不支持注销一个函数,如果支持的话,完美的面向过程的多态啊。
当然,php支持命名空间以后,这个问题也可以迎刃而解。

还有什么OO的主要目标没有实现,大家留下言,我一下子想不起来。总之最关键的,OO的思想是好的,实现上却不如OP简洁明了,太多的语言层面的东西了,而我们,其实最关心应用(代码的业务逻辑),而不是语言。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值