剑网3指尖江湖职业推荐 www.1468054.com 我曾經為一家美國著名的國防承包商工作過。我很高興我做到了,因為它是我一直的夢想;但我也很高興有機會繼續前進。我學到了很多,遇到超多了不起的家伙,而且只要我活著,就永遠不會縮寫另外一個變量。

我效力過一個隱形飛機的項目,這里不提它的名字,它主要負責制造雷達接收器。你可以能會問,“為什么隱形飛機還需要雷達接收器?”這主要有兩個原 因。這些接收器是定制的,專門用來接收和識別地理位置以及敵方系統發射雷達脈沖的國籍。首先,知道敵方雷達的地理位置,可以幫助你避免意外飛過他們的上空 (如果你的影子飛過敵方空軍基地上空,卻沒有被雷達發現,那是極好的)。第二,它讓你分析敵方在哪里尋找你(比如在一個山頭上出現了一個俄國的防空導彈基 地,上個月還沒有呢,那你就知道一定有些東西在上面)。

6 個月才解決了這個小 Bug0

當接收器在測試實驗室的時候,你經?;崢吹?20~30 磅的精美的航空級鋁,里面塞滿了 10~20個 定制的電子卡,上面運行著價值 50~100 萬美元的軟件。移動接收器很容易,絕大多數我在實驗室里處理的,都是空軍部隊在使用中遇到某些問題的。本質上,99.9% 的這些問題都是電子問題,我們不得不欺騙這個盒子,讓它認為自己飛在空中,并接受敵方的雷達脈沖。測試儀器和軟件在當初采購時,可能是很先進的,在合同獲 準后都維持不變。然而,因為它們是上世紀 90 年代獲準的,你可以想象我們20年后還不得不處理這些遺物。以 MHz 計量的古老 CPU,比我還要老的操作系統,軟件的用戶友好特性根本無從談起。我工作的一部分是執行新的合同,負責將升級原有測試儀器以及在上面運行的軟件。接下來, 有趣的事情發生了。

這項宏大的任務有很多層,我負責的一層是在同一個接收器上運行新舊兩個測試,看結果有什么不同,找到軟件的問題,然后修正它。因為有很多小問題要處 理,所以事情進展地相當緩慢但是還算穩定,但是 SlowPOP 給我留下的印象卻揮之不去。SlowPOP,也被稱為“慢上升時間的脈沖疊加”,這項測試用來保證在接收到兩個疊加的雷達脈沖,而且脈沖的上升、下降時間 比正常時間要慢很多的情況下,接收器還能正常工作。這些細節不但枯燥而且還屬于機密,所以可以這么說,結果相當糟糕。輸入參數稍有調整,測試就可以通 過……差不多是這樣……但是這仍舊不太正常,后面調整的參數和原始參數并不是很接近,這讓我很不舒服。

我不停地重啟,重新校準,重新安裝(軟件),重新測試、測試、不停地測試。

我不斷地詢問,調查,請求,追問,推測。

隨后幾個月,我們發布了其它可以通過測試的版本。

有趣的是,每當我問到 WaveGenAPI 函數的時候,每個人都說“那個函數不可能有問題,其他 80% 的測試都在使用它,而且它也正常工作一年多了?!?/p>

最后在檢查所有可能后,我知道必須要檢查 WaveGenAPI 了。

當我研究 WaveGenAPI 函數代碼時,經過幾天的努力,我找到一些線索。有一行代碼看上去不太對。它添加了一堆術語,其中有一個術語看上去不太對。我請 WaveGenAPI 的作者(他有令我羨慕的 26 年經驗)下到實驗室,和我一起看結果。他沉默地盯著那行代碼差不多有半個小時,只問了這個問題的基本信息,包含了基本的檢查和可能性。最終他只說了一句 “做得好”,然后我們握手,他就離開了。

問題找到了:一個文件?→?一行代碼?→?一個術語?→?一個變量?→?一個字母

當時,這位資深程序員接受的訓練就是要限定變量名的長度,他在實際工作中使用的變量名長度都不會超過 8 個字符。在這個案例中,有問題變量的含義是脈沖“下降沿十分之一高度的時間”。這個術語應該縮寫成 “Ttpfe”,但是他錯誤地把它命名成“Ttpre”,而它卻正好代表相反的含義,即“上升沿”?!癟tpre” 這個術語也存在了,所以這個拼寫錯誤才不會造成“undefined”錯誤。而且除了 SlowPOP 以外,所有測試的時間差異都在1個皮秒內(譯注:1皮秒等于百萬分之一微秒)。發現和修訂這個錯誤,是對我六個月工作的最高嘉獎,并且是迄今為止我職業生 涯中找到最讓人滿意的 bug。

這就是為什么,只要我活著,就永遠不會縮寫變量名。

簡而言之,我花費了 6 個月的時間去查找一個錯誤的字母,而它是一個比我多 26 年工作經驗的工程師所犯的輸入錯誤。

余下全文(1/3)
分享這篇文章:

請關注我們:

發表評論

電子郵件地址不會被公開。 必填項已用*標注