
"Consistent, high-quality coding standards improve software quality, reduce time-to-market, promote teamwork, eliminate time wasted on inconsequential matters, and simplify maintenance. Now, two of the world's most respected C++ experts distill the rich collective experience of the global C++ community into a set of coding standards that every developer and development team can understand and use as a basis for their own coding standards.
A lot of things will be very similar to Java but with subtle differences. This means you'll be able to get up and running quickly but your code will not have the same nuances. Look for coding standards used at big companies. I believe Google has one that's publicly available. Epic Games also has one for UE4. Hopefully they should have some explanation for the choices they made. If not, do some googling of the relevant areas and see if you can figure out why they chose what they did. Spend some time reading code. GitHub has lots of repositories you can check out.
For books you won't do badly if you pick up anything by Scott Meyers or Herb Sutter. They also both have good blogs. Meyers's books tend to be broken down into about fifty main points with discussion on each. I like to use them by reading one point and then trying to apply it specifically in my work. Doing this at one point a week I can go through about a book a year. C++ Coding Standards by Sutter and Alexandrescu or Effective C++ would be my top two recommendations for someone with your background. I'd stay away from Alexandrescu's other work for now since it tends to be more advanced and potentially dangerous.
YouTube videos of talks by any of the authors I mentioned may also be useful to you.
You specifically mentioned memory management and concurrency so I'll throw in some specific advice for them. Modern C++ uses smart pointers for dynamic memory. If you're allocating dynamic memory and not using a smart pointer you're almost certainly doing something wrong. If you want to get into really low level stuff with memory management look at how malloc or new are implemented and do a search for "small block allocator". For concurrency your best bet is probably to find resources devoted to threading and asynchronous execution. I haven't looked into that in a while so I don't have specific recommendations for good resources.
As for coding standards, I suggest a book by the same author plus the current chair of the standard committee: http://www.amazon.com/Coding-Standards-Rules-Guidelines-Prac.... Another commenter has suggested the Google C++ Coding Standards, but despite their popularity they do not conform very well to "Modern C++" as I understand it.
- Sutter's Exceptional C++ books
- Dewhurst's C++ Common Knowledge and C++ Gotchas are useful.
- Sutter/Alexandrescu's "C++ Coding Standards" is good, too.
For beginners a very good book from my experience is C++ Primer by Stanley B. Lippman, Josée LaJoie, Barbara E. Moo. The 5th edition even goes into the newer topics like the aforementioned lambdas, also variadic templates. A nice thing is that it comes with exercises, which in my particular case was how I learned programming. I found a new feature of the language, or a class new to me and I played with it until I understood how it works.
Another good book for beginners is Programming -- Principles and Practice Using C++ by Bjarne Stroustrup, from what I read, he wrote this book with the background of teaching programming at the university and wanted to write a good book which uses a good approach which can be used for teaching students programming in C++.
If you are already further in and not at the beginning of learning C++ there is a list of books I recommend as further readings:
- Effective C++ by Scott Meyers
- More Effective C++ by Scott Meyers
- Effective STL by Scott Meyers
---
- Exceptional C++ by Herb Sutter
- More Exceptional C++ by Herb Sutter
- Exceptional C++ Style by Herb Sutter
---
- C++ Templates - The Complete Guide by David Vandevoorde and Nicolai M. Josuttis
- Modern C++ Design - By Andrei Alexandrescu
- C++ Coding Standards by Herb Sutter and Andrei Alexandrescu
Last but not least, reading the C++ Standard is the last bit on the topic of C++
This is the list of books which I recommend anyone who really wants to become great in C++
HTH :-)
Edit: I should probably mention The C++ Programming Language (4th Edition) by Bjarne Stroustrup as a must have as well ;)
