每当单位有同事离职移交项目代码时,老板都会要求代码中必须有注释,而且要求必须达到代码的30%。有些同事只好乱贴一些注释。反正注释是否正确没办法马上验证。有时候我们普遍认可的真理在某些环境中并不是整理。有人认为注释不是必须的。工作了几年以后,我真的认为是这样。 前提是程序必须拥有良好的框架和风格。

 

   比如一个冒泡排序代码:

void bubbleSort( int sort[], unsigned char len )

{
   char i,j;
   int temp;
  
   len -= 2; 
    
   for( i =len; i>=0; i--)
   {
      for( j =0; j<=i; j++)
      {
         if( sort[j+1] < sort[j])
         {
            temp = sort[j];
            sort[j]=sort[j+1];
            sort[j+1]=temp;  
         }  
      }
 
   }
}
 
即使没有任何注释,也不影响我们使用这段排序代码。很明显SORT[ ]是需要排水数据首地址,len 是排序数据个数。
 
  以下代码编写注释,功能很明确,将电阻转化为温度。因为中文与英文区别,但是加注释后还是比较清楚。
 
/*****************************************
功能:pt100电阻转化为温度
参数:PT_R,电阻值,单位K欧姆
返回:当前电阻对应温度值,单位摄氏度
*******************************************/
int PT_TEMP(float PT_R)
{
   unsigned int Res;  
   unsigned char i;
   Res=PT_R*100;
 
   if( Res < 32 ) return PT_ERR_VALUE;
 
   for(i=0; i<RES_PT_INDEX_MAX; i++)
   {
     if(Res>=RES_PT[i]) break;
    }
    if(i>=RES_PT_INDEX_MAX)
    {
        return PT_ERR_VALUE;
     }
   return TEMP_PT[i];
}
 

 如果将函数名称改一下,就不需要注释也可以。比如改做 

int getTempLookForTable( float RK );

直译查表获得温度,参数电阻,单位是K欧姆。  

 

int getTempLookForTable(float RK )
{
   unsigned int Res;  
   unsigned char i;
   Res=PT_R*100;
 
   if( Res < 32 ) return PT_ERR_VALUE;
 
   for(i=0; i<RES_PT_INDEX_MAX; i++)
   {
     if(Res>=RES_PT[i]) break;
    }
    if(i>=RES_PT_INDEX_MAX)
    {
        return PT_ERR_VALUE;
     }
   return TEMP_PT[i];

 

  不需要注释,也可以读明白。所以现在也不必固执认为注释越多越好。如果风格比较好,注释可以比较少。

  书中介绍很清楚,法律信息、版权信息还是要写明白的。