Прошло некоторое время с тех пор, как я написал C, и я никогда не делал никакого форматирования, когда я это делал, так как это была вся игрушка и была несущественной. Для проектов с открытым исходным кодом C, какими будут лучшие (наиболее согласованные и использованные) руководства по стилю (форматирование и условное использование), чтобы следовать?
Руководство по стилю программирования для C
Ответ 1
Руководства по стилям C и С++ содержит множество руководств по стилям. Я думаю, вы должны выбрать тот, который используется в области вашего проекта ОС. Например. Люди GNU любят различное форматирование, чем разработчики ядра Linux.
Просто примеры:
Ответ 2
Многие крупные (с открытым исходным кодом) проекты имеют свои собственные соглашения и руководства по стилю, поэтому вы захотите проверить, не имеет ли проблема, в отношении которой вы хотите внести свой вклад, руководство по стилю для чтения. В противном случае, знакомясь с одним или несколькими общими стилями.
Просто избегайте другой религиозной войны, который должен использовать редактор.
Примеры добавления (продолжение от @stacker):
Ответ 3
Это обширная и сложная область, есть так много мнений, что есть программисты. На мой взгляд, самое важное - быть последовательным, ничто не хуже, чем пытаться найти, какой блок принадлежит какому условию, потому что строки иногда отступаются с пробелами, иногда с вкладками, иногда 4 пробела на отступы, а затем - с 2...
Затем важно сделать эту вещь читаемой. Читаемость повышается, если код сгруппирован по логическим единицам, немного отделяя эту группу (сопоставим с абзацами в тексте). Когда несколько строк делают очень похожие вещи, выровняйте их так, чтобы их можно редактировать в столбцах.
if((pInfo->pSelects.Include.DT = CmdBuildMap(Tbl+TAG_SELINC_DT))) Counter++;
if((pInfo->pSelects.Include.DO = CmdBuildMap(Tbl+TAG_SELINC_DO))) Counter++;
if((pInfo->pSelects.Include.RQ = CmdBuildMap(Tbl+TAG_SELINC_RQ))) Counter++;
if((pInfo->pSelects.Include.YR = CmdBuildMap(Tbl+TAG_SELINC_YR))) Counter++;
if((pInfo->pSelects.Exclude.DT = CmdBuildMap(Tbl+TAG_SELEXC_DT))) Counter++;
if((pInfo->pSelects.Exclude.DO = CmdBuildMap(Tbl+TAG_SELEXC_DO))) Counter++;
if((pInfo->pSelects.Exclude.RQ = CmdBuildMap(Tbl+TAG_SELEXC_RQ))) Counter++;
if((pInfo->pSelects.Exclude.YR = CmdBuildMap(Tbl+TAG_SELEXC_YR))) Counter++;
более читабельна, чем
pInfo->pSelects.Include.DT = CmdBuildMap(Tbl+TAG_SELINC_DT);
if(pInfo->pSelects.Include.DT)
Counter++;
pInfo->pSelects.Include.DO = CmdBuildMap(Tbl+TAG_SELINC_DO);
if(pInfo->pSelects.Include.DO)
Counter++;
pInfo->pSelects.Include.RQ = CmdBuildMap(Tbl+TAG_SELINC_RQ);
if(pInfo->pSelects.Include.RQ)
Counter++;
pInfo->pSelects.Include.YR = CmdBuildMap(Tbl+TAG_SELINC_YR);
if(pInfo->pSelects.Include.YR)
Counter++;
pInfo->pSelects.Exclude.DT = CmdBuildMap(Tbl+TAG_SELEXC_DT);
if(pInfo->pSelects.Exclude.DT)
Counter++;
pInfo->pSelects.Exclude.DO = CmdBuildMap(Tbl+TAG_SELEXC_DO);
if(pInfo->pSelects.Exclude.DO)
Counter++;
pInfo->pSelects.Exclude.RQ = CmdBuildMap(Tbl+TAG_SELEXC_RQ);
if(pInfo->pSelects.Exclude.RQ)
Counter++;
pInfo->pSelects.Exclude.YR = CmdBuildMap(Tbl+TAG_SELEXC_YR);
if(pInfo->pSelects.Exclude.YR)
Counter++;
(и просто редактируя здесь для SO, второй форме было действительно сложно получить)
Как вы можете видеть, я даже использовал побочную форму инструкции, чтобы сделать код более читаемым в форме столбца, даже если бы я не делал этого только для одного оператора.
Это, конечно, очень субъективно.
Ответ 4
Всегда следуйте стилю кода, которому вы вносите. Тело кода должно выглядеть так, как будто оно было написано одним человеком. Если у проекта нет четких правил стиля, вам нужно просто следовать примеру. Хорошим правилом является то, что если вы хотите нарушить существующий стиль, вы должны (a) убедить всех остальных и (b) изменить весь существующий код, чтобы он соответствовал.
Если вы начнете свои собственные проекты, вы можете использовать простой современный стиль C, подобный CZMQ: https://github.com/zeromq/czmq#toc3-385