Supposing a critical part of an application's business rules are dependent on a given behavior, but that coding this behavior explicitly will clutter your code, would you rely on encapsulating it in an aspect with PostSharp (or with any other aspect framework for that matter)? Is that a "safe" and "wise" option, or is it always better to explicitly code the behavior no matter how it will clutter the code? What about the maintainability of such a solution?
1
There are 1 best solutions below
Related Questions in POSTSHARP
- Can't build a project with Postsharp 4.1.14
- Including additional properties using PostSharp, Log4Net and Unity
- Problems using PostSharp with ILMerge
- Unhandled exception (4.1.15.0, postsharp.4.0-x86.exe, CLR 4.0.30319.378758, Release): PostSharp.Sdk.CodeModel.AssemblyLoadException
- pdb file is mising after PostSharp
- PostSharp OnMethodBoundaryAspect - access parameters types from constructor
- PostSharp: Applying Advice to External Type
- How can I configure ReSharper to accept [Required] (from PostSharp) as equivalent to [NotNull] (or vice versa)?
- PostSharp cannot use anonymous types with > 127 properties
- Restrict method parameter of string type to const field from one given class
- Access result of Task<T> without knowing T - postsharp
- Add PostSharp Aspect to System.IO namespace?
- How to validate the object state in method or property entry using PostSharp?
- How to change instance at OnInstanceConstructedAdvice?
- How to find a class tagged with postsharp aspect via reflection
Related Questions in ASPECTS
- Can I get WebApi to work with IoC Aspects/Interceptor
- What are the drawbacks of the Facade design pattern?
- Help create AspectJ equivellent to @PrePersist and @PreUpdate for audit use case
- JPA and database Flex fields
- Using aspect.around, but checking for methods calling each other
- Is there a data binder using aspects and annotations?
- PostSharp & Critical Code Parts
- Is AspectF (a Fluent Aspect Framework) an AOP-like design that can be used without much concern?
- Polymorphism in AspectJ
- How do you globally modify page output sent from IIS without modifying the page source?
- Any PostSharp alternative?
- Why is this Spring Aspect not printing as it should with method parameter?
- Can I enable/disable aspects from an external application?
- AspectJ Handling of Multiple Matching Advices
- How to implement aspects without using Springs as well as annotations?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
It is not recommend putting business rules or business logic in aspects. It defeats the purpose of AOP. Business rules/logic are not cross cutting concerns. If you consider part of your business logic as clutter then you should use common OOP practices to abstract it or extract it into it's own method(s).
You can, of course, move it into an aspect, but what would the goal be? To reduce clutter? That isn't acceptable to me. Use aspects to remove clutter not related to business logic so that your business logic is clear. If your business logic is cluttered then you need to refactor.
PostSharp vs other AOP frameworks: If you do end up putting "critical code" into an aspect, then PostSharp will be the best framework to get the best performance. Runtime frameworks like IoC contains that do dynamic interception will not perform as well as statically compiled code. Plus, PostSharp has so many optimizations that it performs based on the code you write that no other framework can match.