Плагин типа «Resharper» для SQL Server Management Studio?

Кто-нибудь знает о программе или плагине для SQL Server Management Studio, который похож на Resharper для MS Visual Studio?

Для Например, было бы неплохо ввести Ctrl-Shift-N и после начала ввода имени хранимой процедуры увидеть список хранимых процедур с наиболее общими командами, такими как - изменить, отбросить и создать. StringBuilder scope = new ...

Я рефакторинг некоторого старого кода простого парсера файла сценария натолкнулся на следующий код:

StringReader reader = new StringReader(scriptTextToProcess);
StringBuilder scope = new StringBuilder();
string line = reader.ReadLine();
while (line != null)
{
    switch (line[0])
    {
        case '$':
            // Process the entire "line" as a variable, 
            // i.e. add it to a collection of KeyValuePair.
            AddToVariables(line);
            break;
        case '!':
            // Depending of what comes after the '!' character, 
            // process the entire "scope" and/or the command in "line".
            if (line == "!execute")
                ExecuteScope(scope);
            else if (line.StartsWith("!custom_command"))
                RunCustomCommand(line, scope);
            else if (line == "!single_line_directive")
                ProcessDirective(line);

            scope = new StringBuilder();
            break;

        default:
            // No processing directive, i.e. add the "line" 
            // to the current scope.
            scope.Append(line);
            break;
    }

    line = reader.ReadLine();
}

Этот простой обработчик сценариев кажется для меня как хороший кандидат на рефакторинг с применением «принципа открытости и закрытости». Строки, начинающиеся с $ , вероятно, никогда не будут обрабатываться иначе. Но что, если необходимо добавить новые директивы, начинающиеся с ! ? Или нужны новые идентификаторы обработки (например, новые переключатели)?

Проблема в том, что я не мог понять, как легко и правильно добавить больше директив и процессоров, не нарушая OCP. Случай ! с использованием области и / или строки делает его немного сложным, как и случай по умолчанию .

Есть предложения?

11
задан Alex Butenko 30 October 2019 в 07:26
поделиться