0. 程序員數數會(huì )從0開(kāi)始數起.
例: 程序員吵 架的時(shí)候會(huì )說(shuō): “我數三下, 你再不閉嘴我就不客氣了! 零! 一! 二!” 或者列清單的時(shí)候編號會(huì )從0.開(kāi)始寫(xiě).
因: array[0]是數組的第一個(gè)元素.
評: 這個(gè)習慣的養成是一個(gè)艱難的過(guò)程. 多少次的越界, 多少次的循環(huán)次數錯誤讓我們深深的記住了從0開(kāi)始.
1. 程序員用肯定和否定 回答選擇性的問(wèn)題.
例: 問(wèn) “您想喝咖啡還是喝茶?” 程序員答: “嗯.”
因: 當條件或||有一個(gè)子句值為真, 則整個(gè)語(yǔ)句值為真.
評: 這個(gè)習慣夸張了一點(diǎn), 但這的確是程序員思 維方式的通病, 用計算機的處理邏輯處理人類(lèi)問(wèn)題. 當然這樣的回答顯然是存在編程錯誤的, 因為對于這個(gè)問(wèn)題他錯誤的返回了布爾型的值. 雖然高度懷疑有沒(méi)有人關(guān)心這種回答的結果是怎樣, 還是給出一個(gè)答案. 如果真的在程序的世界里, 服務(wù)員會(huì )優(yōu)先考慮給你咖啡, 如果沒(méi)有咖啡了, 才會(huì )端茶給你.
2. 程序員普遍患有或曾經(jīng)患有分號結尾綜合癥;
例: 比如這幾行;
因: 大部分程序, 特別是多數程序員的啟蒙編程語(yǔ)言C語(yǔ)言是用分號結尾語(yǔ)句的;
評: 換行之前習慣用分號結尾, 這是程序員專(zhuān) 屬的壞習慣. 還記得編譯報的各種詭異的錯最后原因總是少了那一個(gè)小小的”;”嗎? 這就是這個(gè)壞習慣的成因. 據說(shuō)分號結尾是有典故的, 因為鍵盤(pán)上的分號正好在右手小拇指的位置, 比起句號之類(lèi)有著(zhù)得天獨厚的地理優(yōu)勢. 當然也有不需要分號結尾的編程語(yǔ)言(比如Ruby還有Python), 剛用起來(lái)會(huì )因為沒(méi)有分號結尾而格外糾結.
3. 程序員對”語(yǔ)言”的概念和普通人有差.
例: 問(wèn): “你都會(huì )哪些語(yǔ)言?” 普通人: “我會(huì )漢語(yǔ)和英語(yǔ), 還會(huì )一點(diǎn)點(diǎn)法語(yǔ).” 程序員: “我會(huì )C語(yǔ)言, C++ 和 Java, 還會(huì )一點(diǎn)點(diǎn)Ruby.”
因: 程序員的世界里沒(méi)有母語(yǔ)和外語(yǔ), 只有編程語(yǔ)言.
評: 說(shuō)真的, 程序語(yǔ)言的語(yǔ)法學(xué)起來(lái)比外語(yǔ)更容易, 拿到一個(gè)用沒(méi)學(xué)過(guò)的語(yǔ)言寫(xiě)的程序, 你多少可以看懂部分程序. 程序語(yǔ)言沒(méi)有國界, 是各國程序員交流最好的橋梁.
4. 程序員格外格外的厭惡括號/引號不配對的情形.
例: 看到這樣的內容 (舉個(gè)簡(jiǎn)單的例子(我知道你懂的), 你能表示”我很淡定我不抓狂嗎?
因: 各種不配對問(wèn)題會(huì )導致編譯錯誤.
評: 掃視代碼, 對不配對的情況異常敏感, 瞥一眼就能發(fā)現哪里少了個(gè)右括號. 這種癥狀在使用那些帶自動(dòng)補全功能的開(kāi)發(fā)環(huán)境時(shí)變得更為糾結.
5. 程序員認為 千(k) == 1024.
例: 程序員換算表: 1km == 1024m, 1kg == 1024g.
因: 成因很曲折 計算機是二進(jìn)制的世界 -> 1024是2的10次方 -> 英語(yǔ)里用kilo一詞來(lái)表示 -> kilo翻譯成中文是”千”, 比如千米, 千克.
評: 也許一般人會(huì )認為500, 1000是很整的數, 但程序員會(huì )覺(jué)得512, 1024是很整的數. 不要奇怪, 如果128, 256, 512這種形式看著(zhù)不夠整, 幫你轉換成二進(jìn)制: 10000000, 100000000, 1000000000…
6. 程序員慣用 == 來(lái)表示相等的意思.
例: 見(jiàn)5.
因: 在程序語(yǔ)言中, “=” 是賦值, “==” 才用來(lái)判斷二者是否相等.
評: 單等和雙等的區別是程序入門(mén)必修課, 也是老師愛(ài)考的考點(diǎn). 如果在C語(yǔ)言if語(yǔ)句的判定條件里寫(xiě)了個(gè)單等, 編譯能通過(guò), 結果卻往往不對, 夠一個(gè)新手查上一陣子的. 當然目前的語(yǔ)言大都考慮到這一點(diǎn), 防止了這類(lèi)的誤寫(xiě), 但是單等和雙等的差異已經(jīng)深入每個(gè)程序員的 內心.
7. 程序員使用”//”表示”請無(wú)視這一行文字”.
例: 餐廳中. 程序員A: “我吃魚(yú)香肉絲蓋飯, 你吃什么?”
程序員B: “宮保雞丁蓋飯.”
程序員A 在點(diǎn)菜單寫(xiě)上:
魚(yú)香肉絲蓋飯 1
宮保雞丁蓋飯 1
程序員B: “我還是要牛肉面吧!”
程序員A 更正點(diǎn)菜單:
魚(yú)香肉絲蓋飯 1
// 宮保雞丁蓋飯 1
牛肉面 1
因: 程序中用”//”為代碼加上注釋, 程序運行時(shí)會(huì )無(wú)視掉”//”開(kāi)頭的代碼行.
評: 如果和一伙程序員在一起時(shí)被冷落了, 可以抱怨一句”喂喂喂我是被注釋掉了嗎?” 相信一向以幽默感豐富又有愛(ài)心著(zhù)稱(chēng)的程序員們會(huì )關(guān)注你的.
8. 程序員有 中文標點(diǎn)恐懼癥.
例: 如果你注意到了, 這篇文章自始至終都在使用英文標點(diǎn), 這就是最好的例子.
因: 程序中的全部符號都嚴格需要是英文半角標點(diǎn).
評: 這個(gè)壞習慣是有中國特色的, 中國程序員特 有的. 任何一名優(yōu)秀的我國程序員都應該可以作到區別中文標點(diǎn)和英文標點(diǎn). 比如, 和,還有 ’和 ‘. 真的, 當年初學(xué)編程的時(shí)候, 諸如 “error C2018: unknown character ’0xa3′” 的錯誤看得還不夠多嗎!
就是這樣一群人, 如果你慢吞吞的用電腦他們會(huì )急躁的搶過(guò)鍵盤(pán)熟練的使用各種快捷鍵, 他們會(huì )對著(zhù)小孩子講計算機的三原色是紅綠藍而不是紅黃藍, 他們描述大小距離更偏向于以像素作單位, 陪女朋友看電影看到電影院座位上稀稀落落的人就想做磁盤(pán)碎片整理…抱怨歸抱怨, 這不也正是他們的可愛(ài)之處嗎!