面向对象方法的实践时可能的陷阱

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
可观测可视化 Grafana 版,10个用户账号 1个月
性能测试 PTS,5000VUM额度
简介: 【7月更文挑战第2天】本文介绍面向对象开发面临的问题:过度复杂性导致项目失败,如在库存管理系统中等。因此简化设计、合理使用继承、现实期望、适当选择设计模式和工具、以及提升团队技能是成功的关键。

1 主要问题:过度复杂性

许多开发团队在采用面向对象方法时,倾向于创建过于复杂的类和对象结构。
比如一个企业在开发一个库存管理系统时,设计了过于复杂的类层次和对象关系。结果是系统的开发时间大大延长,维护变得非常困难,最后项目失败。
image.png

这样的例子清楚地展示了过度复杂性如何导致项目失败,强调了简化设计的重要性

过度的对象结构和层级关联,这会导致开发、维护和理解代码变得更加困难,进而影响项目的成功。

2 不合理的继承

继承是面向对象编程中的一个强大特性,但不合理的继承层次会导致代码的脆弱性和维护困难。
比如你公司在开发一个客户管理系统时,创建一个深层次的继承结构。
这样每次修改基类的一个小特性都会影响到多个子类,导致系统脆弱且难以维护。

image.png

开发人员应当慎重使用继承,尽量优先考虑组合而非继承。

3 不切实际的期望

面向对象技术经常被过度宣传,导致管理层和开发团队对其期望过高。使用 OO 面向对象的原因在于,OO 以一种特定的方式抽象数据(即:将对结构上运行的函数与该结构捆绑在一起)。

如果一个大型项目的管理层认为面向对象技术能解决所有问题,因此忽视了合理的项目管理和需求分析,最终项目无法按时完成且质量不佳。

因此团队应当保持现实的期望,认识到面向对象技术并不能解决所有问题,依然需要合理的项目管理和设计实践。

比如任何领域模型都不能很好地表达为对象的东西都不适合OO方法。
例如,一些数学(统计、逻辑等)或技术(例如编译器)程序在不同的风格中可以更好地表达。
对于业务工作流应用程序,OO 和自定义 DSL 技术的结合非常有效,使我们能够对业务流程中发生的各种关系和事件进行建模.

4 设计模式滥用

设计模式是解决常见设计问题的经验总结,但滥用设计模式会导致不必要的复杂性。 最常见的设计模式错误之一是过度使用它们。这意味着在不需要的地方应用模式,或者在同一项目中使用过多的模式。过度使用模式会使代码变得复杂、混乱且难以更改。

image.png

开发人员应当根据具体问题选择合适的设计模式,而不是盲目套用。

比如一个hello world演示程序,使用RAD设计。
比如团队在开发一个电子商务平台时,试图在每个模块中都使用设计模式,结果是代码变得过于复杂且难以理解,导致项目进度延迟。

又比如工厂模式的滥用。如果项目有大量的工厂模式,因为有些人认为您可能将对象 A 用于本地实现,将对象 B 用于远程实现,并且它是通过工厂抽象的(这是一件明智的事情)。

但是,“远程”实施从未被需要或实施,甚至从未预见到未来。如此不太熟练的工程师开始将这种模式用于许多其他事情,就像千篇一律一样,这将导致浪费和设计滥用。

5 开发工具和技术的不成熟

20世纪90年代的开发工具和技术尚未完全成熟,导致在实际应用中存在诸多问题。即使现在安全漏洞也是呈上升趋势;最近的一项研究估计,96% 的 Web 应用程序至少包含一个严重漏洞。

比如开发一个Web 应用程序,您需要一个技术堆栈——一组编程工具和语言。选择合适的技术堆栈对于应用程序的性能、可扩展性和可维护性至关重要。然而,随着语言、框架和库环境的不断变化,做出正确的决定可能具有挑战性。

在选择合适的技术堆栈时,必须考虑许多方面,包括项目要求、团队能力、社区支持和未来扩展的潜力。在选择最适合项目要求的技术时,应考虑开发时间、可伸缩性和可维护性等因素

因此在选择和使用开发工具时,应当考虑其成熟度和适用性,不要盲目追求最新技术。

一个团队使用了当时最新的面向对象开发工具,但该工具不够成熟,存在许多Bug和性能问题,导致开发过程非常痛苦,项目也将因此失败。
例如在开发数据密集型应用程序时,选择一种能够有效管理海量数据集的技术至关重要。

保持竞争力需要跟上最近的发展和趋势。几年前流行的技术性产品可能已被提供更好性能、可扩展性和可能的安全措施的新产品所取代。

因此,建议在为您的 Web 开发项目选择技术堆栈之前进行广泛的研究。

6 团队技能不足

面向对象开发需要开发团队具备一定的技能和经验,而许多团队在这方面存在不足。
如果公司决定全面转向面向对象开发,但团队成员大多数没有相关经验,缺乏必要的培训和指导,结果是开发出的系统质量低下,项目失败。

因此加强团队培训和教育,了解团队将要使用的开发工具和方法,提升团队的面向对象开发能力,是成功实施面向对象开发的关键。

目录
相关文章
|
5月前
|
测试技术 项目管理 Python
软件测试|探索多态在程序设计中的奇妙应用与巧妙技巧!
软件测试|探索多态在程序设计中的奇妙应用与巧妙技巧!
56 0
|
2月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
57 9
|
8天前
|
JavaScript 前端开发 Python
探索编程的本质:从代码到哲学的奇妙旅程
该文档指导如何安装NodeJS及PyExecJS。首先从官网下载并安装NodeJS,验证安装是否成功可通过命令`node --version`检查版本。PyExecJS则通过`pip install PyExecJS`进行安装。安装后,通过Python导入`execjs`模块可查看执行JS的环境,并使用`eval`和`compile`函数执行JavaScript代码或编译JS脚本。具体案例展示了简单的JS执行与环境选择方法。
10 1
|
2月前
|
算法 安全
【 第十二章】软件设计师 之 面向对象设计与结构化分析设计
软件设计师 之 面向对象设计与结构化分析设计备考资料
【 第十二章】软件设计师 之 面向对象设计与结构化分析设计
|
5月前
|
设计模式 IDE Java
谈谈过度设计:因噎废食的陷阱
本文探讨了设计模式在软件开发中的应用和争议,指出设计模式虽有助于应对软件复杂性,但在互联网快速迭代的背景下,可能会导致过度设计,增加理解和修改成本。文章分析了设计模式的缺陷,如开闭原则可能导致不易修改,最小知识原则可能导致理解困难。同时,文章强调了设计模式的重要性,指出它们可以提高代码的可理解性和模块的可维护性,并提出了通过函数式设计模式进行优化的示例。作者认为,设计模式需要随着业务演进而不断演进,同时提倡使用可调试的模块和模式演进来促进系统的成长性。文章最后提醒读者,要根据实际情况选择是否使用设计模式,避免因噎废食。
|
5月前
|
存储 测试技术 数据处理
【软件设计师备考 专题 】定义软件需求的方法:结构化分析与面向对象分析
【软件设计师备考 专题 】定义软件需求的方法:结构化分析与面向对象分析
115 0
|
12月前
|
敏捷开发 算法 安全
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
|
Java 领域建模
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
|
Java 测试技术
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
|
测试技术
再论纯软件测试方法
再论纯软件测试方法
51 0
下一篇
无影云桌面