Qual è un buon modo per strutturare il codice che deve "rattoppare" il comportamento di qualche altra classe?

0

Sto cercando di implementare parti delle regole di progettazione di ASME BPVC. È un codice molto, molto vecchio che è cresciuto da oltre cento anni. In quanto tale, copre molti casi di carico diversi, molte configurazioni di componenti differenti e ha percorsi diversi a seconda della presenza di determinati criteri di progettazione. La maggior parte delle cose sono semplici procedure matematiche, ma ogni passaggio deve essere mostrato all'utente finale in modo che possano verificare i calcoli.

Molte parti del codice di progettazione sono requisiti di progettazione procedurale, come "procedura 10: Do X, poi Y, per determinare Z" dove Y dipende da X e Z dipende da Y. Successivamente, una sottosezione leggi "Per la procedura 10 con caricamento ciclico, usa gamma * invece di gamma per calcolare Y *, e sostituisci Y * per Y quando calcoli Z"

Lo scenario sopra riportato è una situazione semplificata - in alcuni casi, parte da un'equazione e ne sostituisce una nuova se sono presenti determinate condizioni di progettazione e sostituisce nuovi valori in altre equazioni.

Sto cercando di incapsulare queste equazioni nelle proprie classi per creare solo un singolo punto di cambiamento, perché il tempo tra le nuove regole rilasciate e il codice testato nel tempo deve essere in atto è di circa 3 mesi. Poiché la codifica non è il mio lavoro a tempo pieno, questa applicazione deve essere molto manutenibile e facilmente modificabile.

Attualmente, l'analisi principale è archiviata in una classe. Il codice che rattoppa il suo comportamento è una sottoclasse. Ma mi sono imbattuto in un problema in cui due diverse sottosezioni possono modificarsi a vicenda così come la classe principale, quindi le due classi si troverebbero allo stesso livello nella gerarchia delle cose.

Qualche consiglio su come strutturare questo? La lingua non è importante, solo la velocità e la precisione.

    
posta user2785724 11.05.2017 - 05:42
fonte

1 risposta

4

Ciò che descrivi sembra un caso d'uso per Pattern di strategia . Questo approccio consente di separare le diverse procedure in parti separate di codice (metodi o op-scope) e di applicarne l'una o l'altra in base alla situazione. Le dipendenze tra diverse fasi potrebbero essere gestite dalla Catena di responsabilità .

    
risposta data 11.05.2017 - 10:41
fonte

Leggi altre domande sui tag