Как refactorizar этот анализатор данных IRC?

У меня есть этот метод monstro, у которого есть 1500 линий кода, полного условий и случаев.

Метод (он не скопировал метод здесь, из-за которого он попросит весь экран, и было бы причиняющим беспокойство делать scroll - Соединение закреплено в commit для того, чтобы будущие обновления это не сломали)

Поскольку я увидел в этих ситуацию, состоит в том, чтобы применять идеальное главный файл фактории. Но: было бы возможно упрощать еще больше?

0
задан 04.03.2016, 15:17
1 ответ

То, что общеизвестный состоит в том, что есть один, жените огромно, что podrГ, - когда удалять, если ты осуществляешь что-то как:

public class ParseData{
    public string nick {get;set;}
    public string msg {get;set;}

} 
interface IIRCParse{
    ParseData Parse();
}

public IRCParse001 : IIRCParse{

    public ParseData Parse()
    {
        //implementacion
    }
}

public IRCParse006 : IIRCParse{

    public ParseData Parse()
    {
        //implementacion
    }
}

//resto implementaciones

Каждый cГіdigo parsea формы, отделенной в классе, и они все получают в наследство от интерфейса. И usarГ-схвати это посредством:

Dictionary<string, IIRCParse> ircParses = new Dictionary<string, IIRCParse>(){
    {"001", new IRCParse001()},
    {"006", new IRCParse006()},
    //resto
};

IIRCParse parseInstance = ircParses[ircData[1]]
ParseData data = parseInstance.Parse();

из этой формы ты предотвращаешь switch огромно и можешь отделять каждый код в одной implementaciГіn отличная desafiГі состоит в том, чтобы нормализовать parse для всех них cГіdigos, что возвратили тот же set таких данных как ответ

В примере, использует один Dictionary, но Ваш ты используешь какую-то librerГ - в IoC (Unity, Ninject, StruncturaMap, autofac, и т.д.) даже лучше, так как в этой podrГ-эксперт mapear cГіdigo в осуществление и применять resolve, чтобы определять, что инстанция parser применяется.

3
ответ дан 24.11.2019, 14:46

Теги

Похожие вопросы