实践中面向对象的优缺点

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
函数计算FC,每月15万CU 3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【7月更文挑战第1天】本文介绍对象命名方案影响代码可读性。优点包括模块化、可重用性、可扩展性和易维护性。缺点包括类和对象识别的困难,学习曲线及可能的重用挑战。引用:《面向对象开发的陷阱》- 布鲁斯.韦伯斯特。

0 简介

面向对象方法中对象非常多,两种常见给对象命名的方案:
1) 类名全大写,对象和方法首字母小写;
2) 类名同上,对象和变量用下划线分隔。
3)匈牙利语符号添加类型标签,但可能分散注意力。

面向对象编程强调命名以反映对象角色(如ControlaController)。

image.png

1 名称很重要:命名方案

类、对象、实例变量和方法的标准命名方案非常重要。这里有两种选择。

  • 命名方案 1

类名:连接的单词,每个单词都以大写字母开头。

帐户、银行帐户、CashDispenser、SortedIntegerQueue
宾语、ivar、方法:串联的单词,第一个单词全部小写,后续单词以大写字母开头。

balance, share余额, count, quantityOfFives
列表、节点列表、帐户、newAcct
存款, 余额, 对象At, 分配货币

  • 命名方案 2

类名:连接的单词,每个单词都以大写字母开头。

帐户、银行帐户、CashDispenser、SortedIntegerQueue
对象:用下划线分隔的小写字母。

列表、node_list、帐户new_acct
Ivars:小写,用下划线分隔。

平衡、share_balance、计数quantity_of_fives
方法:串联词,第一个词全部小写,后续词以大写开头,

存款, 余额, 对象At, 分配货币

  • 匈牙利语符号

所有东西都有一个标识它的标签。此标记将追加到名称中,因此,例如,可以称 float 类型的名为 height 的 ivar height_i_f。同样,每个类都以大写字母“C”结尾。

该方案迫使您进入解决方案空间(编程语言),并分散您对问题空间的注意力。

名称至关重要,原因与它们在非面向对象语言中很重要的原因相同,但也因为面向对象编程的拟人化性质。

在面向对象语言中,通常使用类名和定冠词或不定冠词(Control,aController;视图,视图)。当找不到更合适的名称(列表、员工)时,这些名称很好。

2 面向对象分析和设计的优点:

模块化:面向对象允许您将复杂的系统分解为更小、更易于管理的部件或对象。随着时间的推移,这使得开发、测试和维护代码变得更加容易。

image.png

可重用性:由于面向对象强调模块化设计,因此您通常可以在不同的项目或应用程序中重用代码。这可以节省时间和精力,还可以提高代码的整体质量。

可扩展性:面向对象可帮助您设计可扩展的软件,这意味着它可以处理增加的负载或功能,而无需对代码库进行重大更改。

可理解易维护:通过使用标准的面向对象 技术和设计模式,易于维护。

下图示例了继承的例子:

image.png

3 面向对象分析和设计的缺点:

在 OOAD 中,任何时候都很难确定系统所需的所有必要类和对象。
我们的大多数项目开发团队都熟悉传统的分析和设计。

OOAD 提供了一种新型的项目管理方式。
这就是为什么可能很难在估计的时间和预算内完成解决方案的原因。

如果没有明确的重用过程,这种方法一般不会导致大规模的成功重用。
以下例子显示了泛化的关系:

image.png

4 小结 参考书目:

《面向对象开发的陷阱》 -- 布鲁斯.韦伯斯特 Bruce Webster

目录
相关文章
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
1437 3
|
7月前
|
人工智能 自然语言处理 关系型数据库
DMS+AnalyticDB助力钉钉AI助理,轻松玩转智能问数
DMS+AnalyticDB助力钉钉AI助理,轻松玩转智能问数
266 3
|
10月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
1224 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
关系型数据库 分布式数据库 数据库
基于PolarDB Ganos的实时时空计算:电子围栏篇
文章着重介绍了PolarDB Ganos如何应用于实现实时电子围栏计算。这是一种依赖于位置技术来创建虚拟地理边界的解决方案,广泛应用于交通安全、应急管理、营销推广等多个领域。通过与阿里云实时计算Flink版产品的集成,PolarDB Ganos能够高效地进行空间计算和数据分析,显著提高了地理围栏应用的实时性和准确性。文章还提供了使用Ganos进行电子围栏计算的实际步骤、性能测试及优化建议,并强调了PolarDB Ganos在提高数据处理效率和降低成本方面的优势。
|
负载均衡 监控 算法
|
资源调度 JavaScript 索引
Vue2开发插件并发布到npm
这篇文章介绍了如何使用Vue 3、TypeScript和Vite开发一个下拉框组件`vue-amazing-selector`,并将其发布到npm,包括了项目的创建、组件开发、配置webpack、编写组件代码、导出组件、编译、npm包初始化、发布流程以及在项目中使用该插件的完整步骤。
227 0
Vue2开发插件并发布到npm
|
弹性计算 关系型数据库 持续交付
ROS 模板指南
资源编排服务ROS(Resource Orchestration Service)是阿里云提供的一项简化云计算资源管理和采用基础设施即代码(IaC)设计理念的自动化部署服务。开发者和管理员可以编写模板,在模板中定义所需的阿里云资源(例如:ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,从而实现云上资源的自动化部署。
1425 4
ROS 模板指南
|
机器学习/深度学习 监控 算法框架/工具
使用Python实现深度学习模型:人脸识别与人脸表情分析
【7月更文挑战第18天】 使用Python实现深度学习模型:人脸识别与人脸表情分析
490 2
OOP的缺点有哪些
【7月更文挑战第17天】OOP的缺点有哪些
365 2