There are some opensource projects, that have classes and classes without any significant explanation about what the class does and or why is that class needed. For example, classes in the CppEditor plugin for QtCreator. What are the best practices to read undocumented code? Don't read it, is not an option :)
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
I suggest you gather data from all possible sources.
Go through it a method/function at a time, and add your own documentation. Keep revising the documentation as you learn more about how it all works.