The Right Coding Style for C
+ +Being a C developer means to be facing various style of coding +(or lack of it) quite often. Programmers, communities, corporations and +software foundations may define and follow own rules without (or almost +without) any affect on a resulting application work process and efficiency. +Such freedom and flixibility that C language grants to developers is one of its +greatest adventages and a proof of genius of Dennis Ritchie and +Kenneth Thompson.
+But what is the right coding style for C?
+Sometime ago during discussion of coding style with one of my customers +I've asked myself this question. Need to say I am quite flexible with code + +formatting and ready to change my habbits, especially if there is a reason +behind it. I did some research and found that many people has no idea why to +format code in one or another way. And with all my respect "because Dennis +and Kenneth was doing so" - is not a reason. First of all because it was long +time ago and many things had changed. Another reason "because it is better for +readability" is too subjective. A real reason could be something that affects +some of the important things: product quality, required resources, earnings. +
+It is actual even for non-commercial single-maintainer projects, because +program should do its job, your time is a resource and you never know who and +when will be interested in your work in future. Code style and cleanliness in +this case is a somthing that could really affect the price. So it is worth to +follow at least some rules than nothing. Needless to say that for commercial +projects, importance of those things goes higher.
+ +File Layout
+This is one of the most natural language aspects. Almost all developers +are following such or similar order:
+-
+
- Includes of header files +
- Preprocessor definitions +
- Types declarations +
- Functions declarations (if necessary) +
- Global variables +
- Function definitions +
- Definition of main function +
To get work done you need things to be declared before first use. This +language requirement in the end helps programmer to find necessary definition +or declaration in backward search through file.
+Important note here could be done regarding static functions, which +declarations is better to avoid when possible. It helps to keep their +definitions in logical order, preserve file size and simplify developer's life +when function return value or parameters list changes.
+