程序員都有哪些強迫症行為?

我雖然不是程序員,偶爾寫寫代碼,提升工作效率, 但是寫代碼時, 會強迫自己縮進,看到不縮進的代碼,特別難受, 喜歡強迫自己寫注釋,看到沒注釋的代碼就想一把扔過去。 還有的人寫C語言強迫大括弧換行, 還有的人強迫自己用vim或者emacs編輯器, 都有哪些強迫症? 這些強迫症是否可以治療?


乘電梯的時候看著電梯的按鈕面板(UI)常常會開始思考電梯的調度演算法,然後仔細一想好像狀態挺多的,多個實例之間狀態可以互相影響,還涉及到一些優先順序、加速度、預判方面的東西,仔細想想其實挺複雜的,然後還沒等到出電梯就放棄了。
然後不知道哪次坐又會望著面板開始想。

//-------------------------
//看評論病友還真不少啊


習慣按Ctrl+S??有時候看網頁看著看著就Ctrl+S一下,之後突然反應過來不對??

看到bug就想改??即使不是自己的bug??還喜歡找bug,看到登錄框就想試試能不能SQL注入??有時候還會抓包或者發假包??

看到一個軟體就會想自己要做的話怎麼做??


不是自己的電腦不能開展工作算嗎?


編寫一個有返回值的函數的時候一定要先在底部先隨便return個東西讓IDE不報錯,否則看著紅紅錯誤提示就會不舒服斯基。


很簡單,你丟一段代碼給一個程序員,其中一部分的縮進是4個空格,一部分是默認的tab(不要把tab設成4個空格)。 沒多久這個程序員就會暴走,然後不厭其煩地教育你……


Whitespace Obsessive-Compulsive Disorder 是屬於 Source Code Formatting Obsessive-Compulsive Disorder 的一種,如有以下徵狀:
「為什麼這行行末會有空格?!」
「為什麼這逗號後沒有空格?!」
「這裡為什麼是 tab 而不是 4 個空格?!」
「不是說好用 LF 不用 CR+LF 么?!」
「為什麼這源文件最後一行不是空行?!(C99標準)」


我寫程序時,聽且只能聽三首歌:
調代碼:I hate myself and I want to die ---Nirvana
寫代碼:Baby you"re a rich man ---- The Beatles.
改代碼:歷史的天空 ----- 毛阿敏

在我不斷探索下,我終於找到了等編譯時候聽的歌。
Derezzed by Daft Punk.


寫代碼對我影響還是不小的,下面從正負兩面簡單列舉一下:

負面影響:
0.隨身攜帶一個U盤啟動盤,裡面有各種Ghost鏡像,生怕去哪家親戚對方說「哎,花生真是長大出息了,你說你是程序員?正好最近電腦特別卡,你給我「修修」or「重裝」系統吧~~」
要是手裡沒有U盤啟動盤表示做不了,對方又該開啟嘲諷模式了......
所以我現在走到哪都帶個U盤啟動盤,走到哪系統做到哪,前段時間去朋友家還給他家的筆記本和台式機重裝了系統......
當然也有沒有救的情況:
「電腦卡怎麼辦?」
「(看了下電腦,嗯,1G的內存)換電腦。」
「手機也卡怎麼辦?(知道電腦是3年前的電腦)」
「(中關村查下型號)換手機......」
「這不科學!手機是半年前才買的」
「可是你你半年前買的是1年前的手機啊」

1.習慣的Ctrl+S按鍵。在瀏覽網頁的時候總是習慣的按Ctrl+S,這種情況特別是在某些有文本編輯功能的網站中出現的頻率多,比如知乎和論壇什麼的,完成一段文字就想來一下,而且彈出文件保存窗口我還會覺得很詫異?!
「哇,編輯了一大段文字,容我Ctrl+S保存下。」
「欸?怎麼彈窗了,難道我一直沒存文件?」
「等等,我現在是在...」

2.寫分號「;」;有時候會在一個句子結束後習慣性的寫分號;有段時間寫JavaScript的時候(一門可加分號也可不加的奇怪語言);經常告訴自己要養成加分號的好習慣......;然後就帶到日常打字中了......;
最不能忍的就是,在群里聊天用分號,他們竟然說我強行秀!太過分了!識破速度太過分了!

3.經常添加空格來增強句子可讀性。比如日常中有時會用到一些符號兩邊會空格。
「吃貨 = 努力 + 選擇」
「水果沙拉活動 - 策劃」
錢多話少死的早,智商傳給下一代。
—— 布時沃·碩德

