Top Ad unit 728 × 90

Breaking News

軟體下載

程式設計中一些令人抓狂崩潰的規則

程式設計中一些令人抓狂崩潰的規則

許多年前在程式語言設計和操作系統上的選擇可能當時看起來無關緊要。但是,這些古老的決定至今仍然繼續困擾著軟體開發者。下面所介紹的就是一些在程式語言和操作系統裡的那些讓開發者崩潰的過時的選擇。...

眾所周知,軟體開發者每天都要做各種各樣的決定:如何最好的實現功能、如何修復bug、如何提升應用程序的性能等等。但是他們同樣是在別人的勞動成果下面繼續做自己的決定的,比如說:他們使用的是別人開發出來的程式語言和操作系統以及各種開發工具。一些語言開發和系統設計行業裡的前輩以前所作出的決定在那個時候可能是很有意義的,不過在現在看來可能是多此一舉。

舉例而言,在2009年的時候,網際網路創始人Tim Berners-Lee就承認,網際網路網址中http:後面的兩條斜線//其實並無必要,他為這帶來的不便致歉。Tim Berners-Lee以幽默的環保角度道歉說:真不知道這兩條斜線浪費了多少時間、打印墨水和紙張。

除此之外,對於每天都要寫程式代碼的軟體開發者來說,前輩們當時做出的令後人覺得悲慘的決定還遠不止這些。接下來就介紹一下在程式語言和操作系統裡的那些讓開發者崩潰的過時的選擇。

1. Unix隱藏dot文件(“.” 文件)


早期的Unix操作系統就這樣設計過:當通過ls命令把目錄內容列出來的時候,任何以.開始的文件或目錄會在默認情況下被隱藏起來。

程式設計中一些令人抓狂崩潰的規則

從目錄列表裡隱藏當前(.)或者是隱藏根目錄(. .)的方法將所有帶. 的文件有效地隱藏起來了。從那時起,點文件經常性的會被忽視掉,同時也成為一種提供惡意文件的簡單方法。

“在之前的40年裡,因為這一個小小的走捷徑而導致多少bug的出現?浪費了多少CPU循環?出現了多少人為失誤?所以我們應該記住:下次如果你還想在程式代碼裡抄近路的話,一定要想想之前的教訓。”—— Rob Pike

2. JavaScript使用+字符串連接


大約在20年前,當Netscape首先開發JavaScript的時候,他決定大量使用+操作符來連接字符串,主要是用在數字加法運算和字符串連接這兩方面上。

程式設計中一些令人抓狂崩潰的規則

可是最後結合JavaScript的弱類型發現,使用+操作符通常會導致數值變量的連接,而不是數值的加減。其他的程式語言同樣選擇了不同的連接操作符,或者是安排專門的程式設計師嚴格輸入變量,以防混淆。

“當我第一次學習JavaScript的時候,真的把我害慘了,因為前後不一致的的輸入行為使得很難在最後的檢查過程中發現bug。”—— Chris Dutrow

3. Microsoft選擇反斜線作為路徑分隔符號


在1983年的時候,微軟發布了MS-DOS 2.0,它包括了一個目錄層次結構,就像Unix。但是和Unix有所不同,Unix使用正斜線(/)來分割目錄路徑,微軟使用了反斜線(\),原因是,正斜線已經被用於表示命令行選項,所以微軟選擇了反斜線。

程式設計中一些令人抓狂崩潰的規則

反斜線在Unix和其他的例如Perl 和C語言中主要是用來區分後後面緊跟著的字符,所以這給程式設計師帶來的痛苦就是要經常在正斜線和反斜線之間來來回回的兜圈子,以免出錯。

“回想起來,我覺得這是一個可怕的決定,但是換成是我的話,當時可能會做出同樣的舉動。”—— Dave Lindbergh

4. Python使用縮進表示塊


絕大多數程式語言使用明確的分隔符號,例如用大括號來表示語句的分組,而Python卻不是這樣的,它使用前導空白(空格和Tab)來表示哪一個塊屬於哪一行程式代碼。

程式設計中一些令人抓狂崩潰的規則

事實上,只有那些經驗豐富的Python程式設計師比較傾向於使用這個功能,而對於那些新手或者是不常使用它的程式設計師來說,別提有多惱怒了,尤其是剪下程式代碼、複製貼上程式代碼、改變平台,或者是重構程式代碼的時候。

“在兩個平台之間轉換的過程中,你會發現這真是程式語言裡的極品功能啊!”—— Joe Zitzelberger

5. Tony Hoare發明了空引用


在1965的時候,英國著名計算機科學家Tony Hoare將空引用概念引入到ALGOL W語言裡,以確保所有使用的引用內容都是安全的。一直到現在,這一發明都存在於大部分程式語言裡。

程式設計中一些令人抓狂崩潰的規則

編譯器是不會抱怨空指針的,但是想要廢棄一個可能會導致運行時錯誤或系統崩潰的引用的話,那麼程式設計師必須設法做一些防禦措施或者是調試工作。

“我認為它是一個導致數十億美元損失的錯誤。”—— Tony Hoare

6. JavaScript使用分號插入


JavaScript中分號表示語句結束,但JavaScript會自動的在它認為合適的地方插入分號。例如在程序結尾,或者在緊接1個新行的return語句後面。

程式設計中一些令人抓狂崩潰的規則

在某些情況 ​​下,return後面可能會有大括號和新的程式代碼塊,這種情況下,如果自動插入分號,就有可能導致語法錯誤。

“這一功能著實讓開發者的工作出現了一點混亂,尤其是當你為一個生產環境壓縮程式代碼的時候。”—— Mike Nelson

7. 如何表示日期


在如何表示日期這一問題上已經產生過很多比較有效地選擇方案了,例如只使用兩個數字或者是更少的數字來表示年份,可以被四整除的年份是閏年,或者是像Unix系統那樣提供的基本時間服務是國際標準時間公元1970年1月1日00:00:00以來​​經過的分秒,這種秒數是以數據類型time_t表示的。我們稱它們為日曆時間,日曆時間包括時間和日期。

程式設計中一些令人抓狂崩潰的規則

只使用兩個數字或者是更少的數字來表示年份就會導致眾所周知的Y2K問題,計算閏年的過程中也是會出現很多bug,有些系統照樣會出現Y2K38 問題。

“在20世紀60年代的時候,內存的價值大約為1美元/字節。所以,在60年代或者是在80年代的時候使用2個數字來表達年份是很合理的。可問題就在於是穩定而精確的軟體所運行的時間完全超出了其預期的設計時間。”—— Fred Krampe

程式設計中一些令人抓狂崩潰的規則 Reviewed by Whoops SEO on 2:46 下午 Rating: 5

沒有留言:

All Rights Reserved by TechRoomage | 科技空間 © 2014 - 2015
Designed by TechRoomage

聯絡表單

名稱

以電子郵件傳送 *

訊息 *

技術提供:Blogger.