Come rappresentare le attività alternative e sequenziali?

1

Sto facendo esperimenti con la pianificazione delle attività gerarchiche (in python) e mi piacerebbe avere delle funzioni che restituiscano liste di attività. Devo differenziare tra percorsi alternativi e attività sequenziali. Il mio attuale approccio è di restituire un elenco di elenchi di attività, ad esempio:

def travel():
    return [ [call_yellow_cab, ride_yellow_cab, pay_driver],
             [call_limousine,  ride_limousine,  pay_driver] ]

Le attività sequenziali sarebbero chiamate .., corsa .., pay_driver. Il primo e il secondo elenco rappresentano sequenze di attività alternative (taxi o limousine).

Poiché " Esplicito è meglio di implicito " secondo "Lo Zen di Python", sono curioso di sapere se esiste un modo più esplicito per distinguere tra le liste di attività alternative e i compiti sequenziali all'interno. O il mio approccio non è così male come ' Semplice è meglio di complesso. '?

    
posta tssch 30.07.2015 - 16:46
fonte

1 risposta

1

Trovo che nominare i risultati intermedi spesso fornisce chiarezza semantica agli umani che li leggono più tardi, anche se non cambia il risultato finale. Come per la messa a fuoco di una lente, a volte il punto corretto è più facile da vedere portandolo agli estremi e poi facendo marcia indietro. La versione estrema di explicitness è:

def travel():
    yellow_cab_sequence = [call_yellow_cab, ride_yellow_cab, pay_driver]
    limousine_sequence  = [call_limousine,  ride_limousine,  pay_driver]
    alternatives = [yellow_cab_sequence, limousine_sequence]
    return alternatives

Questo rende abbondantemente esplicito il fatto che stai restituendo sequenze alternative, anche se probabilmente mi tirerei indietro un po 'da questo punto e unirò le ultime due righe. Rende anche facile vedere opportunità di creare chiamate di funzione per ridurre la duplicazione o livelli di astrazione separati, forse yellow_cab_sequence() o anche ground_transportation_sequence("yellow cab") .

Puoi anche aggiungere chiarezza scegliendo un nome per la funzione come travel_alternatives .

D'altra parte, se il tuo codice rimane veramente semplice come il tuo esempio, è abbastanza chiaro così com'è. Tieni a mente la tecnica man mano che la complessità aumenta nominando esplicitamente i risultati intermedi o suddividendoli in funzioni.

    
risposta data 30.07.2015 - 18:24
fonte

Leggi altre domande sui tag