Esistono validi modi per eliminare / ridurre lo stato?

-1

Per le definizioni e gli esempi di "stato", vedi: link , link , link

Un diagramma che mostra un esempio molto semplice, nota come lo stato corrente cambia il modo in cui il tornello funziona quando lo stesso ingresso (inserendo una moneta, spingendo sul tornello) viene dato due volte di fila: link

Ho pensato a questa domanda per un po 'e ho trovato nient'altro che:

  1. Riduci l'ambito / le caratteristiche del progetto / software.
  2. Spingere l'utente a prendere decisioni intelligenti per l'utente e / o fornire al programma un "cheat sheet" che semplifica le decisioni (ad esempio: invece di provare a scrivere un programma che guida un'auto utilizzando solo due webcam, potrebbe incorporare marcatori di waypoint sulla strada ogni 100 piedi, posizionare speciali segnalini riflettenti tra le corsie e utilizzare un database di mappe del terreno per aiutare il programma a prendere decisioni: uno richiederebbe il lavoro di un genio di Tesla / Newton-livello [presumendo che il programma può fare cose come (1) schivare gli animali, i resti di pneumatici esplosi, ecc. mentre si prendono misure meno drastiche per cose come il cartone e le bottiglie di plastica, (2) affrontare l'occlusione di punti di riferimento e gli indicatori causati da altri veicoli, (3) regola le condizioni meteorologiche, ecc. e così via] rispetto a qualcuno che può scrivere un algoritmo "collega i punti")

PS: classificherei questi due metodi come "barare" perché stai modificando in modo significativo l'input / output del programma. Nel primo caso, stai riducendo a zero il tuo programma e nel secondo stai trasferendo gran parte del carico decisionale su chiunque gestisca il database e il sistema di transito.

Esistono validi modi per eliminare / ridurre lo stato?

    
posta Michael 18.07.2012 - 15:28
fonte

1 risposta

1

L'esempio di turnstyle è già allo stato "minimo" necessario per funzionare. Ha uno stato bloccato. Puoi ingannare questo cambiando l'oggetto (che ha uno stile LockedTurnstyle e UnlockedTurnstyle), ma che per lo più oscura lo stato piuttosto che eliminarlo.

Nella maggior parte del codice, tuttavia, il problema non è così chiaro. Nella maggior parte dei casi, il codice ha dichiarato che non ha strettamente bisogno di operare. Ridurre quello stato non necessario è molto di quello che finirai per fare in pratica.

Inoltre, lo stato di per sé non è che cattivo. Lo stato variabile è il colpevole più fastidioso. Rendendo invariato lo stato in determinati periodi o situazioni limitate si ridurranno molti dei problemi pratici nel software. Anche questo è ciò che finirai per ottenere vantaggi pratici nell'ingegneria del software.

    
risposta data 18.07.2012 - 17:22
fonte

Leggi altre domande sui tag