程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 引入中間變量使程序更易讀

引入中間變量使程序更易讀

編輯:關於C語言

今天查看自己為《專業嵌入式軟件開發》一書所寫的代碼時發現,個別函數由於沒有引入中間變量,使代碼行既長又不易讀。重構前後的代碼如下所示。
 
重構前:
if (TIMER_STARTED == _handle->state_) {
    timer_handle_t next;
    
    if (g_timer_next == _handle) {
        g_timer_next = (timer_handle_t) dll_next (&g_bucket_firing->dll_, 
            &_handle->node_);
    }
    next = (timer_handle_t)dll_next 
        (&g_buckets [_handle->bucket_index_].dll_, &_handle->node_);
    if (0 != next) {
        next->round_ += _handle->round_;
    }
    dll_remove (&g_buckets [_handle->bucket_index_].dll_, &_handle->node_);
    if (g_buckets [_handle->bucket_index_].reentrance_ > 0) {
        g_bucket_firing->level_ ++;
    }
}
 
重構後:
if (TIMER_STARTED == _handle->state_) {
    timer_handle_t next;
    bucket_t *p_bucket = &g_buckets [_handle->bucket_index_];
    
    if (g_timer_next == _handle) {
        g_timer_next = (timer_handle_t) dll_next (&g_bucket_firing->dll_, 
            &_handle->node_);
    }
    next = (timer_handle_t)dll_next (&p_bucket->dll_, &_handle->node_);
    if (0 != next) {
        next->round_ += _handle->round_;
    }
    dll_remove (&p_bucket->dll_, &_handle->node_);
    if (p_bucket->reentrance_ > 0) {
        g_bucket_firing->level_ ++;
    }
}

 


作者 李雲

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved