今天不说模式,和大家反思一下自己的代码 [ 技术分享 ]
开发过程中,遇到迭代频繁的时候,怎么办,肯定都是先实现功能上了线再说吧。这时候代码的架构,扩展性,重用等等都不会去在意了。只要程序跑通就行了。
看完这句话,你们反思一下,自己写程序的时候有没有这样,一个类方法里的处理从上至下流水线式的下来。而且函数的长度多达几百行 。几乎所有的函数都是万能的,一个类是宇宙,函数就是宇宙中万能的宇宙飞船了。所有需求,程序流程都在这个函数里不断加修改,增加,删除,不停的改动,为了应对每次的需求。
需求简单还可以应对,遇到复杂需求,改东改西的,最后需求A改好了,其他功能又出错了,测试测到了还好,测不到就遗留了线上BUG。
这些种种问题都是面向过程开发导致的,也有人会把面向过程,拆分多个小的函数处理 但是这样函数之间的耦合还是很大,导致一个函数的修改会牵连另一个函数。 虽然拆分成多个小的函数,但是整个程序是面向过程的,也就是流式结构,一步一步走下去的
在函数里用的最多的就是各种if判断来控制流程走向!!!
这些天在看以前的代码,回头看看自己走的路,全是坑啊。
前面的路怎么走还是自己掌握,是否继续走出一路的坑呢?
对于自己的代码首先要做改善了,怎么改善,其实不难,就一句话:抽象思维。四个字概括一切。 不需要一堆的模式,一堆的官方概念。
武功的最高境界,无招胜有招。什么23种模式还是27种模式,那都是举例演示告诉你有这么个东西,不要被具体的模式结构框死 如果被框死了,那就难跳出了。
要这样想,设计模式吗?也就是这样而已,我知道,抽象概念就好了,
然后试着去写,写的同时心中牢记6大原则就好。
一边试着写一边检查,我这里是否满足单一职责?是否满足开闭原则?这里用依赖倒置扩展性更高了以后需求变了,只需要扩展功能就行了,不需要修改原来的(根据实际需求而来,有的需求就是在原来的类方法上修改的),哎呦,不错喔,我似乎看到了什么?只扩展?不修改? 等等,,这不就是开闭原则吗?所以说,在慢慢的理解练习中你会发现你自己能创造出属于自己的各种设计模式。
懂得分类,抽象,接口(面向接口编程),为什么要继承,还有个东西叫组合,多态时刻隐藏在设计模式中。用心领会, 封装就简单了,把功能写在方法里以后就不改了(应该是改动的几率小之又小了)。有改动只需要扩展就可以了。
用心领会想想,如果我们的代码按照面向对象设计模式开发,你会看到什么?
一个核心类就是我们的主力(好比一块砖,哪里需要哪里搬。放到哪个程序都可用)
封装了类方法,以后有需求改动都是和这个类方法交互的改动。可以用就改改外部交互这个方法,不能用就新增一个外部方法。 上面这句的意思就类似电脑。接口定义好了(面向接口编程),所有的CPU和主板交互都是通过插上就可以了,不同厂家的CUP他们和主板的接口都一样。如果需求来了,在原有CPU上用笔在背面写上今天日期,这个需求简单,你拿起来CPU写上日期,然后安装上就可以了。如果大需求来了,电脑效率跟不上了,这个时候你有两个选择一个是去修改现在这个CUP类方法使CUP效率上去,另一个是给主板的接口写一个新的高性能CUP挂上去。显然是第二种,因为第一种你已经没法优化CUP性能了,因为你不会,这是厂家做的事情。那就在买一个CUP(再写一个类函数)满足主板的CUP接口就行,这样买来的高性能CPU就可以简单的插上了。功能实现了,性能提升了,而我们要做的就是将原来的CUP类方法注释掉,新写一个类方法挂载上去。对于程序的其他方法函数逻辑处理业务流转等等没有一点影响。就好比换了CPU和内存硬盘没关系。
如果编程也是这样,你会喜欢吗?
我相信你不只是会喜欢,你会喜欢的疯掉的。这是一件艺术品,而是由你创建的。
多读读YII框架,不需要看他的源码分析,看看作者的设计思想。你去领会一下他为什么这么设计。没什么写一个抽象类,为什么定义这个接口,为什么这样继承,为什么只从重写了get没有重写set。。。。太多思想了。
写代码就是在自己的内心世界根据自己的思想创建出一个自己的虚幻世界。
共 5 条回复
灰太狼
最后登录:2023-07-14
在线时长:76小时17分
- 粉丝28
- 金钱3290
- 威望150
- 积分5550