4.注意文本對齊。但是有時會因為不是等寬字體所以對不齊......很難受
張三 -------- 2014
王麻子餅 -- 2015

6.打開電腦第一件事是啟動Firefox,然後起身去干點別的......不過最近把Firefox清了清插件,裝在ssd里,啟動速度快多了,20秒內就能啟動好了(′?`∩)
Firefox是一款瀏覽器,火狐瀏覽器。
第一次接觸Firefox覺得這瀏覽器絕了,就像匯源果汁一樣(果汁竟然可以做的那麼難喝),瀏覽器竟然可以啟動這麼慢,比肩Photoshop,死國矣!
......然後就愛上了Firefox,一直作為主瀏覽器用。要說為什麼呢,可能是說出去比較有氣勢吧。
「嘿,你用什麼瀏覽器?」
「瀏覽器?我一般用搜狗瀏覽器」
「哦哦,我用Firefox(提高音量)」
嗯,大概是 啟動最慢+名字最霸氣 的瀏覽器了。
PS:其實用Firefox有比較深層的原因,詳見:徵文:你為什麼選擇Firefox? - 花生PeA 的回答

7.電腦桌面一個圖標都沒有(win7),啟動全靠工具欄的桌面功能。

(壁紙來自Pixiv國人畫師「Rella」のプロフィール [pixiv]的作品【初音ミク】「asteroid」イラスト/Rella [pixiv])

8.一本正經的胡說八道更像真事一樣了。
「嘿,花生,找著對象了沒?」
「找到了(內心:new Object();)」
「找到了?這麼厲害?」
「那當然,以前只是我不想找,要是我想的話,哼哼~~(內心:while(1) new Object();)」

9.能聽懂理解別的程序員的言外之意。
我聽過對我說的最狠的話:
「花生,聽說你正則表達式寫的好?」
「也不能說好吧,也就會簡單用用」(內心:哇咔咔終於可以秀一波了!快問我快問我~)
「哦,怪不得寫字都像正則表達式一樣」(轉身走)
「!!!」(石化中)
寫個簡單的郵箱正則表達式你們感受下:/^w+@(w+.)+w+$/i
(PS:由於正則表達式可讀性很差,所以寫的時候清晰,但是一換行,花生就再也不認識它了)
「你的字就像正則表達式一樣!」
「就像正則表達式一樣!」
「表達式一樣!」
「一樣!」
(O_O;) 莫大的羞辱啊!!

a.你們以為下一條是第10條嗎?不,我是不會讓前導數字破壞整天對齊的!看我祭出遠古禁術 —— 16進位 !
(狂風大作,答主站在一個巨大的魔法陣中央,四周有很多奇怪的字元旋轉著......仔細一看好像是...0123456789abcdef)


b.差點忘說最大的變化,自從寫代碼以後,最大的變化就是笑點變的極低。
有時候會因為別人一句無意抖機靈的話笑很長時間,笑到肚子疼嗓子啞。
有一天晚上,在知乎看到了一些日式冷吐槽的圖,然後就停不下來了......
而且現在有時候會莫名的發出笑聲,附近的人會覺得很詭異,其實只是我不小心想到某些好笑的事情了。
當然有時候是腦補的結果,就像上一條那樣

正面影響:
1.喜歡考慮後果和臨界值。曾經寫過一個面向用戶的爬蟲,由於用戶有可能沒有任何計算機基礎,所以我不得不花很大的一部分精力來考慮用戶有可能產生哪些不該發生的操作。
一開始是這樣的:
- 程序君:欸?用戶,你介個樣子叫我很難做咩......
後來乾脆:
- 按鈕君:你看不見我 你看不見我 你看不見我 ...
所以現在做一件事要比之前多考慮很多很多......

2.養成了反思的好習慣。每次有bug了,不用想,肯定是自己的錯,儘管認為自己沒有錯,但是肯定是自己哪裡錯了。然後就仔細反思代碼的邏輯哪裡不對......
所以生活中一件事情發生後我總是會反思自己哪裡做的不對,下次怎麼做。

3.忍耐度變高了。曾經寫了一個上千行的JavaScript爬蟲,沒有面向對象 沒有分層,亂的簡直是不堪入目,所以調試起來bug也是滿天飛,有時候風大丟能糊我臉上......
曾經被一個bug困擾了整整1天,一天什麼都沒幹,就為了調這個bug。而結果是,這個bug沒調好,反而倒是修復了很多其他奇奇怪怪的bug......而且還把我氣哭了好幾次......
現在的我已經被bug調教的很聽話了。


後記:
在知乎刷了大半年終於破百贊了...
(? ?????)??? 555
萬萬沒想到在知乎第一個破百贊的答案竟然是這個!謝謝大家的贊!!評論區也很有愛,幾乎能回復的答主都回復了,謝謝大家!!!
如果再又想到有什麼答主會在第一時間補充的,謝謝大家支持!

(????????? ? ??????????) 真的破1K了!

萬萬沒想到能夠得到3k的贊,但是實在寫空了(感覺大腦的葡萄糖被掏空)......


收藏癖:在Github上看到有意思的項目,就要點Star收藏,明知道自己十有八九是不會看的。

黑盒焦慮:對於一個庫、框架、完整的系統,總想弄明白它的內部實現。都是開源慣的。

愛折騰:喜歡造輪子,不管輪子已經被造了多少次,只要不是自己寫的,就不是最好的。看看現在有多少語言、web框架、前端mvvm框架。

------------------------
歡迎程序員關注我的微信公眾賬號:codergroup
一起討論那些只有程序員才懂的事。

http://weixin.qq.com/r/njq-p8vEHZZirY-E92_M (二維碼自動識別)


注釋縮進什麼的代碼風格規範里都會規定好啊。一般不會有太大的爭議。但總是有規範照顧不到的地方比如:

// 用這種……
void DoSomeExtraordinaryComplicatedWork(VeryLongClassA very_long_variable_name_a,
VeryLongClassB very_long_variable_name_b,
VeryLongClassC very_long_variable_name_c);

// 還是用這種:
void DoSomeExtraordinaryComplicatedWork(
VeryLongClassA very_long_variable_name_a,
VeryLongClassB very_long_variable_name_b,
VeryLongClassC very_long_variable_name_c);

// How about member initializer lists
class A {
public:
A(TypeA a, TypeB b, TypeC c, TypeD d) :
a_(a),
b_(b),
c_(c),
d_(d) {}

private:
// ...
};

class B {
public:
B(TypeA a, TypeB b, TypeC c, TypeD d)
: a_(a)
, b_(b)
, c_(c)
, d_(d) {}

private:
// ...
}

想要糾結多久就能糾結多多久!


看到程序猿的話題都要打開看一下( ′▽` )


