I\'ve heard that you should read 10 times more than you should write. This appli
ID: 660002 • Letter: I
Question
I've heard that you should read 10 times more than you should write. This applies to both literature and source code. Therefore, I'd like to study the best c++ packages we've developed.
I'm interested in discovering extremely high quality software packages that use c++, c and assembly. This begs the question, "What determines high quality?". Well, that's kind of up to you. Could you provide a bulleted list of your reasons for choosing your packages and also the list of open source c++ packages.
For example my list of qualities that I think make good software are:
Well commented (with full javadoc comments for every function, method and class signature)
Well organized (files broken up into logical, manageable pieces)
Well documented (a reasonable amount of up to date, bug free documentation. Hopefully with some documentation on the high level structure)
Well named classes and variables (succinct, verbose variable names; this should reduce the need for inline comments, however inline comments are always welcomed; no single-letter variables)
Should have unit tests.
Consistent style and formatting.
Hopefully demonstrates clean and recommended usage of a good library like Boost, Qt, STL, etc.
My list of packages is:
TrueCrypt (Though is doesn't have full javadoc signatures)
Chrome
OpenSceneGraph
I'm aware of this post. It's two years old and doesn't have the list of reasons.
Thank you very much for your contributions, in advance.
Explanation / Answer
one recommendation i'd like to make is the llvm project:
the most publicly prominent subproject here is the clang compiler.
the project is:
designed to scale well.
designed for modularity and reuse.
issue resolution turnaround is generally low.
well documented.
employs fairly modern practices.
has several unit and regression tests.
is very active (a positive and negative).
follows conventions i generally find agreeable (although personal)
has good debugging, diagnostics, and error reporting which (by and large) don't significantly interfere with production releases.
has taken its audience into consideration.
considers portability.
etc.
sure, there are several things i'd have done differently (including differences in taste - and i don't mean to imply the end result would be better, just different), but i think it fits the criterion of the topic, and is worthy of mention, and that much useful information can be gleaned from reading the sources.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.