Javascript代碼編寫的邏輯冗餘

來源:互聯網
上載者:User

資料冗餘,用空間換取空間。

最常見的就是,關係型資料庫設計,故意加其它table出現過的欄位,然後查詢某些資料就不用跨表查詢,這樣查詢效率較高,這是優點。

優點之後是缺點,缺點就是,修改資料,要跨表修改。

那麼,邏輯冗餘呢?

我遇到的情況之一就是,js自身的bug了,就是浮點數運算,偶爾會算著算著,突然冒出個結果是.0000000000之類。

(這個呢,本身就是語言錯誤,那麼我們要不要進入這個語言的原始碼,來改寫我們的js代碼。可以,但代價高。

而且,語言自己也會升級,當發現這是個bug,下個版本大多數情況下會修複。於是你以前寫的代碼很可能被廢棄了。)

於是,在js浮點數計算裡面,基本用toFixed(n)來保證你要的精確度,不止一次使用,可能的話,處處使用。

用代碼數量換取結果的準確性。cpu對於同個邏輯執行好幾次。

因為有時候,對於某段代碼的執行結果,你也不敢確定。尤其是修改別人的代碼。這時候你就要邏輯冗餘。

優點就是,保證運算的結果準確性。

缺點就是,下次修改代碼,處處修改。

 

另一個邏輯冗餘的例子:

function bubble_sort(array){
    var i,j,temp,array_length = array.length;
    for(i=0; i<array_length; i++){//第n次
        for(j=0; j<array_length; j++){//篩選出最大值,調換
            if(array[i] < array[j]){
                temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
    }
    return array;
}

上述例子,是冒泡排序。

在第二個for迴圈裡面,其實沒必要每次都迴圈array_length次,這樣會增加判斷次數,從而增加cpu負擔。但是結果還是一樣。

從效能上說,這不是塊好代碼。

但從代碼的記憶上,和編寫上,是塊好代碼。 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.