夥伴們快去學習《代碼大全》吧

放假,在讀一些書,其中提到《代碼大全》一書,所以找來看看(其實手上有英文版,不過懶得去啃英文,因此錯過了和這麼好的書早點見面的緣分),

把中文版拿來一看,纔讀了一點點我就被震驚了,所以推薦大家一定要讀代《代碼大全》這本書,有多麼經典隨便搜索下評價就可以知道了。


震驚的案例,是因爲平時工作中看到一個處理優先級的代碼,把優先級的值放到一個數組中,而沒有做類似if ... else ...的判斷,真的是太經典。

自己寫了個demo如下,作爲簡單的參考,簡單的引子。




#include <stdio.h>
#include <stdlib.h>


/*
* 業務類型 serviceType: 775 516 777 258 259
* 優先級權值 priorityLevel : 80 ,100,30,3,30
*/
unsigned int PriorityLevel[5] = { 80,100,30,3,30 };


/*  以表格訪問的形式獲取業務的優先級的值
*/
unsigned int GetPriorityFromTable(unsigned int serviceType)
{
return PriorityLevel[serviceType%5];
}


/* 以分支的判斷的形式獲取業務的優先級的值
*/
unsigned int GetPriorityBranchStatments(unsigned int serviceType)
{
unsigned int retVal = 0;


//或者用switch case 語句,但是反正都是做分支判斷
if(serviceType == 777 || serviceType == 259)
{
retVal = 30;
}
else if( serviceType == 775)
{
retVal = 80;
}
else if( serviceType == 516)
{
retVal = 100;
}
else if( serviceType == 258 )
{
retVal = 3 ;
}


return retVal ;
}


/*
*  獲得一個權值,拿來計算一些東西,這裏示範了兩種方法,可以第一種的編碼風格的優雅,相當的舒服 。
*/
int main( )
{
unsigned int serviceType = 516;
printf("Priority Level %u \n",GetPriorityFromTable(serviceType));
printf("Priority Level %u \n",GetPriorityBranchStatments(serviceType));
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章