实践中面向对象的优缺点

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【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

目录
相关文章
|
2月前
|
数据库
数据库五种基本运算
【5月更文挑战第15天】数据库的关系代数包括并、差、投影、笛卡尔积和选择等基本运算,以及交、连接、除、广义投影和外连接等扩展运算。在这些操作中,笛卡尔积通常最消耗资源,因为它会大幅增加元组数量和计算量。
82 4
数据库五种基本运算
|
26天前
|
安全 API 数据安全/隐私保护
在django应用中使用权限控制
【6月更文挑战第6天】本文介绍在Django REST Framework中,项目权限通过默认设置如AllowAny、IsAuthenticated等管理。通过定制权限策略,确保了API的安全访问。
75 1
在django应用中使用权限控制
|
15天前
|
C++ 异构计算
《百炼成金-大金融模型新篇章》––05.问题3:“大模型vs越来越大的模型”,模型sIzE的军备竞赛
百炼必定成金,新质生产力会催生新质劳动力,谨以此文抛砖引玉,希望与业内的各位朋友一同探讨如何积极拥抱并运用大模型技术,以应对和驾驭不断变化的市场环境,实现科技金融持续稳定的提质增效和创新发展,携手开启金融大模型未来新篇章。
|
18天前
|
人工智能 算法 Java
解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
|
1月前
|
数据采集 机器学习/深度学习 人工智能
AI在医疗诊断中的应用与挑战
【5月更文挑战第32天】本文探讨了人工智能(AI)在医疗诊断领域的应用及其面临的挑战。通过分析AI技术的优势和局限性,以及其在提高诊断准确性、降低医疗成本和促进个性化治疗方面的潜力,我们得出结论:尽管存在挑战,但AI技术在医疗诊断领域具有巨大的发展潜力。
|
2月前
|
运维 安全 前端开发
参与征文赢面试绿通资格!寻找热爱技术创作的你
发布征文,SHOW出你的故事,赢取面试绿通资格、官方流量权益、数码礼包、定制T恤等重重豪礼!
2656 298
|
19天前
|
存储 Java 程序员
揭秘!Java数据类型背后的“黑科技”
【6月更文挑战第13天】Java编程中的数据类型是构建程序的基础,分为基本数据类型(如整型、浮点型、字符型、布尔型)和引用数据类型(类、接口、数组)。内存管理通过垃圾回收自动化,减少错误风险。数据类型间支持自动和强制转换,但需注意精度和溢出。封装类(如Integer、Double)提供额外功能,使使用更灵活。示例代码展示了类型转换和封装类的运用。Java的数据类型设计确保了灵活性和效率,为编写高质量程序奠定基础。
|
7天前
|
弹性计算 运维 自然语言处理
OS Copilot测评体验
OS Copilot是Alibaba Cloud Linux基于大模型构建的操作系统智能助手,支持自然语言问答、辅助命令执行、系统运维调优等功能,帮助您更好地使用Alibaba Cloud Linux,提高Alibaba Cloud Linux的使用效率。本文主要介绍OS Copilot的产品优势、功能介绍及使用方法。
|
2月前
|
SQL 分布式计算 数据处理
奇思妙想的SQL|兼顾性能的数据倾斜处理新姿势
文章分享了在支付宝支付数据链路改造升级过程中,针对数据倾斜的优化实践新方法,在解决数据倾斜问题的同时,还能兼顾更优的计算性能!
|
2月前
|
分布式计算 监控 调度
给技术新人的ODPS优化建议
数据开发基本都是从陌生到熟悉,但是写多了就会发现各种好用的工具/函数,也会发现各种坑,本文分享了作者从拿到数据到数据开发到数据监控的一些实操经验。
96027 127