Creazione di una grande quantità di tipi VS utilizzando principalmente quelli forniti dalla lingua [chiuso]

1

Ci sono diverse volte in cui stai codificando un metodo che ha due parametri con lo stesso tipo, diciamo, numeri interi, NumberOfUnitA e NumberOfUnitB . Dato che stiamo codificando in un linguaggio che non supporta i parametri denominati, perché non vediamo persone che creano tipi più vicini alla logica del dominio, in questo caso UnitA e UnitB , ma solo interi grezzi ? Sembra molto più espressivo per me.

E anche in altre situazioni, molte volte, dobbiamo passare un sacco di flag, e sono solo interi (anche nei casi in cui la perfomance non è un problema), perché lo facciamo? Crea complicazioni inutili?

Quali sono i problemi di questo approccio nella creazione di molti tipi?

    
posta Julio Rodrigues 02.02.2014 - 13:02
fonte

2 risposte

3

Il motivo per cui non lo sto facendo quanto vorrei: non c'è abbastanza supporto per il compilatore.

In Delphi posso creare alias tipo come:

type
  TAmount = type Integer;
  THouseNumber = type Integer;
  TCreditAmount = type Currency;
  TDebitAmount = type Currency;

Ciò renderebbe le firme dei metodi molto più autodiagnostici. Sfortunatamente, il compilatore non mi obbliga a usare l'alias corretto fintanto che i tipi sono compatibili con l'assegnazione. Solo se un parametro è un parametro var (passato per riferimento) il compilatore applica l'uguaglianza esatta del tipo.

Il che significa che posso dimenticare di usare i tipi corretti e di non essere avvisato. Il che significa che la base di codice può iniziare lentamente a non utilizzare TCreditAmount dove dovrebbe e che toglie l'utilità di dichiararlo in primo luogo.

    
risposta data 02.02.2014 - 14:18
fonte
0

Dipende molto dalla lingua che usi.

I Go che ha gli alias di tipo è possibile creare facilmente alias per ints senza alcun inconveniente notevole. Gli altri linguaggi non consentono affatto di derivare tipi elementari come int o string, (come Dart) perché sono strongmente ottimizzati per le prestazioni e il dispatch dinamico del metodo poiché è usato per il polimorfismo ridurrebbe molto le prestazioni (ma Dart ha comunque chiamato i parametri)

    
risposta data 02.02.2014 - 13:53
fonte

Leggi altre domande sui tag