Type names can be long and descriptive since they usually appear only in variable or parameter declarations. Variable names up to 10 characters usually provide a sufficient description without cluttering up expressions. Variables used as array subscripts should be shorter if possible. Variables used only as counters, loop controls, etc., can be as short as 1 to 3 characters in length. Use the underscore character to separate words within a name.
Complexity Make algorithms as simple and straightforward as possible.
This usually doesn't happen with the first implementation of an algorithm. In cases where efficiency and clarity are at odds, clarity should usually win out. All functions should be designed to do one task only. Any task that is repeated at several points in the program should be put in a separate function. Even tasks that are done only once, like initialization, can be put in a separate function to simplify the code.