Support ease-of-use by being internally consistent. It should not be necessary to read the source code of a class or function to know how to use it. Once you know how to use part of the library, the other parts should feel natural. Have 100% test coverage, or nearly so, so that the library is known to be reliable. This should include running standard test vectors from the reference implementation.