apple搞笑的 goto bug

最近很流行的:

 if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
        goto fail;
    if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
        goto fail;
        goto fail;
 if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
        goto fail;
apple軟體實力本來就很差, 寫出這種搞笑的bug不用太在意.
之前使用Xcode天啊, 這比10年前的 vc++還爛.
看一個開發工具很不好用, 看  debug就曉得.
在xocde裡面 在  debug模式 竟然 無法看到全域變數的數值?
把函數寫在class裡面, 在函數內設中斷點, 竟然進不進去?


我不喜歡用goto, 反而常用 return;
上面我會怎麼寫?

if( SSLHashSHA1.update()==ERROR ){  Release();   return FAIL: }
if( SSLHashSHA1.final()==ERROR  ){  Release();   return FAIL: }

對齊 都好看多了.
========

笨蛋才會用一堆奇怪的goto.
Dijkstra寫的內容也是其一貫的犀利語氣,文中說:「幾年前我就觀察到,一個程序員的品質是其程序中goto語句的密度成反比的」
===========
這就是我反對用 public, virtual, 過多的template.

愈是弱腳的就喜歡用一些奇奇怪怪的語法, 還有甚麼Boost? 連學 都懶的學.
你知道 STL的 vector 在push_back() 會呼叫  ~class() 嗎?
有一個 class A;    push_back(A); 會呼叫  ~A()  嗎?


如果你無法100%了解的東西就不用要用.

===============
 http://coolshell.cn/articles/11112.html

  • if (!p)    和  if (p == NULL)
  • if (p)    和  if (p != NULL)
  • if (!bflag)  和 if  (bflag == false)
  • if ( CheckSomthing() )  和 if ( CheckSomething() == true )
  •  
 要是我就一律規定 只能寫右邊的方式.

=========

現在我的程度 這種c++等級的bug, 對我已經沒有挑戰性了(當然只對我自己寫的code)

寫3D你才知道甚麼是困難.

3D哪種bug, 是你明知問題就在這裡,  很遺憾 你是無法解決.



沒有留言:

張貼留言