Don't let that huge codebase scare you! Tips and tools to make sense of other people's code

Mohammadjavad Raadi on May 19, 2019

Image: Cherlat.com, Getty Images/iStockphoto There comes a time in every developer's life when they start a new job, join a development team or ... [Read Full]
markdown guide
 

congrats on finding the bug and helping resolve it! I want to start doing it too, I've reported issues, but haven't tried to fix the code, just need to take that first step

also, consider using ripgrep instead of ack, it will be much faster, see blog.burntsushi.net/ripgrep/ for details

slightly off-topic: I published a book on "GNU grep and ripgrep" last week, it is still free for few more hours, so check it out if you are interested:

 

Thanks, I appreciate the time and effort you put into publishing this book and providing for free.

 

Is there any advice you would give
If there is no kind of Documentation available not even readme 🤯😪

 

You can always help with documentation. It may mean you need to dig deeper in the codebase, but the documentation that you add will help future developers, including yourself. 😉 I wrote about this earlier this year.

 

Static analysis tools can be a huge help. You can get a pretty good idea of where most of the code is being tied together via dependencies, which files are most volatile (# of commits vs lines of file), easily reformat things to your preferred style, and generate dependency diagrams. I have been using Jetbrains Resharper for years as a C# developer and recently used NDepend on an architectural assessment, where it was a huge help.

 

ReSharper and NDepends are both great tools! I would recommend a tool like ReSharper to every Devs. It's also a great way to learn about best practices and enforce standards.

My only complaint with ReSharper (besides resource usage, but that's largely on Microsoft for VS still being a 32-bit app) is the amount of options available. You can spend hours trying to get your coding style set up, and the documentation explaining what some of the options are or why they matter is pretty poor. I wish they had some presets that would let you start off with a common coding style instead of having to tinker around so much.

I feel like there is so much more ReSharper can do that I don't know about, but their documentation seems to be slipping. I have experienced very poor interactions with JB customer service as of late and I hope they can resolve that.

I know what you mean. It does take a lot of resources, especially for very big codebases. The code templates I think can get as complex as you get, but it does have some basic formatting built in. It would be great if they did include more built-in templates for styles and best practices. The newer version of Visual Studio seems to include more and more of the features that usually were only found in ReSharper.

 

Reading the commit messages for the files you're working on and the units tests(if there are any) could potentially help you understand the code better.

 

Well in my case I was handed over the code which was not documented & didn't used any kind of version control

Guess, I will die

Anyway I figured out the things to change & it worked

Oh boy, I totally get what you went through. Glad you worked that out.

 

Personally, if I'm landed in front an application I haven't seen before and is complex, I like to get a debugger attached, put a breakpoint in the main method (or a controller action method) and then just step line by line, inspecting what changes and where the code goes.

It can take a while, but it means you are getting the literal truth of what the program does.

This approach particularly helps with badly laid-out code or 'lightly commented' code.

 

Thanks for sharing. I too find myself doing this every so often.

 
 

Great read! 😀

One of the things I find myself doing, depending on the codebase is to look for the tests OR write some tests around the code.

I like tests that express some of the business requirements and show any thought patterns and logic that have formed the rules around what the code should and should not be doing.

Sometimes it's nicer if there are no tests at all so I can experiment more and see the boundaries myself.

Either way tests are so valuable!!

code of conduct - report abuse