Today I Learned
Search…
Exploring Large Codebases
Posted on 25 May, 2021
Since more than 50% of the time developers spent reading & modifying existing source code rather then writing new one, reading code is an essential skill for a developer that's why I am maintaining a log of resources, tips etc. to explore unknown Codebases
Usually picking a small task will help explore the codebase but ofc as a developer we need some powerstuff as well.
  • Write a glossary (class/function names, file/variable prefixes), As you read the code and encounter terms/words you don't know, write them down. Try to explain what they mean and how they relate to other terms. Create Docs for yourself
  • Check commit log in general for some interesting commits.
    • Check most commonly edited files
  • Read and run the tests (if any). The tests are (usually) a very clear and simple insight into otherwise complex functionality. This method should do this, this class should do that etc.
  • Read the documentation and comments (if any). This can really help you understand the how's and why's.

Tools

  • ​ack​
  • ​ag​
  • ​Sourcetrail​
  • ​codetour​
  • ​vim-bookmarks​
  • When exploring a git repo add these aliases to find more insights like
    • git top10: most actively edited files.
    • git his: Examples of commits that modify a file (helps in understanding what needs to be changed)
    • git wot: See how a function evolved
    [alias]
    # find commits that changed a file: git his <filepath>
    his = log --follow --color=always --date=format:'%d %b, %Y' --pretty=format:'(%Cgreen%h%Creset)[%ad] %C(blue bold)%s%Creset'
    # search code in commit history: git wot :function_name:filepath
    wot = log --date=format:'%d %b, %Y' --pretty='%n%C(yellow bold)πŸ“…οΈ %ad%Creset by (%C(green bold)%an%Creset) %C(cyan bold)%h%Creset' --graph -L
    # top 10 most edited files
    top10 = ! git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10

Resources & Internet Threads

Copy link
Edit on GitHub
On this page
Tools
Resources & Internet Threads