每一個程序都須要操做Loop, Loop看之簡單其實大有學問。這篇講講如何有效操做loop 函數
好比你想作以下操做 oop
for ( i = 0; i < count; i++ ) { if ( sum_type == SUMTYPE_NET ) { net_sum = net_sum + amount[ i ]; } else { gross_sum = gross_sum + amount[ i ]; } }
這段代碼裏面有個判斷語句(if sum_type == SUMTYPE_NET)執行力count次,其實下降了軟件的速度,你大能夠重寫一下從而提升速度。 優化
if ( sum_type == SUMTYPE_NET ) { for ( i = 0; i < count; i++ ) { net_sum = net_sum + amount[ i ]; } } else { for ( i = 0; i < count; i++ ) { gross_sum = gross_sum + amount[ i ]; } }能夠繼續優化代碼,你能夠把for() 循環的代碼放到一個函數裏面,提升閱讀能力.
if (sum_type == SUMTYPE_NET ) { net_sum += get_sum(amount, count); } else { gross_sum += get_sum(amount, count); } int get_sum(amount[], int count) { int sum = 0; for ( int i = 0; i < count; i++ ) { sum = sum + amount[ i ]; } return sum; }
有時候其實兩個循環能夠徹底合併爲一個,好比以下代碼 spa
for (int i = 0; i < employee_count; i++) { employee[i].name = ""; } ... for ( int i = 0; i < employee_count; i++) { employee[i].earning = 0; }代碼徹底能夠合併爲以下代碼,節省了N個循環
for ( int i = 0; i < employee_count; i++) { employee[i].name = ""; employee[i].earning = 0; }
for ( i = 0; i < rate_count; i++ ) { net_rate[ i ] = base_rate[ i ] * rates->discounts->factors->net; }這是一段正確的代碼,可是有點難以理解,在這種狀況下,咱們能夠經過交換(臨時變量)來提升代碼的閱讀性。
quantity_discount = rates->discounts->factors->net; for ( i = 0; i < rate_count; i++ ) { net_rate[ i ] = base_rate[ i ] * quantity_discount; }
如何編寫高質量的代碼 .net