Qual è il significato di cambiare lo stato del programma?

1

Leggevo delle pratiche comuni per denominare funzioni e variabili. La maggior parte dei programmatori esperti dice che il verbo deve essere usato quando una funzione cambia lo stato del programma e il nome deve essere usato se la funzione viene utilizzata per restituire un determinato valore.

UPDATE : controlla link e link Entrambi gli autori hanno un punteggio di reputazione di poche migliaia e lo raccomandano.

Non sono abbastanza chiaro sul significato di cambiamento nello stato del programma . Cosa significa?

    
posta Sachin Divekar 24.02.2016 - 13:20
fonte

2 risposte

4

In generale modifica dello stato del programma si verifica quando il programma altera alcune risorse del computer (ad esempio il valore della memoria a un determinato indirizzo) all'interno dello spazio di indirizzamento del processo correlato al processo rappresentato dal programma e quel cambiamento avrà un effetto sull'ulteriore esecuzione del processo. Ad esempio, puoi chiamare il mutatore (setter) sul tuo oggetto per modificarne la proprietà (in O bject O approccio rientato). Successivamente il risultato restituito chiamando il metodo getter (accessor) relativo a quella proprietà sarà distinto dal risultato restituito prima di chiamare il mutatore. Questa differenza deve essere mantenuta nello stato del programma (nella proprietà dell'oggetto in quel caso che è mappato su un dato indirizzo di memoria sull'heap del programma).

Nell'approccio procedurale, la controparte modificherà una variabile memorizzata non nello stack ma nella memoria heap . Quindi il cambiamento deve essere permanente (persistente) non temporaneo (ad es. variabile globale ma non variabile locale). Le variabili locali sono memorizzate nello stack che è volatile e vive finché non viene restituita una determinata funzione, quindi le modifiche sullo stack non sono permanenti e in questo caso non possiamo dire che lo stato del programma è stato modificato. Supponiamo che tu abbia una funzione denominata con un nome int factorial(int argument) . Puoi avere alcune variabili locali dichiarate nell'ambito della funzione (in pila) che ti aiutano a fare alcuni calcoli ma le modifiche apportate a queste variabili sono andate dopo che il calcolo è terminato e la funzione ritorna. Non ci sono stati cambiamenti nello stato del programma in quel caso.

    
risposta data 24.02.2016 - 14:30
fonte
2

Ci sono molte convenzioni sui nomi, non ho ancora sentito nulla di ciò che segue quello che hai descritto, ma comunque sono curioso. La pratica più comune è quella descritta nel libro Codice pulito.

Di solito usi nomi per classi e strutture (cose). Usi verbi (azioni) per le funzioni o metodi . E usi i predicati per le variabili booleane che restituiscono le funzioni. Questo è ben spiegato nel libro " Pulisci codice " nel capitolo per i nomi.

Come per cambiare lo stato del programma, può significare come variabili di cambiamento in una classe che cambia il comportamento del programma. Ad esempio, se hai una classe chiamata Gioco che contiene una variabile (enum) di currentState che può avere lo start_screen , game_running e end_game . A seconda dello stato di questa classe, il programma cambia comportamento.

    
risposta data 24.02.2016 - 13:55
fonte

Leggi altre domande sui tag