gpt4 book ai didi

oop - 使用面向对象编程进行进度openge的利弊

转载 作者:行者123 更新时间:2023-12-04 00:08:54 25 4
gpt4 key购买 nike

我理解使用面向对象编程作为一个概念的利弊。我正在寻找的是专门使用 oo in progress/openedge 的利弊。是否有我需要考虑的挑战?语言的某些部分是否与 oo 不匹配?之类的。

编辑:使用 10.2b

最佳答案

我会给你我的意见,但请注意,我可能是那里最大的 Progress 仇恨者。 ;) 也就是说,我已经在 OOABL 中编写了几个中型项目,所以我在该领域有一些经验。这些是我写的一些东西,只是为了让你知道我不是在说我的帽子:

  • 客户端和服务器的 STOMP 协议(protocol)框架
  • 一个简单的 ORM 模仿 ActiveRecord
  • 我所在组织的 ABL 编译器接口(interface)(后端和前端)
  • 用于构建 Excel 和 Word 文档的库(使用 MS Office 2003 XML 模式将它们序列化;没有那些愚蠢的 COM 东西)
  • 可以使用多个 strategies 发送电子邮件的电子邮件客户端

  • OOABL 优点 :
  • 如果您绝对必须编写 Progress 代码,那么它是创建可重用代码的绝佳选择。
  • 清理现有程序代码库的好方法

  • OOABL 缺点 :
  • 类层次结构是有限的;你不能创建继承的(子)
    10.2B 中的接口(interface)(我认为这将在 11 中添加)。年长的
    OpenEdge 的版本还有其他限制,例如缺乏抽象
    类。这限制了您创建干净的 OO 设计和 的能力。会
    伤害你
    当你开始构建重要的东西时。
  • 错误处理很糟糕 - CATCH/THROW不会让你丢掉你的习惯
    错误并强制调用者捕获它们。向后兼容
    阻止这进一步发展,所以我怀疑它会永远改善。
  • 对象内存占用大,且没有AVM调试
    追踪原因的工具(一定要喜欢这些封闭系统!)
  • 直到 10.2A 才存在垃圾收集,而且仍然存在
    即使在 11 中也有一些错误(请参阅官方 OE 论坛以获取一些示例)
  • 网络编程(带套接字)是一个 PITA - 你必须运行一个
    单独的持久过程来管理套接字。我认为事件
    OOABL 中的编程通常是一种 PITA;我记得收到了很多
    关于“窗口环境”或类似效果的错误
    在尝试使用它们时。 PUBLISH/SUBSCRIBE也没有用,
    如果没记错的话。
  • 根据您的环境,代码审查可能很困难,因为大多数
    Progress 开发人员不做 OOABL,因此可能无法理解您的代码
  • 如果上述观点属实,您可能会面临来自以下方面的积极阻力
    因必须学习新知识而感到威胁的根深蒂固的开发人员
    东西

  • OO 就是构建小的、可重用的部分,这些部分可以组合成一个更大的整体。 OOABL 的一个大问题是“ABL”部分因其粗糙的数据结构和缺乏枚举器而拖累你,这使你无法真正用它构建真正漂亮的东西。不幸的是,由于它是一种封闭的语言,你不能只是回避你的手,并在外部为其创建自己的新数据或控制结构。

    现在,理论上可以尝试使用 MEMPTR、固定数组 (EXTENT) 和 WORK-TABLE 来构建其中的一些东西。然而,我在10.1C中尝试过,由于缺乏接口(interface)继承和抽象类,设计失败了,正如我所料,性能非常糟糕。后半部分可能只是由于我的能力较差,但我怀疑这是一个几乎无法克服的实现限制。

    如果您绝对必须在 OpenEdge 中编码,那么底线是使用 OOABL - 它比程序 ABL 更好,并且在每次迭代发布 OpenEdge 后,粗糙的边缘会变得稍微平滑一些。然而,它永远不会是一门优美的语言(OO 或其他)。

    如果您想学习正确的面向对象编程并且不受 ABL 的限制,我强烈建议您查看一种将对象视为一等公民的语言,例如 Ruby 或 Smalltalk。

    关于oop - 使用面向对象编程进行进度openge的利弊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10287119/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com