Se stai scrivendo un codice che può essere utilizzato da altri programmatori in isolamento, e stai utilizzando strutture di dati che vanno oltre i semplici built-in, considera se puoi incapsularli o meno come classi.
Osserviamo alcuni metodi di esempio e cosa restituiscono.
def getMatrix(**args):
Chiamando questo posso presumere che l'output sarà una lista di liste con un semplice valore all'interno. Non serve molto aiuto.
def getCharacterCounts(**args):
In questo, potrei presumere che in base alle argomentazioni otterrò un dizionario in cui ogni chiave è un carattere e quindi il valore sarà un conteggio basato sulle occorrenze in alcune stringhe.
def getPerson(**args):
Ah, ora ci stiamo mettendo nei guai. Una persona è una cosa complessa e potrei memorizzarla come un dizionario, in questo modo:
person = { name:"Bob",
age: 37,
date_of_birth: "1932-01-15",
hobbies:['programming','arguing on the internet', 'cross stitch'],
}
Tuttavia, man mano che questa struttura dati diventa più grande, si verificano più campi, l'esempio diventa più grande e quindi la documentazione deve iniziare a comprendere come risolvere i problemi quando i valori sono in conflitto - ad esempio, a meno che non siamo trasportati indietro all'anno 1969, data di nascita ed età sono incoerenti.
In sommario , se stai usando una struttura di dati che è variata nella struttura e include alcuni "meccanismi algoritmici", allora forse è tempo di richiamare la potenza della programmazione orientata agli oggetti TM .