Duplication Overall
- 11% duplication:
- 11,922 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
- 1,331 duplicated lines
- 134 duplicates
Duplication per Extension
Duplication per Component (primary)
Longest Duplicates
The list of 50 longest duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 54 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 69:136 (36%)69:136 (36%) | view | |
| 36 | x 2 | elixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jira | 93:136 (24%)93:136 (24%) | view | |
| 36 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/jira | 93:136 (24%)93:136 (24%) | view | |
| 34 | x 2 | elixir/lib/symphony_elixir/linearelixir/lib/symphony_elixir/linear | 16:49 (6%)61:94 (6%) | view | |
| 34 | x 2 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/gitlab | 297:340 (10%)323:366 (10%) | view | |
| 28 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 347:382 (8%)322:357 (8%) | view | |
| 27 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/github | 348:382 (7%)297:331 (8%) | view | |
| 26 | x 2 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/gitlab | 105:135 (17%)106:136 (17%) | view | |
| 26 | x 2 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jira | 105:135 (17%)106:136 (17%) | view | |
| 26 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/github | 106:136 (17%)105:135 (17%) | view | |
| 21 | x 2 | elixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jira | 322:348 (6%)441:467 (4%) | view | |
| 21 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/jira | 347:373 (6%)441:467 (4%) | view | |
| 21 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 268:294 (6%)239:265 (6%) | view | |
| 20 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 568:588 (2%)669:689 (2%) | view | |
| 20 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 625:645 (2%)647:667 (2%) | view | |
| 20 | x 2 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jira | 297:322 (6%)442:467 (4%) | view | |
| 19 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/jira | 70:92 (5%)64:86 (4%) | view | |
| 17 | x 2 | elixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jira | 69:90 (11%)69:90 (11%) | view | |
| 17 | x 2 | elixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jira | 59:77 (5%)64:82 (3%) | view | |
| 17 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 70:88 (4%)59:77 (5%) | view | |
| 17 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/jira | 69:90 (11%)69:90 (11%) | view | |
| 16 | x 2 | elixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jira | 28:46 (4%)33:51 (3%) | view | |
| 16 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/jira | 39:57 (4%)33:51 (3%) | view | |
| 16 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 39:57 (4%)28:46 (4%) | view | |
| 14 | x 2 | elixir/lib/symphony_elixir_web/liveelixir/lib/symphony_elixir_web/live | 188:201 (3%)267:280 (3%) | view | |
| 14 | x 2 | elixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jira | 26:40 (9%)26:40 (9%) | view | |
| 14 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 15:34 (36%)28:47 (28%) | view | |
| 14 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/jira | 26:40 (9%)26:40 (9%) | view | |
| 14 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 26:40 (9%)26:40 (9%) | view | |
| 14 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/jira | 15:34 (36%)15:34 (36%) | view | |
| 14 | x 2 | elixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jira | 28:47 (28%)15:34 (36%) | view | |
| 12 | x 2 | elixir/lib/symphony_elixirelixir/lib/symphony_elixir | 85:98 (<1%)103:116 (<1%) | view | |
| 12 | x 2 | elixir/lib/symphony_elixirelixir/lib/symphony_elixir | 479:491 (<1%)501:513 (<1%) | view | |
| 12 | x 2 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/gitlab | 28:40 (8%)28:40 (8%) | view | |
| 12 | x 2 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jira | 28:40 (8%)28:40 (8%) | view | |
| 12 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/github | 28:40 (8%)28:40 (8%) | view | |
| 10 | x 2 | .codex/skills/land.codex/skills/land | 318:327 (1%)338:347 (1%) | view | |
| 10 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 568:577 (1%)625:634 (1%) | view | |
| 10 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 568:577 (1%)647:656 (1%) | view | |
| 10 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 625:634 (1%)669:678 (1%) | view | |
| 10 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 647:656 (1%)669:678 (1%) | view | |
| 10 | x 2 | elixir/lib/symphony_elixirelixir/lib/symphony_elixir | 1822:1832 (<1%)1836:1846 (<1%) | view | |
| 10 | x 2 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/gitlab | 77:90 (6%)77:90 (6%) | view | |
| 10 | x 2 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jira | 77:90 (6%)77:90 (6%) | view | |
| 10 | x 2 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/github | 77:90 (6%)77:90 (6%) | view | |
| 9 | x 2 | elixir/lib/symphony_elixir_web/liveelixir/lib/symphony_elixir_web/live | 208:217 (2%)282:291 (2%) | view | |
| 9 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 579:588 (<1%)636:645 (<1%) | view | |
| 9 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 579:588 (<1%)658:667 (<1%) | view | |
| 9 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 636:645 (<1%)680:689 (<1%) | view | |
| 9 | x 2 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 658:667 (<1%)680:689 (<1%) | view |
Most Frequent Duplicates
The list of 50 most frequently found duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 6 | x 5 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/linearelixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlab | 43:49 (4%)42:48 (3%)43:49 (4%)43:49 (4%)43:49 (4%) | view | |
| 6 | x 5 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 580:585 (<1%)637:642 (<1%)659:664 (<1%)681:686 (<1%)703:708 (<1%) | view | |
| 6 | x 5 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 579:584 (<1%)636:641 (<1%)658:663 (<1%)680:685 (<1%)702:707 (<1%) | view | |
| 6 | x 5 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/linearelixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlab | 34:40 (4%)25:31 (3%)34:40 (4%)34:40 (4%)34:40 (4%) | view | |
| 6 | x 5 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 569:574 (<1%)626:631 (<1%)648:653 (<1%)670:675 (<1%)692:697 (<1%) | view | |
| 6 | x 5 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 581:587 (<1%)638:644 (<1%)660:666 (<1%)682:688 (<1%)704:710 (<1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 128:133 (4%)129:134 (4%)129:134 (4%)129:134 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jira | 26:34 (15%)39:47 (12%)39:47 (12%)26:34 (15%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 348:356 (1%)323:331 (1%)442:450 (1%)297:305 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 28:33 (4%)28:33 (4%)28:33 (4%)28:33 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 354:360 (1%)329:335 (1%)448:454 (1%)303:309 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jira | 15:22 (15%)28:35 (12%)28:35 (12%)15:22 (15%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 571:576 (<1%)628:633 (<1%)650:655 (<1%)672:677 (<1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 124:130 (4%)125:131 (4%)125:131 (4%)125:131 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 82:89 (4%)82:89 (4%)82:89 (4%)82:89 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 572:577 (<1%)629:634 (<1%)651:656 (<1%)673:678 (<1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 364:370 (1%)339:345 (1%)458:464 (1%)313:319 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 113:119 (4%)114:120 (4%)114:120 (4%)114:120 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 360:367 (1%)335:342 (1%)454:461 (1%)309:316 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 115:121 (4%)116:122 (4%)116:122 (4%)116:122 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 42:48 (4%)42:48 (4%)42:48 (4%)42:48 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 129:135 (4%)130:136 (4%)130:136 (4%)130:136 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 112:117 (4%)113:118 (4%)113:118 (4%)113:118 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 120:126 (4%)121:127 (4%)121:127 (4%)121:127 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 15:20 (4%)15:20 (4%)15:20 (4%)15:20 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 116:122 (4%)117:123 (4%)117:123 (4%)117:123 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 119:124 (4%)120:125 (4%)120:125 (4%)120:125 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 32:38 (4%)32:38 (4%)32:38 (4%)32:38 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 106:113 (4%)107:114 (4%)107:114 (4%)107:114 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 117:123 (4%)118:124 (4%)118:124 (4%)118:124 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 351:358 (1%)326:333 (1%)445:452 (1%)300:307 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 121:127 (4%)122:128 (4%)122:128 (4%)122:128 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 358:364 (1%)333:339 (1%)452:458 (1%)307:313 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codexelixir/lib/symphony_elixir/codex | 570:575 (<1%)627:632 (<1%)649:654 (<1%)671:676 (<1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 349:357 (1%)324:332 (1%)443:451 (1%)298:306 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 361:368 (1%)336:343 (1%)455:462 (1%)310:317 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 93:99 (4%)94:100 (4%)94:100 (4%)94:100 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 359:366 (1%)334:341 (1%)453:460 (1%)308:315 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 356:361 (1%)331:336 (1%)450:455 (1%)305:310 (1%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 127:132 (4%)128:133 (4%)128:133 (4%)128:133 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 109:115 (4%)110:116 (4%)110:116 (4%)110:116 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 111:116 (4%)112:117 (4%)112:117 (4%)112:117 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 126:131 (4%)127:132 (4%)127:132 (4%)127:132 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 30:35 (4%)30:35 (4%)30:35 (4%)30:35 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jira | 25:32 (15%)38:45 (12%)38:45 (12%)25:32 (15%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 83:90 (4%)83:90 (4%)83:90 (4%)83:90 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/asana | 123:129 (4%)124:130 (4%)124:130 (4%)124:130 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 31:36 (4%)31:36 (4%)31:36 (4%)31:36 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/githubelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlab | 33:39 (4%)33:39 (4%)33:39 (4%)33:39 (4%) | view | |
| 6 | x 4 | elixir/lib/symphony_elixir/asanaelixir/lib/symphony_elixir/gitlabelixir/lib/symphony_elixir/jiraelixir/lib/symphony_elixir/github | 352:359 (1%)327:334 (1%)446:453 (1%)301:308 (1%) | view |
About This Analysis
- For duplication, we look at places in code where there are 6 or more lines of code that are exactly the same.
- Before duplication is calculated, the code is cleaned to remove empty lines, comments, and frequently duplicated constructs such as imports.
- You should aim at having as little as possible (<5%) of duplicated code as high-level of duplication can lead to maintenance difficulties, poor factoring, and logical contradictions.
Learn more...
- To learn more about duplications and techniques for eliminating duplication, Sokrates recommends the following resources:
- Avoid Repetition, MartinFlower.com (IEEE Software article)
- Refactoring duplicated code, sourcemaking.com
- Beck Design Rules, MartinFowler.com
- DRY (Don't Repeat Yourself) Principle, Wikipedia
- The Cut-and-Paste Programming Software Development Anti-Pattern, sourcemaking.com
- Code Smells / Duplicated Code, Jeff Atwood, codinghorror.com:
- "Duplicated code is the bane of software development. Stamp out duplication whenever possible. You should always be on the lookout for more subtle cases of near-duplication, too. Don't Repeat Yourself!"
- Reducing Coupling, MartinFlower.com (IEEE Software article):
- "There are several ways to describe coupling, but it boils down to this: If changing one module in a program requires changing another module, then coupling exists. ... Duplication always implies coupling, because changing one piece of duplicate code implies changing the other."