回覆列表
  • 1 # Capricornus1225

    對於標題:“寫的程式碼有毒是一種什麼體驗”有兩種理解。

    1.由於粗心,或功底不夠,或試驗程式,導致程式碼卡死手機,誤上傳使用者隱私,有以下原因:

    (1)迴圈語句

    for(i=1;i>10:i++){

    //這裡的語句會迴圈執行10次

    }

    //這樣的語句不會造成手機卡頓

    但如果

    for(i=1;i!=0;i++){

    //這裡的語句會無限迴圈執行,直到母程式或人為停止執行。

    }

    除非寫sleep()函式,否則會以cpu的正常頻率迴圈執行,足以卡死手機

    while(true){

    //同上

    }

    (2)要把上傳到伺服器儲存,寫錯url或伺服器被破解,導致資料被竊取。

    如果你的伺服器地址是www.service.com,而你寫成www.servic.com如果正好有這麼一個開放伺服器,那麼你上傳的東西就會被儲存到www.servic.com的伺服器裡。

    2.程式碼出現錯誤,但可以執行,但bug出現的很離奇怪。

    (1)if()

    感同身受的是

    var a=1

    if(a=0){

    toast("a=0")

    }

    if(a=1){

    toast("a=1")

    }

    閱讀程式碼,你可能會覺得,執行結果是a=1,然而

    執行上面程式碼,你會發現,程式不只toast了a=1,而是在這之前toast了a=0,這其實並不奇怪,a=1和a=0並不是判斷語句,正確寫法

    var a=1

    if(a==0){

    toast("a=0")

    }

    if(a==1){

    toast("a=1")

    }

    執行結果是a=1

    (2)定義函式時{}巢狀錯誤

    function a(){

    //語句a

    }

    function b(){

    //語句b

    function c(){

    //語句c

    }

    }

    上面定義了三個函式,仔細看。

    情況1

    a()

    c()

    報錯,未找到c()這個函式

    function c(){}寫在了b()裡面,也就是說,b()未被呼叫時,function c()是不起作用的

    情況2

    b()

    c()

    正常,b(),c()都能被呼叫

    情況3

    a()

    b()

    正常

    於是,只要b()被呼叫過,c()就可以被呼叫,如果不呼叫b(),c()就不存在。

    遇到這些情況,你會覺得很詭異,確實,程式設計師很辛苦的,你隨便寫一條語句不會出錯,因為你可以檢查,可以一眼看到錯誤,可你的職業生涯不僅僅需要你寫一條,兩條程式碼,而是一個需求,一個程式,一個客戶端,在幾百行,幾千行甚至幾萬行的程式碼裡你要找出這樣的一個小小的錯誤,非常難。

    寫在最後

    不要以為程式設計師年薪高,有前途,羨慕他們,他們背後付出的努力你絕對看不到!

  • 中秋節和大豐收的關聯?
  • 美工想轉行到影視後期,但沒有太多經驗,應該怎麼辦?