首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向方面的编程是用词不当吗?

面向方面的编程是用词不当吗?
EN

Software Engineering用户
提问于 2011-06-19 20:36:45
回答 3查看 843关注 0票数 8

从我所了解到的关于“面向方面的编程”或“面向方面的软件开发”的所有知识来看,将其标记为编程范式或方法似乎是不准确的。据我所知,这不是编程的基本技术。

要明确“范式”和“方法论”的含义,请参考“美国传统词典”中的以下定义。将“面向对象编程”应用于每一种编程的效果与AOP的适用程度进行比较。

范例:一组假设、概念、价值观和实践,这些假设、概念、价值观和实践构成了社区共同看待现实的一种方式,尤其是在知识学科中。方法:在某一学科工作或从事调查的人所使用的一系列做法、程序和规则;一套工作方法。

“循证医学”符合范例的定义,但“子宫切除术基础医学”用词不当,因为问题空间太窄。

我的印象是,AOP可能被错误命名,因为基于“面向编程”后缀,AOP声称它既是一种范式,也是一种方法论,就像“面向对象编程”一样。

这两个术语(范式和方法)都表明了一种基本技术,我对方面的理解是一种解决狭窄问题范围的技术,其规模可能与Java的静态变量特性相当。

如果方面确实解决了一组狭窄的问题,而AOP不是用词不当,那么为什么不给所有编程技术赋予“面向方向的编程”后缀,例如“面向继承的编程”、“面向依赖的编程”或“面向范围的编程?”

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2011-06-19 21:11:44

我认为这是一个非常不确定的问题,因为在这种情况下,“方法学”、“范式”和"-oriented编程“的定义可能有点松散,但我将扮演魔鬼的提倡者,用”是的,这是个用词不当“。

即使您没有使用AOP或AOP特性来解决问题,您仍然会考虑这些方面--您可能会将它们作为文档编写到某个地方,或者使用代码生成器--不管怎样,方面的概念仍然存在。这也可以适用于任何范例;虽然它很难看,但您仍然可以在C中执行OOP。

那么,这难道不意味着AOP和OOP一样是一种方法论吗?我觉得不止是这样。

其原因是,一种方法为特定类型的问题提供了解决方案。您不会使用多个方法来解决概念问题,即使在更大的方案中可能使用两个或更多的方法。您可以使用OOP和过程性来编写数据输入UI,但是您只使用OOP来描述UI的抽象结构,并且只使用过程(更准确地说,是方法)来描述它的行为。作为问题的核心组成部分,方法学是相互排斥的-- AOP仍然可以参与用函数、OOP或过程代码解决问题。

AOP解决了一些问题,因为它减少了重复代码的数量,但这完全符合语言特性的任务描述。在概念上,您并没有真正解决任何实际问题,因为您将让编译器或运行时注入一些不必显式编写的代码;您只是使代码更有条理。声明“我的所有函数都将记录它们的开始和完成时间”并不是问题的解决方案;它只是一个问题陈述。

我认为,将它们简单地称为“方面”,作为一种语言特征更为合适。

票数 3
EN

Software Engineering用户

发布于 2011-06-19 20:58:58

所有的开发方法都只是思考代码组织的方法。每种开发方法可能产生非常不同的代码,也可能产生类似的代码。它们还可能需要库或语言特性来支持。

例如,在C++中,AOP通常使用特性类和编译时多态性来实现。它根本不是语言的“特性”--你构建了你的类型的各个方面,并将它们与模板结合在一起。

在像Java这样没有模板的语言中,您最终需要使用预处理程序(例如AspectJ)提供的专用语言特性,以便以面向方面的方式进行编程,仅仅因为原始语言没有实现真正的AOP本身的能力。

因此,AOP程序在C++中看起来将与Java非常不同--但最重要的是程序员对他或她的设计的思考,而不是代码的外观。

因此,AOP无疑是一种开发方法。

票数 5
EN

Software Engineering用户

发布于 2011-06-19 21:24:23

这里有两件事在起作用-- 程序设计范式软件开发方法

是的,面向方面的编程是一种编程范式.它利用某些语言特性来表示执行任务或提高代码可读性所必需的构造。这是一种程序员可以使用的技术。很多时候,您会看到AOP被用于侧面向对象编程,以消除横切关注点。但是,您可以实现面向方面的编程也是基于函数语言的。。它不一定是一个全新的范例,而是对OOP和函数式编程的扩展,以缓解已知的问题。我认为它应该被认为是一个范例的核心原因是它改变了你对问题的解决方案的思考方式。就像函数式编程、过程编程、逻辑编程和面向对象编程一样,对于同一个问题都有截然不同的解决方案,面向方面的编程为问题集增加了另一个解决方案。

不,面向方面的编程不是一种开发方法。开发方法是可以用来创建软件系统的框架。它规定了你执行的任务以及你如何完成这些任务,从需求到寿命结束。AOP对此只字未提。然而,一些编程范式已经导致了软件生命周期的开发方法学方法。有一种叫做面向对象的软件工程,由Ivar Jacobson开发的方法,它为设计和开发面向对象的系统指定了一个完整的生命周期,但是已经失宠了,取而代之的是UML和Rational。老实说,我不认为AOP会像OOP那样影响方法学。事实上,仅仅看一看趋势似乎就表明,方法应该超越用于构建软件的语言和范式。在设计和开发过程中,可能会使用面向AOP的建模技术和词汇表,但我没有看到以AOP为中心的完整方法。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/85349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档