编程思想

三大编程思想:

  POP:面向过程编程(Procedure Oriented Programming)

  OOP:面向对象编程(Object Oriented Programming)

  AOP:面向切面编程(Aspect Oriented Programming)

以下大部分内容引用腾讯云一位笔者,我也是进一步了解纯记录之目的。

POP

​   面向过程编程是以功能为中心来进行思考和组织的一种编程方式,它强调的是功能,在程序设计中主要以函数过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成。

​ 分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候按顺序依次调用就可以了。代码线性,严格按着顺序,侧重解决步骤,着眼局部和具体。

优:

  流程化编程任务明确,在开发之前基本考虑了实现方式和最终结果

  开发效率高,代码的短小精悍,善于结合数据结构来开发高效率的程序

  流程明确,具体步骤清楚,便于节点分析

缺:

  需要深入的思考,耗费精力

  代码重用性低,不易扩展,维护起来难度大

  对复杂业务,面向过程的模块化难度较高,耦合度比较高

OOP

​   面向对象编程是以对象为中心,是一种新型的程序设计方法。针对业务处理过程的实体及其属性行为进行抽象封装,万物皆对象.。

面向对象有特性:封装、继承、多态,还有抽象,这几个特性应该都清楚

优:

  结构清晰:注重对象和职责,不同的对象承担不同的职责

  封装性:将事物高度抽象,便于流程中的行为分析、操作

  易扩展:代码重用率高,可继承,可覆盖

  实现简单:可有效地减少程序的维护工作量

缺:

  面向对象在面向过程的基础上高度抽象,从而和代码底层的直接交互非常少,从而不适合底层开发和游戏开发,甚至是多媒体开发

  复杂性,对于事务开发而言,事务本身是面向过程的,过度的封装导致事务本身的复杂性提高

AOP

  在设计模式专题,提到过装饰器模式,他是快速实现AOP的一种简洁方式,AOP是OOP的延续,AOP用来统一管理公有模块,提高代码复用率

优:

  简单,易用

  降低模块的耦合度

  使系统容易扩展

  设计决定的迟绑定:设计师可以推迟为将来的需求作决定

缺:

  增加额外重复代码,且紧耦合

  每个业务逻辑需要一个装饰器实现或代理

  使用麻烦,须增加容器

总结:

  pop以功能为中心,注重功能的实现,达到效果就行

  oop以对象为中心,注重抽象,代码更加规范

  aop抽出公共部分

  三种编程思想相互补充和完善

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:编程思想 - Python技术站

(0)
上一篇 2023年4月2日 下午4:42
下一篇 2023年4月2日

相关文章

  • 装饰器的多种实现方式

    一、基于函数实现   1、嵌套函数   代码实现: 1 from functools import wraps 2 3 4 def decorator(param): 5 def wrapper(func): 6 @wraps(func) 7 def verify(*args, **kwargs): 8 if param == ‘g’: 9 print(“&…

    Python开发 2023年4月2日
    00
  • 命名元组

    1、命名元组也叫具名元组   可以通过名称来访问序列中的元素,摆脱对位置的依赖,他本身是一个工厂函数 2、应用1   实例化元组返回的类,其内存占用要比普通类实例要小的多,因为前者实例的属性不通过字典进行管理 1 from collections import namedtuple 2 3 # 返回可实例化的类 4 P = namedtuple(“人”, […

    Python开发 2023年4月2日
    00
  • 循环优化一

    主角:takewhile   判断序列中元素是否为偶数,奇数则终止 这是我们最常用的一种方式,其实没必要这么复杂 1 a = [4, 6, 7, 3] 2 3 4 def judge_is_even(item): 5 if item % 2 == 0: 6 return True 7 return False 8 9 10 # 最常用 11 for item…

    Python开发 2023年4月2日
    00
  • 方法的多种调用方式

      方法调用确实我们每个人都会,但是我觉得大家可能用的最多的就是那种常规的方式,这里呢,我要记录一下另外几种方式 1 from operator import attrgetter 2 from operator import methodcaller 3 4 5 class Valley: 6 def func(self): 7 print(“测试方法”)…

    Python开发 2023年4月2日
    00
  • 浅用描述符

      可以理解为property方法的一种进阶,都可以用来创建一种新形式的实例属性,即在实例属性值的获取和设定上,增加额外的处理事务,such as:类型检查、验证   重写三个属性访问方法,其中__delete__方法是否重写取决需求   在类层次上引用描述符,即该类遵从描述符协议 1 class Check: 2 def __init__(self, na…

    Python开发 2023年4月2日
    00
  • 多组合少继承

    继承:   强调类与类之间的关系 组合:   强调对象和对象之间的关系 清楚python支持多继承,从而涉及到一些MRO的点,这里不做赘述,在实际工作过程中,我们经常会使用继承来实现代码复用,如果仅仅是为了复用,还是比较推荐使用组合方式,因为继承方式,使得类与类之间的耦合性变得异常紧密,这多少违背了迪米特法则 1 “”” 2 OOP中三大特性之一:继承 3 …

    Python开发 2023年4月2日
    00
  • pyqt入门

      第一次接触pyqt是在20年刚毕业的时候,时隔两年,恰逢闲暇,正好回过头来对这个模块的知识进行一个整理,不会做系统化的整理,我打算可能会围绕之前做过的小工具对其涉及到的控件、信号和槽等知识进行简单的回忆。后面工作如果再涉及或者想到其他的,会再回来更新完善。   pyqt5:同前面整理的kivy一样,同属于GUI开发框架的范畴,不同的是,pyqt用于桌面应…

    2023年4月2日
    00
  • 比较赋值、浅拷贝、深拷贝

    1、无论是浅拷贝还是深拷贝,拷贝对象后是否会开辟新内存,取决于被拷贝对象的数据类型是否可变,一般来讲,可变的数据类型会开辟新内存,不可变数据类型反之不会开辟新内存,进行内存地址的引用(-5-256以外的大整数池会开辟内存,注:但我本地进行测试比较内存还是一样的,有问题) 2、要在单层、嵌套型对象中逐一比较拷贝 3、浅拷贝和深拷贝的区别主要体现在对嵌套型结构的…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部