The question is, what are the use-cases of the implicit type conversion operator which won't render my code much more difficult to understand?
Quando i tipi non sono non correlati (ai programmatori). Ci sono (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, un codice per eseguire la corrispondenza delle stringhe. Uno scenario comune è quello di trovare una stringa letterale. Anziché chiamare IsMatch(input, new Literal("some string"))
, una conversione implicita ti consente di sbarazzarti di quella cerimonia - il rumore nel codice - e di concentrarti sulla stringa letterale.
La maggior parte dei programmatori vedrà IsMatch(input, "some string")
e intuirà rapidamente cosa sta succedendo. Rende il tuo codice più chiaro al sito di chiamata. In breve, rende un po 'più facile capire che cosa sta succedendo , a scapito di come sta succedendo.
Ora, potresti sostenere che un semplice sovraccarico di funzione 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 una pila di sovraccarichi di funzioni.
E potresti obiettare che è meglio richiedere ai programmatori di creare esplicitamente il tipo intermedio in modo che vedano "cosa sta realmente accadendo". Questo è meno semplice. Personalmente, penso che l'esempio di stringa letterale sia molto chiaro su "cosa sta realmente succedendo" - il programmatore non ha bisogno di conoscere la meccanica di come succede tutto. Sai come tutto il tuo codice viene eseguito dai vari processori su cui gira il tuo codice? C'è sempre una linea di astrazione in cui i programmatori smettono di preoccuparsi di come qualcosa funziona. Se ritieni che i passaggi di conversione impliciti siano importanti, non utilizzare la conversione implicita. Se pensi che siano solo una cerimonia per mantenere il computer felice, e il programmatore starebbe meglio senza vedere quel rumore ovunque, quindi consideralo.