Кто-нибудь знает о программе или плагине для 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. Случай !
с использованием области
и / или строки
делает его немного сложным, как и случай по умолчанию
.
Есть предложения?