En el siguiente código:¿Por qué este campo se declara como privado y también de solo lectura?
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, y alguien sugirió este enfoque. Mi pregunta es ¿por qué la variable IHtmlDownloader es solo de lectura?
Bingo. Si es de solo lectura, solo se puede establecer mediante la inicialización del objeto o en el constructor. No es necesario, pero parte de la calidad del código está limitando el alcance en el que puede ocurrir un error. –
La respuesta de Eric fue buena, pero no tuvo sentido hasta que Cylon dijo que solo se podía cambiar un campo de solo lectura en la inicialización y el constructor. ¡Gracias chicos! –
Existe un beneficio adicional en el hecho de que el compilador y el JITter pueden efectuar ciertas optimizaciones sabiendo que el valor será reparado después de la construcción. –