编程思想

yizhihongxing

三大编程思想:

  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日

相关文章

  • 状态机的实现

    代码里我们经常会出现大量的条件判断,在这种情况下,我们可以实现状态机避免过度使用 有一种方式是把各种状态归为各种状态类 还有一种方式是修改实例的__class__属性 1 “”” 2 状态机的实现 3 修改实例的__class__属性 4 “”” 5 6 7 class Connection: 8 def __init__(self): 9 self.new…

    Python开发 2023年4月2日
    00
  • 代码坏味道(一)

    1、神秘命名   模块、类、函数、变量等的命名是编程中最难的两件事之一,正因为如此,改名可能是最常用的重构手法   对应的重构手法有:改变函数声明、变量改名、字段改名 2、重复代码   顾名思义,就是在多处看到相同的代码结构   对应的重构手法有:移动语句、提炼函数 3、过长的函数   确保函数内代码处在同一层抽象级,无须担心进程内的函数开销,提倡小函数 4…

    Python开发 2023年3月31日
    00
  • 工匠回忆(三)

    接上文 7、函数   7.1、长度   7.2、圈复杂度   7.3、函数内代码确保处在同一抽象层内,主流程清晰,不存在穿插的分支   7.4、有状态的函数     7.4.1、全局变量     7.4.2、闭包函数     7.4.3、类     比较偏向于后两者   8、装饰器   装饰器和装饰器模式是两个完全不同的概念   1、三方模块wrapt的引入…

    python 2023年5月6日
    00
  • 比较赋值、浅拷贝、深拷贝

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

    Python开发 2023年4月2日
    00
  • __call__用法简谈

      python一切皆对象,从是否可调用层面讲,对象又可以分为可调用对象、不可调用对象 在本篇中,类中实现__call__双下方法,即将该类的实例变为可调用对象   普通类未实现__call__的方法,实例是不可调用的,先看 1 class Valley: 2 … 3 4 5 if __name__ == ‘__main__’: 6 v = Valley…

    Python开发 2023年4月2日
    00
  • 面向对象之多态

    鸭子类型   我们都知道面向对象的语言有三大特性:封装、继承和多态,在这里我浅谈一下python的多态 1 class PageOne: 2 def status(self): 3 return “按期申报页” 4 5 6 class PageTwo: 7 def status(self): 8 return “其他申报页” 9 10 11 class Pa…

    Python开发 2023年4月2日
    00
  • 抽象类的子类化机制

    抽象类:可以作为顶层基类,从高层次规范编程接口 1、在abc模块中,最常见的抽象类有Iterable,我们可以用他判断一个对象是不是可迭代对象 1 from collections.abc import Iterable 2 3 4 class Valley: 5 6 def __iter__(self): 7 … 8 9 10 if __name__ …

    Python开发 2023年4月2日
    00
  • 工匠回忆(二)

    接上文 4、条件分支控制流   避免分支嵌套,异常放在代码片段最前面   4.1、归约函数   4.2、条件表达式的封装避免过长而导致可读性下降   4.3、德摩根定律   4.4、and、or优先级   4.5、or短路效应   4.6、消失的分支     4.6.1、二分查找算法     4.6.2、字典算法   5、异常错误处理   无需多言   6、…

    python 2023年5月4日
    00
合作推广
合作推广
分享本页
返回顶部