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

本文涉及的产品
性能测试 PTS,5000VUM额度
可观测可视化 Grafana 版,10个用户账号 1个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 【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 团队技能不足

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

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

目录
相关文章
|
8月前
|
测试技术 项目管理 Python
软件测试|探索多态在程序设计中的奇妙应用与巧妙技巧!
软件测试|探索多态在程序设计中的奇妙应用与巧妙技巧!
|
5月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
84 9
|
8月前
|
程序员 计算机视觉
程序员的“防御性编程”
最近都在聊程序员要做好“防御性编程”,"防御性编程"的概念从之前的“保护程序”一下子变成了现在的“保护程序员”,一字之差,千差万别。
程序员的“防御性编程”
|
机器学习/深度学习 安全 程序员
《网络安全0-100》自学误区和陷阱
《网络安全0-100》自学误区和陷阱
80 0
《网络安全0-100》自学误区和陷阱
|
设计模式 消息中间件 Dubbo
设计模式 - 漫谈软件编程背后的系统化思维
设计模式 - 漫谈软件编程背后的系统化思维
127 0
|
存储 编译器 Linux
C生万物 | 窥探数组设计的种种陷阱
数组在设计的时候为何会出现那么多纰漏?数组越界是如何导致的?,我们来一探究竟🔍
71 0
C生万物 | 窥探数组设计的种种陷阱
|
算法
解决这三个误区,才能真正学好算法
记录一下最近学习算法的一些思考
114 0
|
消息中间件 安全 程序员
关于防御性编程,你应该知道的事
提起编程,对于程序员同学而言并不陌生,关于防御性编程相信大家也有所耳闻,但是它具体包括哪些内容呢?
关于防御性编程,你应该知道的事
|
消息中间件 运维 Dubbo
源码阅读的方法、误区以及三种境界
源码阅读的方法、误区以及三种境界
|
小程序 JavaScript 前端开发
兴趣编程六步法
欢迎来到我的小院,在当今时代,科技力量代表一个国家的核心竞争力,其中计算机编程技术尤为重要,可以从中学习逻辑分析能力,业务抽象能力,专注思考能力等等,美国等一些发达国家,已经把编程教育纳入小学课本中,所以我们也需要加快步伐,掌握编程的一些理念和实战技巧。
兴趣编程六步法