La domanda è: quali sono i casi d'uso dell'operatore di conversione del tipo implicito che non renderà il mio codice molto più difficile da capire?
Quando i tipi non lo sono indipendenti (dai programmatori). Esistono (rari) scenari in cui si hanno due tipi non correlati (per quanto riguarda il codice), che sono effettivamente correlati (per quanto riguarda il dominio o programmatori ragionevoli).
Ad esempio, alcuni codici per eseguire la corrispondenza delle stringhe. Uno scenario comune è quello di abbinare una stringa letterale. Piuttosto che chiamareIsMatch(input, new Literal("some string"))
, una conversione implicita ti consente di sbarazzarti di quella cerimonia - il rumore nel codice - e concentrarti sulla stringa letterale.
Quasi tutti i programmatori vedranno IsMatch(input, "some string")
e intuiranno rapidamente cosa sta succedendo. Rende il tuo codice più chiaro sul sito di chiamata. In breve, rende un po 'più facile capire cosa sta succedendo, a scapito di come sta succedendo.
Ora, potresti sostenere che un semplice sovraccarico di funzioni per fare la stessa cosa sarebbe meglio. E questo è. Ma se questo genere di cose è onnipresente, avere una conversione è più pulito (meno codice, maggiore coerenza) rispetto a un mucchio di sovraccarichi di funzioni.
E potresti sostenere che è meglio richiedere ai programmatori di creare esplicitamente il tipo intermedio in modo che vedano "cosa sta realmente succedendo". Questo è meno semplice. Personalmente, penso che l'esempio letterale di corrispondenza delle stringhe sia molto chiaro su "cosa sta realmente succedendo" - il programmatore non ha bisogno di conoscere la meccanica di come tutto accade. Sai come viene eseguito tutto il codice dai vari processori su cui viene eseguito il codice? C'è sempre una linea di astrazione in cui i programmatori smettono di preoccuparsi di come funziona qualcosa. Se ritieni che i passaggi della conversione implicita siano importanti, non utilizzare la conversione implicita. Se pensi che siano solo una cerimonia per rendere felice il computer e il programmatore farebbe meglio a non vedere quel rumore ovunque,