come gestire le nuove variabili private introdotte in classe?

0

Ogni volta che voglio aggiungere una nuova funzionalità, introduco una nuova variabile privata nella classe. Dichiaralo appena sopra la prima definizione del metodo. lascia un piccolo commento. Impostalo in un determinato metodo. E poi usa questo valore impostato in un altro metodo.

Ora i possibili problemi che si presentano sono, non copro tutti i possibili casi in cui modificare il valore di questa variabile e solo notare un bug in esso durante il tentativo di vari possibili flussi utente del software. Esiste un modo per legare questo valore ad alcuni tipi di trigger in modo da conoscere tutte le possibili situazioni in cui modificare il suo valore? Sto usando Javascript.

Ad es. Creo un messaggio di stato per modificare un record DB esistente. Se l'aggiornamento non è riuscito su REST HTTP, ho impostato lo stato. Ora ho dimenticato di reimpostare lo stato quando non clicco sul pulsante di aggiornamento e invece di selezionare un altro record per l'aggiornamento.

Qual è il modo migliore per gestire tali nuove variabili private? Come gestire il loro stato? qual è il modo migliore di ingegneria del software per prevenire tali errori?

    
posta zcqwevb 18.03.2014 - 11:51
fonte

2 risposte

4

Il modo migliore è seguire la separazione delle preoccupazioni, il che significa limitare l'ambito della nuova variabile alla più piccola unità possibile.

Se la nuova informazione deve essere veramente un nuovo membro della classe, e la classe è troppo grande per poterla leggere e trovare facilmente tutte le altre circostanze in cui devi affrontare il nuovo campo, allora anche la classe grande, punto. Rifattalo in classi più piccole, in modo che solo una di esse debba occuparsi del nuovo campo.

Se riesci a trovare un modo per non memorizzare le informazioni indefinitamente, è ancora meglio trattarlo come parametro, informazioni di callback, attributo di sessione ecc.

    
risposta data 18.03.2014 - 11:55
fonte
0

Esattamente ciò che ha detto Kilian

La tua variabile privata di solito fa parte di una funzione

Ci sono due modi:

  1. Composizione

    • ExistingClass istanzia new FeatureClass() che contiene la funzione insieme alla variabile privata
    • ExistingClass osserva eventi attivati da featureClassInstance - .onEvent(...)
    • Qualsiasi OtherExistingClass può fare lo stesso
  2. Tratti, Mixin o Decoratori

    • La variabile privata è bloccata in un contenuto FeatureTrait , i cui metodi saranno uniti in ExistingClass
    • OtherExistingClass può utilizzare lo stesso FeatureTrait
    • sia ExistingClass che OtherExistingClass sono ora in un contratto con il tratto e sono responsabili della gestione di qualsiasi specifica introdotta da FeatureTrait , quindi incapsulamento più debole
    • se utilizzi un linguaggio digitato in modo dinamico, rischi la variabile privata e la collisione del nome del metodo con altri tratti
    • (discutibilmente) i test che scriverai sono da qualche parte tra l'integrazione e il test delle unità, a causa dei costi di installazione e di smantellamento
risposta data 22.11.2017 - 21:44
fonte