很多时候,我们都是用面向对象语言进行面向过程编码。

    1. 滥用 getter、setter 方法

滥用getter,setter方法很容易造成违反封装特性。数据没有访问权限控制,任何代码都可以随意修改它,代码就退化成了面向过程编程风格的了。

在设计实现类的时候,除非真的需要,否则,尽量不要给属性定义 setter 方法。除此之外,尽管 getter 方法相对 setter 方法要安全些,但是如果返回的是集合容器(比如例子中的 List 容器),也要防范集合内部数据被修改的危险。

2. 滥用全局变量和全局方法

在面向对象编程中,常见的全局变量有单例类对象、静态成员变量、常量等,常见的全局方法有静态方法。单例类对象在全局代码中只有一份,所以,它相当于一个全局变量。静态方法一般用来操作静态变量或者外部数据。静态方法将方法与数据分离,破坏了封装特性,是典型的面向过程风格。

实际上,只包含静态方法不包含任何属性的 Utils 类,是彻彻底底的面向过程的编程风格。但这并不是说,我们就要杜绝使用 Utils 类了。

3.定义数据和方法分离的类

  也就是数据定义在一个类中,方法定义在另一个类中。

  

在生活中,你去完成一个任务,你一般都会思考,应该先做什么、后做什么,如何一步一步地顺序执行一系列操作,最后完成整个任务。面向过程编程风格恰恰符合人的这种流程化思维方式。而面向对象编程风格正好相反。它是一种自底向上的思考方式。它不是先去按照执行流程来分解任务,而是将任务翻译成一个一个的小的模块(也就是类),设计类之间的交互,最后按照流程将类组装起来,完成整个任务。我们在上一节课讲到了,这样的思考路径比较适合复杂程序的开发,但并不是特别符合人类的思考习惯。

面向对象编程离不开基础的面向过程编程。为什么这么说?我们仔细想想,类中每个方法的实现逻辑,不就是面向过程风格的代码吗?

面向对象,面向过程编程相关推荐

  1. 面向对象与面向过程编程

    从语言角度来讲: C是面向过程编程: C++一半是面向过程编程,一半是面向对象编程: Java是面向对象编程. 一.什么是面向对象编程与面向过程编程? 面向过程(Procedure Oriented ...

  2. Lawliet|面向对象/面向过程

    1.面向对象的程序设计 对象object --包含属性和行为,通过描述属性和行为来描述一个对象,是程序的基本单元. 对象=属性(特征)+方法(行为) 类class --具有相同属性和方法的对象的集合, ...

  3. 面向对象和面向过程~~编程思想

    对于编程思想来说,大意上可分为俩种,一种为面向对象,一种为面向过程. 面向过程,只追求运算逻辑.耦合度高(耦合度是指事物关联程度的紧密度).扩展力差 而面向对象是追求的是模块之间的互相协作,耦合度低, ...

  4. 通俗理解面向对象和面向过程+编程思想

    上午单位的C++大佬给我们分享了一些编程思想,开始介绍了面向对象和面向过程 面向过程是什么,就是对事件的过程进行编程,我们已知事件的发展过程,我们根据过程发展的节点去编程.整个编程是过程驱动,开始,然 ...

  5. 面向对象编程,面向切面编程,面向过程编程

    面向过程编程 面向过程编程(POP): 面向过程编程是以过程为中心的编程思想,从而分析解决问题所需要的步骤,然后编写函数来实现这些步骤,再依次调用这些函数.       比如把大象放进冰箱的步骤:打开 ...

  6. 什么是面向对象编程和面向过程编程

    一.先来两小段通俗解释 1.面向过程(Procedure Oriented 简称PO :如C语言):(流程图) 从名字可以看出它是注重过程的.当解决一个问题的时候,面向过程会把事情拆分成: 一个个函数 ...

  7. 什么是面向过程编程?什么是面向对象编程?

    可能有很多地小伙伴在开始学习编程语言或者是在学习完C语言之后在学习开始学习Java.Python等语言的时候,老师说的第一句话就是:"这门语言跟C语言不一样,它是面向对象的编程语言" ...

  8. 函数式编程、面向对象编程、面向过程编程

    函数式编程: 它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用.举例来说,现在有这样一个数学表达式. 1. 代码简洁,开发快速 函数式编程大量使用函数, ...

  9. 面向对象编程与面向过程编程

    文章目录 一.什么是面向对象编程? 二.面向对象的特点是什么? 1.在上面的例子中,面向对象的特性是怎么表现出来的呢? 2.什么时候适合使用面向对象 三.Js 中的面向对象 1.对象包含什么 2.一些 ...

最新文章

  1. STM8单片机GPIO口的驱动深度解析
  2. [Nand Flash]软件ECC
  3. Codeforces 1201
  4. Leetcode 349.两个数组交集(哈希容器unordered_set)
  5. 一个Camel Multicast组件聚合策略问题的解决过程
  6. Reactor模型和Proactor模型:同步IO与异步IO
  7. CDialogBuilder 类
  8. python程序-30分钟学会用Python编写简单程序
  9. 家有小女---徐子熙
  10. 关于取地址运算符以及指针10要点
  11. grasemonkey ajax页面,Greasemonkey 中使用 GM_xmlhttpRequest 如何在 https 页面中加载 http 资源?...
  12. 广东工业大学 Anyviewce C语言 习题七
  13. Revit初试水之点击按钮打开网页
  14. Photoshop(背景橡皮擦)轻松抠图(…
  15. SQL--数据的过滤和分组
  16. 商软A v4.7.2的序列号算法分析
  17. 元气骑士科学计算机造出来了在哪,元气骑士超级科学计算器怎么用_超级科学计算器输出方法技巧_3DM手游...
  18. unify最新版_unify-v2.5_Bootstrap4模板
  19. 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现(更新优化思路)
  20. mysql mapper分页_Mybatis通用Mapper和分页pagehelper

热门文章

  1. 欢迎关注我的微信公众号 “我是一个假的程序猿”
  2. 关于Unity中的光照(六)
  3. C#垃圾回收(GC)
  4. OpenResty 通过二级域名做跳转
  5. sqlserver 两个数据库同步
  6. SSAS : 使用.NET为SSAS编写自定义程序集
  7. 用JS实现一个定时间段的跳转
  8. 2、RabbitMQ-simplest thing(简单队列)
  9. JDBC进行简单的增删改查
  10. postgresql 查看数据库,表,索引,表空间以及大小