Skip to content

Files

Latest commit

9927d11 · May 7, 2020

History

History

忘掉设计模式,使用最强最稳定最有套路的万能编程思维-python oop四步转化公式。

列举出4种编程方式,并介绍万能的oop 四步转化公式。

包含4种编程写法
1)模块级 全局变量  + 函数
2)在一组函数中无限频繁传参 和return
3)无效装逼废物滑稽面向过程类伪oop
4) 真oop
使用4种编程方式来实现男生、女生吃喝拉撒长身体,并说明缺点。

总结oop 四步转化公式。oop转化公式能够做到万能通用,适用一切任意编程场景,能够大幅度减少编程难度和减少代码行数。
只要按照这个公式写代码,就不需要死记硬背套设计模式。
此种编程方式,可以使任意极端纯面向过程代码的文件和项目减少50%行至95%行,写法更直观,并达到流程级可复用。

oop四步走转化公式

一、针对已有全局变量加函数无限复制粘贴扣字的写法,
0) 如果没有写成极致的全局变量加函数写法,就需要在脑袋里多多的抽取全局变量,全局变量多多益善(要大大减少反复return/传参)。
1) 模块级降级为类名
2) 全局变量改成实例属性
3) 函数改为方法


二、针对已有在一组函数中频繁return和大量重复传参的写法
1、转化公式1 (先在脑袋中把代码形式转化为全局变量加函数的写法,在使用公式一)
0)在脑袋中重构,把写法形式改成全局变量加函数的写法,此时不用担心全局变量是唯一的,
不用大量重复传参和return,所有需要传参和return的都想象成使用全局变量和操作全局变量。
1) 模块级降级为类名
2) 全局变量改成实例属性
3) 函数改为方法
后面三个步骤是一样的。全局变量变为实例属性后,每次实例化后每个对象的实例属性都是互不干扰的。
每个对象可以看作为一个模块级写法的 模块文件的无限深拷贝。

2、转化公式2 (直接转化,比较熟悉了之后)
1) 新增一个类
2)把重复传参和return的形参,全都去掉,抽取为改成实例属性
3) 函数改为方法。

三、新写代码:
可以使用老的编程方式在脑袋里写,然后使用oop转化公式。
也可以跳过老的编程方式,直接oop,最重要是实例属性多多益善(但不能没事乱把局部变量含义的东西也加self),
理解oop的多例。

四、
对任何面向过程写法,使用转化公式,一定就可以修改成oop,然来的代码思维不需要做任何改变,
只要按这个公式就可以改造。(前提是满足需要使用oop的两个条件,才需要改造)

转化oop要有灵魂的第0步,如果跳过此步骤就会想当然以为转化oop就是函数外面加个class关键字外壳,觉得转化没用。
那是因为你不按照我说的步骤走,造成写成了无效废物装逼滑稽面向过程类,当然会觉得不需要转化。oop要的是内涵不要搞形式外壳。


oop转化公式的重要本质需要理解的方面

最重要是理解:  命名空间  全局变量  实例属性  多实例需求  函数和方法 的关系,搞清楚了,
写oop十分之简单,不会造成极端面向过程的曲折写法。
在word文档中会写更详细的解释。

常见问题解答

1、是不是所有代码都要用oop?
答:不是,按照上面的方式判断用那种方式好,再用oop转化公式,使用真正得oo编程。
如果只是对现有代码直接在函数上套个类名,函数改成方法,99%的情况下弄出来的只会是废物滑稽类,伪oop,
不能有写类就高大上能吓唬人装逼了这种想法。

2、函数和类上面区别?
没有区别,就像问人和走路有什么区别,猪和吃饭有什么区别,问得牛头不对马嘴的伪问题,函数和方法才可以比较。
类(对象)和模块才有可比性,必须要搞清楚原因,不然脑袋中有这个比较的想法那就不可能写得了oop。

面向过程是 文件模块名.eat(狗的名字,shit)
oop是  狗.eat(shit)

python编程范式

1.1 方式一,平铺指令。 从上往下叠加指令,适合简单的独立脚本。不需要和没机会被别的模块导入。
1.2 方式二,面向过程函数式编程。适合实现独立的转化功能,基本原理是要实现转化 y = f(x),
适合函数无依赖状态(不需要在多个函数中频繁的传入和return相同意义的参数)。
1.3 方式三,oop编程.适合多个函数间需要使用同一个变量,并且需要多实例(如果使在使用面向过程时候需要使用函数频繁的return各
种状态/变量由类外使用多个参数来保存这些值和传入这些值,那就是也判断为需要多实例),必须同时满足这两个条件,才使用oop好,
否则不需要oop。(但单例模式为了控制灵活的初始化传参,一般也用类的方式)
1.4 网上说的简单用面向过程,复杂的用面向对象,这简直是错误的废话。简单和复杂界定不了,即使是一个简单的查询价格,经过大量
平台的重写对比,oop都能比面向过程减少70%行以上的代码,所以用网上这句话来判断用什么方式来写代码是错误的。只要严格使用上面
描述的判断方式,就能很容易知道在什么场景什么时候使用哪种方式好了,不需要oop嗨写成类就是没理解好oop能更好地解决什么。
1.5 要多使用oop,但不要写成纯静态或者半静态的无效废物类。 面向过程一定可以搞定一切,但是实现麻烦、调用更麻烦,那就不适合
面向过程了。比如猴子补丁可以搞定继承,闭包可以搞定封装,但是没什么好处,实现麻烦。先要转oop,只有放弃极端面向过程,不对面
向过程过分的偏执和喜欢,才能开始学习更多设计模式。