大型Flex应用程序的最佳实践?

时间:2010-03-23 13:02:42

标签: flex actionscript

我正在创建一个相当大的Flex应用程序,随着时间的推移,它开始向不可维护性方向发展。

我正在使用3个外部库项目,这些项目仍然足够小,可以保持可维护性和可重用性,但主要项目似乎无法保持井井有条。

部分问题似乎是我有大约30个对象继承自单个抽象超类型对象。所有子对象都具有逻辑组件和ui组件,它们彼此紧密集成。超类对象有大约60个共享方法和属性,其中大多数可以在任何子类中重写,其中一些应该在所有子类中重写。

为了增加复杂性,它们必须在它们之间进行通信,这通常是通过它们所在的容器对象。此外,主项目必须从这些中创建值对象,以便将它们发送到FlourineFX后端。用于存储和其他身份验证/授权逻辑。

我已经用旧的MS BASIC(前VB),Ada,VB(3到.Net 1),C ++和C#创建了更大的项目,没有这个问题。 (好吧,旧的VB倾向于这个问题,因为UI和逻辑之间的紧密集成)所以,有什么我缺少的,或者是否有任何我可以实现的最佳实践? (即使这意味着重写整行代码)

是的,这可能是this对话的延伸。

3 个答案:

答案 0 :(得分:2)

您是否在此项目中使用任何框架实现?一个框架将有助于模块化许多这种复杂性,并希望删除你在应用程序逻辑和视图之间的许多依赖关系。

我是RobotLegs框架的大力倡导者,该框架实现了mvcs模式,并提供了依赖注入,以便在整个项目中使用。还有其他人,例如pureMvcCairngormMate。环顾四周,看看哪个最适合您的项目。

听起来我觉得你真的需要做一个大型重构,这在这么大的项目中是一个冒险的过程。如果你努力维持它,那将是非常值得的。如果你要重构那么肯定会重构为一个框架。它可能是给你带来最大收益的领域(对于英国人来说是英镑;)

答案 1 :(得分:1)

詹姆斯·海伊的谈话启动是一个很好的,但对于巨大的应用程序,我会花时间测试并考虑内存管理,以回答/谈话中的一些建议。 RobotLegs很棒,但是我会担心它会产生“过度单一化”和潜在的内存管理问题(尽管我不得不承认我从未使用和避免使用机器人腿,因为它使用了单例)。 如果您正在考虑IoC和依赖注入(就像robotLegs提供的那样),我建议看一下swiz - 我真的很喜欢新的'instance-direction'swiz。我唯一的问题(在目前的测试版中)是他们有一些清理问题,虽然这些问题很容易解决(查看他们的来源,任何时候你从舞台上完全删除一个组件,你将不得不进行分析游戏并确保一切都得到清理 - 我们必须创建临时函数来删除更改者并销毁“显示列表bean实例”,直到他们修复了这些内容。

我领导的项目有很多你必须担心的潜在问题。我们的ERP应用程序有数千个模块,并且这些东西在客户端机器上运行数小时/天,不断加载和卸载模块。垃圾收集和内存管理是问题所在。

至于使用配偶,烦人的carhorn或pureMVC,我们两年前创建了自己的框架。它从cairngorm借用了一些想法,但总的来说,我的建议是在考虑垃圾收集的同时使用你可以快速学习,理解和教授的任何东西。我们的内部Model和View类现在使用swiz(用于新开发的模块),这使得可维护性和代码可读性非常流畅。

我希望我的抨击至少有所帮助。 祝你好运。

答案 2 :(得分:0)

您似乎只需要清晰地分离UI和域组件。查看Martin Fowler讨论的component guidelinesPresentation Patterns,尤其是Presentation Model

要将这些部分组合在一起,您可能需要使用像Spring ActionScript这样的IoC容器。这是一个非侵入式框架,允许您将图层分开。

不要让框架妨碍你。我看到大量滥用PureMVC和Cairngorm这样的框架主要是因为以全有或全无的方式应用它们。