Quali sono i vantaggi e gli svantaggi dell'utilizzo di un paradigma di programmazione orientato agli aspetti [chiuso]


10

Ok, ecco la domanda: quali sono i vantaggi e gli svantaggi dell'utilizzo di un paradigma di programmazione orientato all'aspetto.

I miei vantaggi e svantaggi finora:

vantaggi:

  • Completa l'orientamento agli oggetti.
  • Modula le preoccupazioni trasversali migliorando la gestibilità e la comprensibilità del codice.

Svantaggio:

  • Non il più semplice dei concetti da comprendere - non ben documentato come OO
  • OO va abbastanza lontano nella separazione delle preoccupazioni ...

Qualcuno vorrebbe sfidare qualcuno di questi / aggiungere il proprio?

Molte grazie, J


1
Un sacco di materiale didattico è già disponibile. Introduzione ad AOP - dotnetslackers.com/articles/net/… . Impara PostSharp (framework AOP) - programmersunlimited.wordpress.com/postsharp-principals
DustinDavis

Risposte:


3

Dal punto di vista di un programmatore il cui motto è "Keep It Simple Stupid", valutare l'utilizzo di tali modelli è pericoloso. Per ciò che tenta di realizzare, rende un programma molto più difficile da comprendere e di conseguenza più facile da interrompere.

Il genio della buona programmazione è ironicamente nella sua semplicità. Programmi complessi potrebbero funzionare, ma sono incubi quando si tratta di manutenzione, e se si considera che 2/3 del tempo trascorso da un programmatore viene posto nella correzione degli errori nei programmi, alla fine non paga.


2

La distribuzione della funzionalità fuori dal luogo di funzionamento aumenta la complessità e le problematiche dell'azione a distanza.

Considero tali approcci di progettazione come qualcosa in cui dovremmo evolvere perché il sistema lo richiede per un funzionamento pulito, non progettato all'inizio.


2

Vantaggi aggiuntivi (non tutti)

  • Riutilizzo di classi e aspetti, grazie alla modularità
  • Costi di codifica ridotti grazie alla modularità e al riutilizzo
  • Codice più breve grazie alla possibilità di avere un aspetto con il codice che verrebbe altrimenti implementato (sparso) in diverse classi
  • Capacità di aggiungere comportamento a una classe senza introdurre in essa un codice non correlato alla sua principale responsabilità
  • Capacità di ridefinire la semantica di metodi / classi senza far conoscere le classi client

svantaggi

  • Sovraccarico di runtime quando si utilizzano alcuni costrutti, ad esempio cflow

0

Svantaggio: scarso supporto della catena di strumenti: - debugger e profiler potrebbero non essere a conoscenza della "programmazione orientata agli aspetti" per questo motivo potrebbero lavorare sul codice come se tutti gli aspetti fossero stati sostituiti da un codice procedurale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.