La modifica del tipo di partway variabile attraverso una procedura in un linguaggio digitato in linguaggio dinamicamente?

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/187332

Domanda

In Python (e occasionalmente PHP) in cui le variabili non hanno tipi fissi, eseguirò frequentemente "trasformazioni di tipo" su una parte variabile in parte attraverso la logica del mio codice. Non sto (necessariamente) parlando di cast semplici, ma di funzioni che cambiano il tipo di variabile lasciandola sostanzialmente rappresentando lo stesso valore o dati.

Ad esempio, potrei scrivere un codice come questo quando faccio una richiesta Web, utilizzando il response Variabile per archiviare un oggetto addurlinfo, quindi il contenuto della stringa di quell'oggetto e il dizionario restituito analizzando la stringa come JSON:

response = urlopen(some_url)
assert response.info().type == 'application/json'

response = response.read()
logger.debug('Received following JSON response: ' + response)

response = json.loads(response)
do_something(response)

(Okay, è un esempio leggermente inventato, ma penso che dimostra l'idea bene). La mia sensazione è che questo sia meglio che usare tre nomi variabili separati perché a) trasmette che il response La variabile contiene sostanzialmente le stesse informazioni, solo "trasformate" in un tipo diverso, e b) trasmette che gli oggetti precedenti non saranno necessari più in basso nella funzione, poiché riassegnando la loro variabile, li ho resi non disponibili al codice successivo.

Il compromesso, immagino, è che il lettore potrebbe confondersi su quale tipo è la variabile in un dato momento.

È questo cattivo stile e dovrei usare tre diverse variabili nell'esempio sopra invece di riassegnare a uno? Inoltre, questa pratica standard è nei linguaggi tipizzati dinamicamente o no? Non ho visto abbastanza il codice di altre persone da sapere.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top