Nel codice seguente:Perché questo campo è dichiarato come privato e anche in sola lettura?
public class MovieRepository : IMovieRepository
{
private readonly IHtmlDownloader _downloader;
public MovieRepository(IHtmlDownloader downloader)
{
_downloader = downloader;
}
public Movie FindMovieById(string id)
{
var idUri = ...build URI...;
var html = _downloader.DownloadHtml(idUri);
return ...parse ID HTML...;
}
public Movie FindMovieByTitle(string title)
{
var titleUri = ...build URI...;
var html = _downloader.DownloadHtml(titleUri);
return ...parse title HTML...;
}
}
I asked for something to review my code, e qualcuno ha suggerito questo approccio. La mia domanda è: perché la variabile IHtmlDownloader è in sola lettura?
Bingo. Se è di sola lettura, può essere impostato solo tramite l'inizializzazione dell'oggetto o nel costruttore. Non è necessario, ma una parte della qualità del codice sta limitando l'ambito in cui può verificarsi un errore. –
La risposta di Eric è stata buona, ma non aveva senso fino a quando Cylon ha affermato che è possibile modificare solo un campo di sola lettura nell'inizializzazione e nel costruttore. Grazie ragazzi! –
Vi è un ulteriore vantaggio in quanto il compilatore e il JITter possono effettuare determinate ottimizzazioni sapendo che il valore verrà risolto dopo la costruzione. –