热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面向对象编程的最佳实践

面向对象编程的最佳实践原文:https://www.gees

面向对象编程的最佳实践

原文:https://www . geesforgeks . org/面向对象编程最佳实践-oop/

顾名思义,面向对象编程或 OOPs 是指在编程中使用对象的语言。面向对象编程的目的是在编程中实现真实世界的实体,如继承、抽象、多态、封装。OOP 的主要目的是将数据和对数据进行操作的函数绑定在一起,这样除了函数之外,代码的任何其他部分都不能访问这些数据。在本文中,我们将了解 OOP 的一些最佳实践。

SOLID 首字母缩略词被认为是最好的面向对象编程哲学。让我们理解这实际上意味着什么,以及其他一些重要的原则。


  1. 单一责任原则:按照这个原则,一个班应该只有单一的责任或者单一的工作或者单一的目的。我们应该严格避免使用广义类,因为整个实现是在同一个类中给出的。它还声明责任应该完全由类、模块或函数封装。

  2. 开/闭原则:根据这个原则,软件实体像类、模块、函数等。应该对扩展开放,而类应该对修改关闭。这意味着我们应该能够扩展一个类的行为,而不需要修改它。

  3. 利斯科夫的替代原则:根据这个原则,派生类或子类必须可以替代它们的基类或父类。这个原则确保任何父类的子类都可以代替它的父类使用,没有任何意外的行为。

  4. 界面分离原则:这是第一个适用于界面的原则。它类似于单一责任原则。它声明我们不应该强迫任何客户端实现一个与他们无关的接口。这个概念的主要目标是专注于避免胖接口,并优先考虑许多小的客户端特定接口。

  5. 依赖倒置原则:根据这个原则,高级模块/类不应该依赖于低级模块/类,而是应该依赖于抽象。我们还需要确保抽象不应该依赖于细节,但是细节应该依赖于抽象。

除了上述原则之外,面向对象编程中需要实践的一些其他重要实践有:
1。有意义的名字:在面向对象的概念中需要遵循的第一个实践是使用有意义的名字。此外,所有方法都必须遵循 camel case 命名约定。我们应该总是以一个类只负责一个特定任务的方式进行设计。如果一个类存在于执行一个以上任务的项目中,那么它应该被进一步划分为只承担一个责任。然而,当我们使用面向对象设计原则时,职责是预先定义的。例如,


  • 在构建器模式中,类创建对象。因此,我们使用名称作为构建器类。

  • 如果一个类充当两个功能之间的中介,那么它就被命名为中介。比如 CatMediator、DogMediator 等。

  • 如果我们使用消费者类型的设计,那么我们可以使用适配器后缀来解释类的责任。

2。更少的参数:我们总是需要以尽可能少的参数数量来编写方法。我们总是可以使用同一个类中其他对象的值,而不是多次要求用户输入相同的值。此外,参数太多的方法很难阅读。

3。避免全局和非确定性行为:每当我们使用 OOP 概念时,我们总是需要确保变量和对象的全局行为最小化。这可以通过一个创建动物猎豹的例子来可视化。动物的颜色在被创造出来后不会改变。因此,我们需要确保该属性不是全局的,并且是不可达的,以确保不会发生数据冲突。因此,需要避免使用全局变量或对象。我们可以在数据成员上使用封装的概念来解决这个问题。

4。避免静态方法:除了上述原因,静态方法必须尽可能避免,因为它们作为全局变量的行为方式几乎相似。此外,另一个需要避免的重要原因是,它们会与创建它的类建立秘密依赖关系,并且这种依赖关系在类的整个结构改变之前不会被观察到和显示出来。这使得可维护性变得更加困难。此外,静态方法不能单独测试。

5。避免使用构造函数:必须严格避免使用构造函数,因为从客户端的角度来看,它们会使程序可用性变得困难。为了使用由构造函数调用的程序,客户端需要记住参数的顺序,如果忘记了正确的顺序,对象初始化是不可能的。在构造函数需要多个参数的情况下,程序的可用性变得更加困难。另一种解决方案是建造者模式。

6。减少条件语句:条件语句的使用必须尽可能减少。在程序中使用太多的条件语句会增加复杂性,并且代码不能被重用。相反,我们可以利用接口和抽象类,并在不同的方法中实现条件逻辑,这些方法可以被重用,并且方法和类的单一职责得到维护。无论我们在哪里需要重用相同的条件,我们只需调用实现它的方法,而不是再次编写代码。

总之,在不同的程序和软件中使用的实践可能是不同的,并且主要倾向于最终的结果,但是上面提到的实践是其中一些被普遍遵循的,并且它使得程序更加有效、可读、可重用和易于维护。


推荐阅读
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 去掉空格的方法——Python工程师招聘标准与实践
    本文介绍了去掉空格的方法,并结合2019独角兽企业招聘Python工程师的标准与实践进行讨论。同时提供了一个转载链接,链接内容为更多相关信息。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
author-avatar
手机用户2502858307
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有