Where to start refactoring?

40
Whe to stt refacting?

Transcript of Where to start refactoring?

Page 1: Where to start refactoring?

Where to start refactoring?

Page 2: Where to start refactoring?

Agenda1. Identify biggest files

2. Identify most complex files

3. Identify most changed files

4. Crossing our findings

Page 3: Where to start refactoring?
Page 4: Where to start refactoring?

$ git clone https://github.com/jquery/jquery.git

$ cd jquery

$ git checkout 3.1.0

Page 5: Where to start refactoring?

Biggest files

Page 6: Where to start refactoring?

$ find src -type f | xargs wc -l | sort | tail

Page 7: Where to start refactoring?

$ find src -type f | xargs wc -l | sort | tail

234 src/callbacks.js

237 src/selector-native.js

389 src/deferred.js

424 src/css.js

481 src/core.js

486 src/manipulation.js

688 src/effects.js

726 src/event.js

855 src/ajax.js

9026 total

Page 8: Where to start refactoring?
Page 9: Where to start refactoring?

$ brew install cloc

$ find src -type f | xargs cloc —by-file | head -n 20

Page 10: Where to start refactoring?

$ find src -type f | xargs cloc —by-file | head -n 20

… omitted output …

File blank comment code

-----------------------------------------------------------------------------------------

src/effects.js 101 56 531

src/ajax.js 168 179 508

src/event.js 125 94 507

src/manipulation.js 93 44 349

src/core.js 104 78 299

src/css.js 81 65 278

src/deferred.js 66 86 237

src/selector-native.js 38 47 152

src/offset.js 42 38 152

… omitted output …

Page 11: Where to start refactoring?

Most complex files

Page 12: Where to start refactoring?
Page 13: Where to start refactoring?
Page 14: Where to start refactoring?
Page 15: Where to start refactoring?
Page 16: Where to start refactoring?

$ npm install -g jscomplexity

$ cd src

$ jscomplexity

Page 17: Where to start refactoring?

$ jscomplexity

┌────────────────────────────────────────────────────────────────────────────────┬────────────────────┐

│ File │ Complexity │

├────────────────────────────────────────────────────────────────────────────────┼────────────────────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

│ ./selector-native.js │ 44 │

│ ./event/trigger.js │ 38 │

… omitted output …

Page 18: Where to start refactoring?

Most changed files

Page 19: Where to start refactoring?

$ git log --pretty=format: --name-only -- src |\ sort | uniq -c | sort -rg | head

Page 20: Where to start refactoring?

$ git log --pretty=format: --name-only -- src | sort | uniq -c |\ sort -rg | head

4115

601 src/core.js

560 src/event.js

379 src/ajax.js

346 src/manipulation.js

343 src/jquery/jquery.js

239 src/attributes.js

236 src/css.js

222 src/sizzle

201 src/effects.js

Page 21: Where to start refactoring?

$ git log --pretty=format: --name-only \ --after="1 year ago" -- src | sort | uniq -c |\ sort -rg | head

Page 22: Where to start refactoring?

$ git log --pretty=format: --name-only --after="1 year ago" -- src | sort |\ uniq -c | sort -rg | head

137

22 src/event.js

17 src/core.js

14 src/ajax.js

13 src/manipulation.js

11 src/deferred.js

11 src/css.js

10 src/css/showHide.js

9 src/offset.js

9 src/effects.js

Page 23: Where to start refactoring?
Page 24: Where to start refactoring?

$ shopt -s globstar # if you are on bash (4+)

$ git effort --above 8 src/**/*.js -- --after="1 year ago"

Page 25: Where to start refactoring?

$ git effort --above 8 src/**/*.js -- --after="1 year ago”

path commits active days

src/event.js................................. 22 21

src/core.js.................................. 17 16

src/ajax.js.................................. 14 14

src/manipulation.js.......................... 13 11

src/deferred.js.............................. 11 11

src/css.js................................... 11 11

src/css/showHide.js.......................... 10 10

src/offset.js................................ 9 8

src/effects.js............................... 9 8

Page 26: Where to start refactoring?

Crossing our findings

Page 27: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 28: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 29: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 30: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 31: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 32: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 33: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 34: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 35: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 36: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 37: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 38: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 39: Where to start refactoring?

File code

---------------------------

src/effects.js 531

src/ajax.js 508

src/event.js 507

src/manipulation.js 349

src/core.js 299

src/css.js 278

│ File │ Cmp │

├───────────────────┼─────┤

│ ./ajax.js │ 123 │

│ ./event.js │ 120 │

│ ./effects.js │ 108 │

│ ./manipulation.js │ 77 │

│ ./css.js │ 73 │

│ ./core.js │ 54 │

path commits

src/event.js............ 22

src/core.js............. 17

src/ajax.js............. 14

src/manipulation.js..... 13

src/deferred.js......... 11

src/css.js.............. 11

src/css/showHide.js..... 10

src/offset.js........... 9

src/effects.js.......... 9

Biggest Most complex Most changed

Page 40: Where to start refactoring?

Thank you ;D@thiagoalessio

github.com/thiagoalessio