Some of what I think are my better answers (these are not in order of votes, you can see that by filtering on votes below):
- https://stackoverflow.com/questions/47354280/what-is-the-best-way-of-testing-private-methods-with-googletest/47358700#47358700 (similar to above, but less general)
Messersmith's law: There are no one-size-fits-all rules to software development, except for Messersmith's law.
Please don't dogmatically apply best practices. That being said...
I believe that TDD/CI/DevOps are the best strategies to develop maintainable, robust, working software. They also happen to help develop your software quickly, especially if you're working in a team (which most of us are). I've been lucky to work with everything from a 20M line legacy baseline all the way down to greenfield projects, and a plethora of things in between. I have yet to find a better strategy for creating maintainable/robust software, and furthermore creating it quickly/efficiently with a large team of developers, but I'm all ears if you've got a better one! I'll admit when you first hear of TDD, it sounds like some moronic exercise in pedantry. It isn't. It's really effective for design and maintainability. Don't knock it until you actually try it!!! Please understand you don't get a team to convert to these strategies in a day: it takes time, patience, effort, and sometimes a culture change. Maybe it's not worth it for your org or software product: and that's totally fine. They are all long term strategies, not short term ones.
Lehigh University Alum. B.S. in math, 2014. M.S. Comp Sci, 2015. I have a broad range of academic interests, although I am a much more practical person now. I consider myself a mini-scholar on permanent industry inspired sabbatical ;). I love to teach, and I hope one day to get back into academia/teaching.
Here's my blog (rarely updated): https://rackandstack-tech.blog/