Questions tagged «aspect-oriented»

6
面向方面的编程:什么时候开始使用框架?
我只是看着这个演讲由Greg Young的警告人们KISS:保持简单愚蠢。 其中一个建议,他的事情是做面向方面编程,一个也不会需要一个框架。 他首先提出了一个严格的约束条件:所有方法只能使用一个参数,并且只能使用一个参数(尽管他稍后通过使用部分应用程序来放松此参数)。 他给出的示例是定义一个接口: public interface IConsumes<T> { void Consume(T message); } 如果我们要发出命令: public class Command { public string SomeInformation; public int ID; public override string ToString() { return ID + " : " + SomeInformation + Environment.NewLine; } } 该命令实现为: public class CommandService : IConsumes<Command> { private IConsumes<Command> …


3
使用AOP是否可以更好地解决某些问题?
我遇到过面向方面编程的想法,对此我有些担忧。 基本想法似乎是,我们要处理无法使用对象很好地模块化的跨领域关注点,并将其模块化。一切都很好。 但是AOP的实现似乎是从模块外部修改代码的实现。因此,例如,可以编写一个方面来更改当将特定对象作为参数传递给函数中时发生的情况。这似乎直接与模块的想法背道而驰。我应该不能从该模块外部修改模块的行为,否则模块的整个观点都将被推翻。但是方面似乎正是这样做的! 基本上,方面似乎是代码修补的一种形式。对于一些快速的黑客攻击可能很有用;但是,作为一般原则,也许这不是您要执行的操作。在我看来,面向方面的编程似乎是错误的做法,并提出了一般的设计原则。 AOP是一种好习惯吗?使用AOP是否可以更好地解决某些编程问题?



4
异常处理是否是跨领域的关注点?
我对异常处理和日志记录的关注并没有多大区别,因为两者都是跨领域的关注。你怎么看?它不应该单独处理而不是与方法实现的核心逻辑交错处理吗? 编辑:我想说的是,在我看来,方法实现应只包含成功执行路径的逻辑,而异常应在其他地方处理。这与已检查/未检查的异常无关。 例如,一种语言可以通过使用如下结构以完全检查的方式处理异常: class FileReader { public String readFile(String path) { // implement the reading logic, avoid exception handling } } handler FileReader { handle String readFile(String path) { when (IOException joe) { // somehow access the FileInputStram and close it } } } 在上述概念性语言中,程序在没有FileReader 处理程序的情况下将无法编译,因为FileReader 类的readFile不会引发异常。因此,通过声明FileReader 处理程序,编译器可以确保对其进行处理,然后程序可以进行编译。 这样,我们就可以同时处理已检查和未检查的异常问题:健壮性和可读性。

3
字节码编织与Lisp宏
我一直在阅读人们为Java和C#等语言编写的库,这些库利用字节代码编织来完成诸如拦截函数调用,插入日志记录代码之类的事情。我还一直在阅读Lisp / Clojure宏试图更好地了解如何利用它们。我对宏的了解越多,它们似乎提供的功能与字节码编织库相同。功能是指在编译时处理代码的能力。 我一直在查看的库示例包括AspectJ,PostSharp和Cecil。 有什么可以做的而不是另一种?他们实际上解决了相同的问题,还是我在比较苹果和橙子?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.