一、缩进的空格数为4个。最好配置代码编辑器将TAB键设置为空格替换,避免出现另一个编辑器打开时格式变乱的情况。
例如Notepad++设置
KEIL设置
二、“{” 和 “}”各自独占一行。
不规范例子:
for(i = 0; i < student_num; i++)
{ if((score[i] >= 0) && (score[i]) <= 100)total_score += score[i];elseprintf(" error! score[%d] = %d\n", i, score[i]);
}
其中if应该换行,让“{”独占一行。
规范的例子:
for(i = 0; i < student_num; i++)
{ if((score[i] >= 0) && (score[i]) <= 100){total_score += score[i];}else{printf(" error! score[%d] = %d\n", i, score[i]);}
}
三、 当if的判断和执行句子较短时,也需要换行。
不规范如下格式:
if(student_num > 100)i = 0;
规范示例:
if(student_num > 100)
{i = 0;
}
四、if判断内容较长,可以考虑换行提高可阅读性
不规范例子:
if((print_montion[0]!=SYS_PARAM.Motor_PARAM[0].Set_Speed)||(print_montion[1]!=SYS_PARAM.Motor_PARAM[1].Set_Speed))
if((M_rise && M_rise_temp)||(M_stretch && M_stretch_temp)||(M_revolve && M_revolve_temp))break;
规范示例:
if( (print_montion[0] != SYS_PARAM.Motor_PARAM[0].Set_Speed) ||(print_montion[1] != SYS_PARAM.Motor_PARAM[1].Set_Speed) )
if( (M_rise && M_rise_temp) ||(M_stretch && M_stretch_temp) ||(M_revolve && M_revolve_temp) )
{break;
}
换行后也要注意缩进对齐,使得排版整洁。
五、switch-case语句标准格式
规范示例:
switch(variable)
{case value1:...break;case value2:...break;...default:...break;
}
六、if、for、do、while、case、switch、default语句独占一行,且if、for、do、while语句的执行语句部分无论多少都要加大括号"{}"。
七、严禁横向代码!!!
不规范示例:
if ( M_rise ) {EN_s = Enable; TIM_CCxNCmd(TIM1,TIM_Channel_1, ENABLE); }
if ( M_stretch ){EN_q = Enable; TIM_CCxNCmd(TIM1,TIM_Channel_2, ENABLE); }
if ( M_revolve ){EN_x = Enable; TIM_CCxNCmd(TIM1,TIM_Channel_3, ENABLE); }
修改:(这里的例子命名不规范,大家不要学)
if(M_rise){EN_s = Enable; TIM_CCxNCmd(TIM1, TIM_Channel_1, ENABLE); } if(M_stretch){EN_q = Enable; TIM_CCxNCmd(TIM1, TIM_Channel_2, ENABLE); } if(M_revolve){EN_x = Enable; TIM_CCxNCmd(TIM1, TIM_Channel_3, ENABLE); }
不要非主流自创风格,记住代码是给别人读的!