Как иметь дело с дублирующим кодом в соответствии с Linux?

Если вам нужна строка для каждой зоны, даже для тех, которые не были проданы в тот день, вы можете взять таблицу zones из подзапроса. Вы хотите начать с CROSS JOIN между таблицами zones и calendar, чтобы получить все комбинации зон и дат. Затем LEFT JOIN, что с информацией о лицензии для получения лицензии считается.

Также, чтобы присоединиться к списку через запятую, вам нужно использовать FIND_IN_SET, а не IN(). См. Поиск с разделенным запятыми значением mysql .

SELECT z.zoneID, c.dy, z.seasonmax, z.daymax, IFNULL(COUNT(l.ID), 0) AS sold
FROM zones AS z
CROSS JOIN calendar AS c
JOIN licensetypes AS lt ON FIND_IN_SET(z.zoneID, lt.ValidForZone)
LEFT JOIN licenses AS l ON lt.ID = l.typeID AND c.dy >= DATE_FORMAT(l.From, '%Y-%m-%d') AND c.dy < DATE_FORMAT(l.To, '%Y-%m-%d')
WHERE c.dy BETWEEN @fromdate AND @todate
    AND lt.ID = @licensetype
GROUP BY z.zoneID, c.dy
ORDER BY dy

5
задан Ken 9 February 2009 в 12:45
поделиться

4 ответа

Как другие ответы уже упоминают, к этому нужно приблизиться вручную, потому что можно хотеть изменить другие вещи, поскольку Вы идете вперед для создания инструмента для очистки кодовой базы. Возможно, фактический вызов уже является лишними, или подобными фрагментами, может быть объединен.

Кроме того, у людей практики обычно немного изменяют скопированный код, таким образом, часто не будет прямых дубликатов, но закрывать варианты. Я боюсь, что автоматическое c&p обнаружение главным образом приведет Вас к сбою там.

Там однако осуществляют рефакторинг инструменты, которые могут помочь Вам с фактическим выполнением изменений (и иногда также с нахождением вероятных кандидатов). Google для "php рефакторинг", существует довольно много доступных инструментов, и автономных и как часть IDE.

2
ответ дан 14 December 2019 в 19:28
поделиться

Также примите во внимание процесс, которые приводят к этому дублированию кода!

Если необходимо изменить код, это - большинство времен быстрее для дублирования кода, чем осуществить рефакторинг его так, это может использоваться для новой цели, а также для старой цели.

Таким образом, необходимо убедить людей, что рефакторинг лучше, чем простое дублирование, поскольку это экономит время в конечном счете вместо короткого срока.

Иначе Вы оказываетесь за два года, гугля к этому точно тому же вопросу, который Вы отправили здесь!

1
ответ дан 14 December 2019 в 19:28
поделиться

Возможно, этот поток grep может помочь Вам?

0
ответ дан 14 December 2019 в 19:28
поделиться

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

Он доступен для многих языков, включая систему PHP. Образец отчета об обнаружении клонов PHP для Joomla (фреймворк PHP) можно найти по ссылке.

2
ответ дан 14 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

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