Por favor revise mi siguiente código ...C# refactorizar código si-else
public enum LogType
{
Debug,
Info,
Warn,
Error,
Fatal
}
private static readonly ILog log =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void LogError(LogType logtype, string message)
{
XmlConfigurator.Configure();
if (logtype == LogType.Debug)
log.Debug(message);
else if (logtype == LogType.Error)
log.Error(message);
}
no me gusta todas las declaraciones si-si no por encima y por creer que hay una forma más limpia de escribir esto. ¿Cómo podría refactorizarlo? la clase de registro tiene diferentes métodos para Depurar, Error, etc.
Me gustaría hacer una sola llamada a un método para que se ocupe automáticamente de ello.
LogMyError(LogType.Debug, "I am just logging here");
¿Cómo puedo hacer tal cosa? Prefiero mantenerme alejado de la declaración de cambio. Estoy buscando un enfoque orientado a objetos limpios.
¿No es eso lo que ya estás haciendo? – Matthew
Además del bloque de conmutadores, no dedicaría demasiado tiempo a pensar en un patrón de refactorización si solo son las 2 opciones para elegir. Es perfectamente legible de esta manera. – Alex
Yo tampoco veo el motivo de ningún cambio: para la refactorización o cualquier mejora en el diseño, generalmente debe tener una razón por la cual, qué es lo que intenta 'resolver' o mejorar, simplificar etc. No lo hago mira que aquí, un método simple ya lo hace, usa el interruptor si hay más 'tipos' – NSGaga