Have in mind ID Tech 4 (ie, Doom 3 engine) was started 15 years ago, and was ID's first incursion into C++. Up to that point, all of ID code was done with C and x86 assembly if needed. So "modern" code conventions might not adjust well to that codebase.
What I've noticed is the Doom 3 engine uses a lot of macros definations and HPL 1 Engine uses a lot of macros. I thought you want to stay away from macro definations as best as you could?
Then again, a more "modern" version of that codebase is Doom 3 BFG's engine, I hear it was modernized a lot with ID Tech 5 code and its focused on multi threading. Its open source and uploaded to github if you want to take a look.