Oracle DB (МН / SQL) Рефакторинг Инструментов

public override bool Equals ( object obj )
{
   // struct
   return obj  is Point2 && Equals (  ( Point2 ) value );
   // class
   //return Equals ( obj as Point2 );
}

public bool Equals ( Point2 obj )
7
задан Crocked 6 October 2009 в 02:15
поделиться

1 ответ

Так получилось, что "D" в TOAD означает Developer , а не DBA . Фактически, многие администраторы баз данных анатематизируют TOAD и другие подобные инструменты.

Вам не повезло. Насколько мне известно, инструментов для рефакторинга PL / SQL нет. Основная проблема в том, что рефакторинг как концепция исходит из парадигмы ООП, а PL / SQL не является объектно-ориентированным. Он не поддерживает наследование или полиморфизм (*) . Это означает, что многие методы, лежащие в основе классической практики рефакторинга (скажем, как определено Фаулером) - абстракция, интерфейсы, и т. д. - не имеют аналогов в PL / SQL.

Следствием этого является то, что люди, которые привыкли к рефакторингу как к части своего концептуального набора инструментов, склонны избегать программирования на PL / SQL. Однажды я вступил в жаркие споры по поводу списка TDD по этому поводу. В результате даже разработчики, которые нуждаются в PL / SQL и ценят их достоинства, предпочли бы разрабатывать языки с лучшей поддержкой инструментов, невзирая на пункт 1 Agile Manifesto .

Самым важным инструментом рефакторинга является автоматическое модульное тестирование. Хотя в TOAD нет (я думаю) интегрированного модульного тестирования, в следующей версии Oracle SQL Developer будет. Существуют также автономные инструменты модульного тестирования. Я недавно упомянул пару из них в другом потоке SO .

Что касается рефакторинга PL / SQL для соответствия изменениям в базе данных, возможно, большая часть взаимодействия с таблицами должна быть недооценена созданными API таблиц, а не встроена в транзакционный PL / SQL. В этом счастливом мире нет необходимости в инструментах рефакторинга, нам просто нужно заново сгенерировать соответствующие API. В сообщении, на которое я ссылался выше, также упоминается QCGU, инструмент, который может это сделать. Конечно, когда у нас есть кодовая база PL / SQL, которая не организована таким образом, жизнь становится тяжелее. Вы не удивитесь, узнав, что для реализации WELC Feathers в PL / SQL не так много инструментов.

(*) Да, я знаю, что Oracle имеет типы, но они (а) SQL не PL / SQL и (б) сколько людей на самом деле создают API, используя их?

В этом счастливом мире нет необходимости в инструментах рефакторинга, нам просто нужно заново сгенерировать соответствующие API. В сообщении, на которое я ссылался выше, также упоминается QCGU, инструмент, который может это сделать. Конечно, когда у нас есть кодовая база PL / SQL, которая не организована таким образом, жизнь становится тяжелее. Вы не удивитесь, узнав, что для реализации WELC Feathers в PL / SQL не так много инструментов.

(*) Да, я знаю, что Oracle имеет типы, но они (а) SQL не PL / SQL и (б) сколько людей на самом деле создают API, используя их?

В этом счастливом мире нет необходимости в инструментах рефакторинга, нам просто нужно заново сгенерировать соответствующие API. В сообщении, на которое я ссылался выше, также упоминается QCGU, инструмент, который может это сделать. Конечно, когда у нас есть кодовая база PL / SQL, которая не организована таким образом, жизнь становится тяжелее. Вы не удивитесь, узнав, что для реализации WELC Feathers в PL / SQL не так много инструментов.

(*) Да, я знаю, что Oracle имеет типы, но они (а) SQL не PL / SQL и (б) сколько людей на самом деле создают API, используя их?

10
ответ дан 7 December 2019 в 01:23
поделиться
Другие вопросы по тегам:

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