去ide上的警告算嗎


我曾經強迫將拼接宏定義的""符號對齊到同一列上(而且是第57列),萬幸現在被治好了。


這個問題在雲棲社區中也組織了很多阿里技術大牛以及社區內技術牛人進行了討論,小編在此特地將優質答案分享出來:

作為程序猿,寫代碼是我們工作的主要內容。
以前,看到寫的混亂的代碼,我會有些反感,甚至會對著電腦一陣狂噴(*%#¥%*)。
後來,我發現是我太天真,要想寫出高效整潔代碼,真心不是一件容易的事情。
儘管如此,我還是一直在強制自己規範化、整潔化,
久而久之,我就強迫症了。

比如:
代碼必須要縮進;縮進堅決不用空格,必須用Tab。
重要地方必須要有注釋,注釋內容必須要清楚明了。
習慣在夜深人靜的時候碼字,把電腦也靜音,安安靜靜,碼得舒心!

開始的花括弧和函數名放在同一行,變數與操作符間要有空格,縮進是不統一的想給他統一縮進,寫完代碼要按ctrl+shift+f格式化代碼,做完修改按ctrl+s保存,ide報警告要把它們全消除掉。
在網頁填寫表單不小心就ctrl+s想保存一下,看到好的頁面要f12研究一下,新的東西總想去嘗試一番,看到某些好玩的功能總想知道怎麼實現的。


其實也還好,就是因為長期高壓的工作,思路是真的容易有慣性,尤其一群程序猿在一起的時候。

剛剛北京的一群程序猿朋友聚會,在ktv 玩,就是這種正常畫風的:

然後就開始玩吹牛的骰子遊戲,大概規則就是每人五個骰子,搖完了猜總數,猜錯喝酒。

結果玩了幾把以後大家就開始分析一個數出現多少次的概率最高,然後拋出來了兩個問題:
1. 5個骰子搖完以後出現某個數的概率是多少?
2. 5個骰子連續搖,開10次,連續出現某個數的概率是多少?

然後……

我們關了音樂拿出計算器認真的討論了一個多小時,並且實際搖了無數次測算公式的合理性
(ー_ー)

嗯,事後我也覺得程序猿有的時候是有強迫症的。
對了,最後算出來了一個公式,關於n 個人n個骰子的情況下,猜幾個的勝率比較高_(:3」∠ )_


這強迫症真沒法治,代碼必須縮進,縮進不能四個空格,必須Tab。不同內容之間要空行, 注釋必須要有。最煩那種一個文件里寫幾千行,還不注釋的,媽的改起來分分鐘想掀桌子
? ヽ(`Д′)? ┻━┻

打字的時候,打括弧都是成對打完了之後,再回頭填裡面的內容。

上網的時候,看到做的爛的網頁,必須把所有槽點都挑出來,在心裡默默吐槽一遍,然後開始腦補考慮怎麼改進。網頁出問題的時候,習慣性的Inspect element。

看到什麼東西,一般就會想,這功能怎麼實現的,什麼邏輯什麼演算法。。。然後開始腦補大概框架。。。

看到這個笑話的時候:

老婆給當程序員的老公打電話:下班順路買一斤包子帶回來,如果看到賣西瓜的,買一個。當晚,程序員老公手捧一個包子進了家門…老婆怒道:你怎麼就買了一個包子?!老公答曰:因為看到了賣西瓜的。


腦子裡是這樣的:

老婆給當程序員的老公打電話:

var 晚餐 = 一斤包子;
if(看到賣西瓜的){
晚餐 = 一個包子;
}
買晚餐;
當晚,程序員老公手捧一個包子進了家門…老婆怒道:你怎麼就買了一個包子?!老公答曰:因為看到了賣西瓜的。

這執行的沒錯,買一個對的,絕對沒毛病!

補:
當發布完這條答案之後,發現「買一個;」前面居然沒有空,而我明明有縮進!!強迫症又犯了,整個人又不好了,又開始腦補知乎編輯器邏輯了.......

再補:
ctrl + s
F5
F12
相信程序員們都懂


路過,不知道這個算不算!我03年學習面向對象思想,然後學完就把宇宙萬物都看成了我的類庫和組件庫了。這麼多類我應該可以干很多好玩的東西出來。
介面:地鐵造價32億,兩塊錢調用。
代碼:干任何事都是目標=演算法+資源。
對象:萬物皆可new(),打工到公司首現霸佔各種資源,充分填充類庫。
演算法:武林秘籍,宇宙真理。
組件:一切的一切皆是組件,比如一片樹葉也是組件。當然組件也是對象,當然也可以調用。
SDK:辦事指南,產品說明書,用現成的。調用合作夥伴公司的資源,並肩作戰。
逆向:看到產品就想出對方公司生產工藝,甚至連整個公司的運作流程都能猜出來。//更新:因為在我眼裡那些是功能模塊而已,是可以反編譯出來的。
ide:公司,組織,工廠,集團公司等等。
迭代:公司的一切都需要不斷優化打磨,進化。
編譯:輸出產品、零件、配件、等。
數學:宇宙的抽象。
界面:看人看物都是美不美。參考服務員
體驗:看人看物好用不好用。參考大東莞
抽象:物理世界中一切作業都可以抽象成演算法+資源。
反正現在出來混,感覺資源滿滿,一切皆可調用。宇宙向人類暴露的介面其實都是差不多的,關鍵看你的方向是什麼。
把面向對象思想用於人生的各個方面,這有助於為我們看清事物的本質,提高我們學習和工作的效率。感覺思維方式被解鎖了。

這強迫的很嚴重啊……

話說你們光感謝點贊也不關注我一下,也請關注一下我的專欄啊!
編輯於 2016-03-08
著作權歸作者所有


level4零警告編譯!
level4零警告編譯!
level4零警告編譯!!!!

C4244 C4996 C4100玩蛋去吧!!


  • 我要雙顯
  • 我要機械鍵盤
  • 我要MBP
  • ACM
  • 演算法才編程,數學是上帝
  • 不工程化就不叫工程
  • TDD第一,拖三個月不要緊
  • 大牛一定對
  • 未批嗯要免費,反覆配置goagent,貴的服務都不是好服務 http://jump.im/i6
  • 看書看一本
  • 中文才叫書
  • 博客比書強
  • 開篇就class
  • 依賴要按alphabet排列
  • 一定要用最新工具
  • 不自動化不叫測試
  • 程序設計就是設計模式
  • =號縱對齊
  • 你一定要這樣
  • 你一定不要這樣
  • 你不這樣就垃圾
  • ...

我是寫Python的。
現在平時打字聊天都遵循PEP8。


推薦閱讀:

TAG:互聯網 | 程序員 | 編程 | 軟體工程 | 強迫症 |