Secondo anche l'uso di _ => _.method()
lambda di una riga, chiamata metodo, poiché riduce il peso cognitivo dell'istruzione. Specialmente quando si usano i generici, la scrittura x => x.method()
aggiunge semplicemente quella considerazione di una frazione di secondo di "Cos'è questa 'x'? È una coordinata nello spazio?".
Considera il seguente caso:
Initialize<Client> ( _=>_.Init() );
Utilizzato con una chiamata Generics, il carattere di sottolineatura in questo caso funziona come un "simbolo di esclusione". Evita la ridondanza, definendo che il tipo dell'argomento è ovvio e può essere dedotto dall'uso, proprio come quando si usa "var" per evitare di ripetere una dichiarazione di tipo. Scrivere client=>client.Init()
qui renderebbe semplicemente più lunga l'istruzione senza aggiungervi alcun significato.
Ovviamente, questo non si applica ai parametri da passare al metodo, che dovrebbe essere denominato in modo descrittivo. Per esempio.:Do( id=>Log(id) );
L'utilizzo di un singolo carattere di sottolineatura per le chiamate ai metodi è difficilmente giustificabile quando si utilizza un blocco di codice invece di una riga, poiché l'identificatore lambda viene disconnesso dalla sua definizione generica. In generale, quando lo stesso identificatore deve essere riutilizzato, dagli un nome descrittivo.
La linea di fondo è che la verbosità è giustificabile solo per la disambiguazione, specialmente per le lambda, che sono state create per semplificare la creazione di delegati anonimi in primo luogo. In ogni caso, dovrebbe essere usato il buon senso, bilanciando leggibilità e concisione. Se il simbolo è solo un "aggancio" alla funzionalità reale, gli identificatori di un carattere vanno benissimo. Questo è il caso dei cicli For e delle lettere "i" e "j" come indicizzatori.