Dove conservare le formule e le "costanti" della formula?

2

Voglio implementare un sistema di gestione stipendi basato su database utilizzando CSharp. L'ho già fatto una volta, ma l'implementazione fa schifo quindi voglio farlo di nuovo e farlo bene.

Il mio primo pensiero è quello di creare un calcolatore di classe statica che possa contenere semplicemente tutte le formule, un metodo privato per formula. Un metodo pubblico principale "Calcola" che accetta come parametro un oggetto di tipo Employee ref. Prendi i dati dall'oggetto, applica le formule e imposta le proprietà degli oggetti, ma la mia ipotesi è che probabilmente farebbe schifo.

Una classe con un gruppo di proprietà per contenere tutte le "costanti (algebriche)". Una classe che contiene e gestisce l'oggetto. Questa classe deserializzerebbe la classe tenendo tutti i dati e serializzerà all'uscita dall'app. La calcolatrice userebbe questa classe per ottenere dati e applicare le formule per apportare modifiche al "Dipendente". Queste "costanti" potrebbero essere modificabili dall'interno dell'applicazione.

Pensieri?

Non sono bravo quando si tratta di strutturare le applicazioni e molte delle mie implementazioni finiscono per succhiare ... Mi rendo conto che lo odio quando devo apportare modifiche all'applicazione.

Grazie

    
posta Orvel 04.11.2015 - 15:07
fonte

1 risposta

-1

Ecco alcuni suggerimenti per aiutarti a pensare in nuove direzioni:

Innanzitutto, sembra che tu stia cercando di legare la tua funzionalità di calcolo in modo specifico alla tua classe Employee. Sembra inutilmente specifico. Perché il tuo calcolatore di classe dovrebbe preoccuparsi se l'oggetto su cui sta lavorando rappresenta un dipendente o qualcos'altro? Questo sembra un luogo naturale in cui utilizzare un'interfaccia per definire la funzionalità di cui la tua calcolatrice ha bisogno per applicare una formula, senza preoccuparsi di ciò che rappresenta effettivamente la cosa che implementa l'interfaccia. E la funzionalità di cui ha bisogno la tua calcolatrice è probabilmente piuttosto semplice: ha solo bisogno di essere in grado di ottenere valori con nome e, eventualmente, anche di impostare valori con nome. Se hai una formula come:

annualVacationDays = 10 + yearsOfService + bonusDays

allora sembra che potresti aver bisogno di un'interfaccia Calculable che ha una funzione come valueForkey(key) dove key è una stringa, in modo che la calcolatrice possa recuperare i valori per yearsOfService e bonusDays per fare il suo lavoro. E l'interfaccia dovrebbe anche avere un metodo setValueForKey(value, key) in modo che possa memorizzare il risultato della formula per la chiave annualVacationDays . Ma le uniche cose che la calcolatrice deve fare il suo lavoro sono quei metodi - non dovrebbe preoccuparsi di quale tipo di oggetto sia.

Secondo, dato che il punto di OOP è che puoi combinare i dati e le operazioni su quei dati, separare le formule dalla classe che li applica non ha molto senso per me . Lascia che ciascuna formula sia in grado di applicarsi a un oggetto che implementa l'interfaccia Calculable .

    
risposta data 14.08.2018 - 22:01
fonte

Leggi altre domande sui tag