zed писал(а):Надо понимать, что рефакторинг это вообще-то важная часть разработки и нельзя говорить, что он не нужен
Верно. Это лекарство для проекта. Как и любое другое - назначается не постоянно, а дозировано, причём с учётом побочных эффектов, иначе жизни не будет.
zed писал(а):А если забить на рефокторинг, то в конце концов может получиться такая адская смесь в коде, что реально добавить туда что-то новое будет практически невозможно
Вопрос не в "забить", вопрос в том, когда его делать.
Отламываются куски кода ведь не только специально. Это Может сыграть и простое правило "работает - не трожь".
Поэтому (особенно в случаях рефакторинга чужого кода) предпочтительно его делать в тот момент, когда появляется в этом необходимость.
Например светит доработка, или что-то объективное не устраивает (скорость, память и т.п.).
Если бесцельно провести рефакторинг сейчас, а реальная доработка вылезет ещё только через год - всё равно через год придётся замутить очередной рефакторинг, ибо остальной прект уже ушёл вперёд.
zed писал(а):Тот код, реализующий SQLite-метки был невероятно сложен
Ребята, я вас умоляю. Одна БД вместо двух + вместо родных объектов структуры с методами (там где не надо наследование и можно разместить их на стеке - это и компактнее, и быстрее работает, важные отличия только в конструкторах-деструкторах) + голый SQL без датасетов - и всё. Проще некуда. Любая реализация датасета только снаружи просто выглядит. А по размеру и скорости безбожно сольёт такой "плоской" реализации. В случае TileStorage_DBMS - это 700 кил с датасетами против 200 кил с копейками - без них.
zed писал(а):просто не видел кода sqlite-меток
Код доступен. Код TileStorage_DBMS (который с моей точки зрения существенно сложнее в итоговом варианте) - тоже.
Возможно тут сыграло роль то, что ты отчётливо понимаешь, что делают те же самые функции в DLL, что и в сасе, и поэтому проще. А в случае меток в SQLite аналога в сасе не было.
Впрочем как я уже писал, с глобальной точки зрения это не вопрос code review или арбитража.
zed писал(а):Вот из-за таких вот вопросов реализации и вытекает жизненная необходимость плагинов
Это опять нас возвращает к тому, чтобы выбирать - либо в числе первых ждать 2020 года и плагинов, либо в числе вторых сделать это для себя прямо сейчас, причём потенциально компактнее и быстрее.
А кроме всего прочего, принципиально плагины ничего не решают. Если в результате рефакторинга отвалится интерфейс к плагину - плагин точно также не будет работать, как если бы это был кусок кода в самом сасе, ненужный рефакторингологу (который его просто закомментирует). Принципиальная разница между интерфейсом к плагину и интерфейсом между двумя модулями лежит исключительно в нетехнических рамках, это разница между "я туда не лезу, поменялись правила игры, правьте свои плагины сами" и "мне это не надо, но блин не собирается, вырежу или закомментирую". Как раз постоянный рефакторинг в надежде на лучшее (которое враг хорошего) и делает невозможным ввести постоянные правила игры, называемые интерфейсами к плагинам.