7

我知道以前有人问过这个问题,但这是一年半前的事了,尽管我认为这可能是重新提问的时候了。我也认识到它可能被视为主观的,但我想有客观原因支持/反对 AOP。

我会对谁在软件开发中使用 AOP以及为什么为什么不使用它感兴趣。

我认为 AOP 是一个非常强大的范例,它可以使许多开发任务变得更容易。但是当谈到在现实世界的项目中使用 AOP 时,我的经验是许多决策者几乎不接受它。您是如何设法将 AOP 引入您的项目的?

2008 年 8 月之前提出的问题:您在生产软件中使用 AOP(面向方面​​编程)吗?

4

3 回答 3

1

我们本身并没有 100% 使用 AOP,但是是的,我们会在我们认为合适的时候使用(主要是 Spring AOP;它与 Spring 框架很好地集成了)

您是如何设法将 AOP 引入您的项目的?

好吧,分离出横切关注点,例如。跟踪方法调用。在 Spring AOP 中,您可以定义一个方面(运行时行为),它将应用于代码的“挂钩”部分。我的意思是“挂钩”,您应该能够将需要此行为的所有方法归类到一个共同的保护伞下。在运行时,这个伞形代码将获得您的方面定义的新行为。

于 2010-01-28T16:19:19.853 回答
1

我们的经理听取他们的架构团队的意见。

我们告诉他们,AOP 是实现跨关注特性的唯一解决方案:

  • 首先以合理的成本
  • 不会弄乱开发团队编写的功能代码
  • 现在和将来都不会忘记(与手动添加 try-catch 到数千种方法相比)
  • 无需培训或控制开发人员正在做什么(有些很棒,有些则一团糟)
  • 具有良好的可维护性

诚然,我们的项目是 20 名开发人员,持续了好几年,所以代码量很大。这是唯一的解决方案。

我认为关键是仅将其用于横切关注点。如果您可以使用常规代码对其进行编码,请这样做。但是如果它太大了,那么 AOP 是有吸引力和合理的。不限制AOP会导致一百个AOP小代码,很难理解。

是的,我们的软件是生产软件。数百家诊所依赖它!

于 2010-01-28T16:20:56.573 回答
0

如果您已经在项目中使用 Spring 框架,那么 Peakit 所说的 Spring AOP 很容易引入。

我首先为我们的工具项目添加了 AspectJ,该项目仅在内部使用,从未发布给客户。这有助于开发团队和管理层对该工具充满信心,并清楚地了解它可以为他们做什么。

于 2010-01-28T16:45:06.793 回答