Абстракция сохранения набора элементов, которые уже были

Issue #177 new
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 177

Мне уже надоело видеть бесконечные копи-пасты кода, связанного с тем чтобы взять из
БД набор старых элементов (например ответов на вопрос или описаний лексем) и сохранить
новый набор в БД с максимальным использованием старых записей.

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

Можно разместить в poasquestion, только сначала напишите образец и запостите сюда,
чтобы я над ним подумал тоже.

Reported by oasychev on 2013-02-04 20:02:28

Comments (4)

  1. Former user Account Deleted
    Вы имеете ввиду дублирование кода в backup/export и restore/import? Я слабо вижу там
    копипаст, единственная вещь которая там дублируется - это цель. Да и алгоритмы работы
    там очень сильно отличаются, даже diff по соответствующим файлам находит очень мало
    совпадений.
    

    Reported by mamontov.dp on 2013-02-05 04:39:10

  2. Oleg Sychev reporter
    Нет, я имею ввиду один мини-алгоритм, который постоянно дублируется. Надо, например,
    сохранить в БД ответы к вопросу (см. save_question_options). Тут куча строк кода: надо
    считать старые ответы, заменить их сколько есть, и добавить новые если не хватает.
    Тоже самое производится когда сохраняются в БД описания лексем. 
    
    Структура кода везде одинаковая, меняются только имена таблиц, имена полей с родительским
    id и собственно формирование записываемого в БД. А кода получается больше полсотни
    строк, когда и под сотню...
    

    Reported by oasychev on 2013-02-05 06:34:28

  3. Former user Account Deleted
    По-моему, я что-то такое давно реализовал, не пора ли закрыть?
    

    Reported by mamontov.dp on 2013-07-19 16:06:48

  4. Oleg Sychev reporter
    Да, только мне не очень понравился сам способ реализации (мягко говоря). Думал, заняться
    этим при работе над интерактивным поведением с подсказками, но оказалось что там все
    проще и этого не требуется.
    
    Пока оставляю  на себя на перспективу...
    

    Reported by oasychev on 2013-07-22 11:41:02

  5. Log in to comment