编程思想

三大编程思想:

  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日

相关文章

  • 德摩根定律

    命题逻辑里的一个法则   定义:非p或非q=非(p且q)   最近在看一本书啊《python工匠……》一个腾讯大佬写的,从这里面了解到这个东西,确实不错 1 1 # 德摩根定律 2 2 def func(): 3 3 a = 10 4 4 b = 20 5 5 if not a < 5 or not b < 10: 6 6 print(a…

    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
  • fastapi篇(一)

    fastapi是一个高性能的web开发框架 性能极高,可与 NodeJS, Go 媲美。(得益于Starlette和Pydantic)。 Starlette 是一个轻量级 ASGI 框架/工具包。它非常适合用来构建高性能的 asyncio 服务,并支持 HTTP 和 WebSockets。 官方网址:https://www.starlette.io/   P…

    python 2023年5月9日
    00
  • 在*args, **kwargs上强制规定参数的调用约定

      首先我们要知道任何关于函数调用签名的问题,都和inspect模块有着关系   这个知识点涉及到两个类:               Signature、               Parameter创建一个签名对象,这是个重点 1 from inspect import Signature, Parameter 2 3 params = [Parame…

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

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

    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
  • pyqt入门

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

    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
合作推广
合作推广
分享本页
返回顶部