Дублювання коду - термін з програмування. під яким розуміється, що деякі ділянки вихідного коду можуть зустрічатися більш ніж один раз, як всередині однієї, так і в декількох програмних сутності. Дублювання є симптомом так званого «погано пахне коду». [1] В першу чергу тому, що збільшується його довжина; саме через дублювання, а не через збігів. Послідовність дублікатів іноді називають клонами.
Ось список причин, за якими два шматки коду можуть вважатися дублікатами:
Звідки беруться дублікати коду
Ось ряд причин, за якими дублікати коду можуть бути створені:
Проблеми, до яких призводять дублікати коду
Дублювання коду є ознакою низького або ледачого стилю програмування. Хороший стиль програмування зазвичай заснований на повторному використанні коду. Може здаватися, що використання дублікатів дозволить дещо прискорити процес створення програми, так як програмісту не потрібно буде замислюватися над тим, як код вже використовується і як він може використовуватися в подальшому. Однак, проблема полягає в тому, що написання коду - це лише скромна частина життєвого циклу продукту, і подальший супровід коду з дублікатами буде занадто ускладнене. Ось кілька проблем, до яких призводить дублювання коду:
- Велика кількість коду ускладнює його розуміння. Дублювання коду часто призводить до створення довгих, повторюванихпослідовностей коду, які відрізняються лише кількома рядками або символами.
- Приховане значення. Важко вловити різницю в повторюваних ділянках коду і тому стає важче розуміти, для чого саме призначений той чи інший шматочок коду. Найчастіше єдина різниця полягає в параметрах. Кращий вихід з даної ситуації лежить у використанні процедур і функцій.
- Аномалії оновлення. Дублювання коду суперечить основному принципу теорії баз даних, а саме: Уникайте надмірності. Невиконання цього принципу призводить до аномалій оновлення, які сильно збільшують витрати на обслуговування коду. У цьому випадку один і той же зміна потрібно ввести в усі дублікати. І, в кращому випадку, час, витрачений на внесення змін і тестування коду збільшується пропорційно кількості дублікатів. А в гіршому - деякі місця в коді можуть бути пропущені, і виправлення всіх помилок може затягнутися на місяці або навіть роки. Намагайтеся використовувати бібліотеки коду в такій ситуації.
- Розмір файла. Без застосування будь-якого стиснення файл исходника буде займати більше місця на диску.
Пошук дублікатів коду
Існує певна кількість алгоритмів, що дозволяють відшукати дублікати коду. наприклад:
Приклади дублікатів коду