面向切面编程——为什么横切是主要原因
Aspect oriented programming - why cross cutting is the main reason
我目前正在处理一个需要在其中使用 Aspectj 的项目。在文档中,对于我写的每个方面,我都需要解释使用这个方面的原因是什么,而不仅仅是在主程序中编写代码。
一般来说,我只考虑代码重用或灵活性(意味着程序可以没有这个方面,但是这个方面会让程序更有效,比如检查一些可能在程序中造成麻烦的事情例如未来),但我认为这还不够。
在寻找更多原因时,我看到许多程序员写道 "cross cutting" - 这是什么意思,为什么它如此重要?
编辑:
这个问题是在我上学的时候问的,那时候 aspects 在项目中并不常见。现在,3 年后,在 Java (Spring) 中进行了大量后端编程,我可以用简单的例子来回答自己:存储库方面 - This annotation(@repository) is used on Java classes 直接访问 database.For 示例,当 class 中发生异常时,有该异常的处理程序,无需添加 try catch 块。它不局限于特定的 Class,不关心域逻辑,而是针对所有想要与数据库交互的 Classes - 这是一个交叉问题。
横切,在我看来,主要是关注点分离,也就是你可以把处理的代码分开,比如来自处理领域事物领域的代码的技术事物(例如日志记录、授权、交易等)。
但这为什么以及何时有用?
如果您的开发组织也将这些事情分开,即如果一些开发人员负责域编程领域而其他开发人员负责技术层,这将特别有用。
这样不同的人就可以在不同的地方写自己的代码,互不干扰。
如果同一个人编写不同的方面,这种关注点分离可能仍然有用,但在这种情况下并没有那么紧迫,至少没有那么紧迫,以至于你想搞乱 AspectJ,它引入了一些额外的复杂性。
我目前正在处理一个需要在其中使用 Aspectj 的项目。在文档中,对于我写的每个方面,我都需要解释使用这个方面的原因是什么,而不仅仅是在主程序中编写代码。
一般来说,我只考虑代码重用或灵活性(意味着程序可以没有这个方面,但是这个方面会让程序更有效,比如检查一些可能在程序中造成麻烦的事情例如未来),但我认为这还不够。
在寻找更多原因时,我看到许多程序员写道 "cross cutting" - 这是什么意思,为什么它如此重要?
编辑:
这个问题是在我上学的时候问的,那时候 aspects 在项目中并不常见。现在,3 年后,在 Java (Spring) 中进行了大量后端编程,我可以用简单的例子来回答自己:存储库方面 - This annotation(@repository) is used on Java classes 直接访问 database.For 示例,当 class 中发生异常时,有该异常的处理程序,无需添加 try catch 块。它不局限于特定的 Class,不关心域逻辑,而是针对所有想要与数据库交互的 Classes - 这是一个交叉问题。
横切,在我看来,主要是关注点分离,也就是你可以把处理的代码分开,比如来自处理领域事物领域的代码的技术事物(例如日志记录、授权、交易等)。
但这为什么以及何时有用?
如果您的开发组织也将这些事情分开,即如果一些开发人员负责域编程领域而其他开发人员负责技术层,这将特别有用。 这样不同的人就可以在不同的地方写自己的代码,互不干扰。
如果同一个人编写不同的方面,这种关注点分离可能仍然有用,但在这种情况下并没有那么紧迫,至少没有那么紧迫,以至于你想搞乱 AspectJ,它引入了一些额外的复杂性。