1. 程式人生 > >程式設計師的10大諺語

程式設計師的10大諺語

所謂諺語,就是用言簡意賅、通俗易懂的方式傳達人生箴言和普遍真理的話,它們能很好地幫助你處理生活和工作上的事情。也正因如此,我才整理了10句程式設計諺語,每位開發人員都應該銘記他們,武裝自己。
1. 無風不起浪
別緊張,這也許只是一場消防演習
程式碼設計是否糟糕,從某些地方就可以看出來。比如:
   * a. 超大類或超大函式
    * b. 大片被註釋的程式碼
    * c. 邏輯重複
    * d. If/else巢狀過深
程式員們通常稱它們作程式碼異味(Code Smell),但是就我個人認為“程式碼警報”這個名字更為合適一些,因為它有更高的緊迫感的含義。根本問題處理不當,終將引火燒身。
譯註:Code Smell中文
譯名一般為“程式碼異味”,或“程式碼味道”,它是提示程式碼中某個地方存在錯誤的一個暗示,開發人員可以通過這種smell(異味)在程式碼中追捕到問題。

2. 預防為主,治療為輔
好吧,我相信了!
20世紀80年代,豐田公司的流水作業線因為它在缺陷預防方法上的革新變得出了名的高效。每個發現自己的部門有問題的成員都有權暫停生產。這個方法意在寧可發現問題後馬上暫定生產、解決問題,也不能由其繼續生產而導致更棘手且更高代價的修復/更換/召回後的問題。
程式設計師總會做出生產率就等同於快速編碼的錯誤臆斷。許多程式設計師都會不假思索地直接著手程式碼設計。可惜,這種Leeroy Jenkins式魯莽的做法多會導致軟體的開發過程變得很邋遢,拙劣的程式碼需要不斷的監測和修改——也可能會被徹底地替換。最終,生產率所涉及到的因素就 不僅僅是寫程式碼所消耗的時間了,還要有除錯
的時間。稍不留神就會“撿了芝麻丟了西瓜”。(因小失大。)
譯註:Leeroy Jenkins 行為:WOW遊戲中一位玩家不顧大家獨身一人迎敵,導致滅團。

3. 不要孤注一擲 (過度依賴某人)
一個軟體開發團隊的公共要素(bus factor)是指那些會影響整個專案程序的核心開發人員的總數。比如某人被車撞了或某人生孩子或某人跳槽了,專案可能就會無序,甚至會擱置。
譯註: bus factor 即指公共要素,比喻了開發過程中的一些共同因素。如果擠上 bus 的 factor 越多,bus 就越不穩定,所以要控制好 bus factor ,以免問題發生。
換句話說,如果你的團隊突然失去了一個主力成員,你會怎麼辦?生意依舊進行還是戛然而止?
很不幸,大多數軟體團隊都陷入了後一種情況。這些團隊把他們的開發員培養成了只會處理他們自己專業領域的“領域專家”。起初,這看起來是一個比較合理 的方法。它 對汽車製造裝配生產線很適用,但是為什麼對軟體開發團隊就不行呢?畢竟,想讓每個成員都掌握所程式設計序的細微差別也不太可能,對吧?
問題是開發人員不容易輕易替換掉。雖然當每位成員都可用時,“抽屜方法”很有效,但如果當“領域專家”突然因人事變動、疾病或突發事故而無法工作時, 抽屜 方法立馬土崩瓦解。(所以,)軟體團隊有一些看似多餘實則重要的後備力量是至關重要。程式碼複查、結對程式設計和共有程式碼可用成功營造一個環境,在這個環境中, 每位開發人員至少表面上是熟悉自己非擅長領域之外的系統
部分。

4. 種瓜得瓜,種豆得豆
《注重實效的程式設計師》一書中有這樣一段話解釋“破窗理論”:不要留著“破窗戶”(低劣的設計、錯誤的決策或者糟糕的程式碼)不修。發現一個就修一個。如 果沒有足夠的時間進行適當的修理,就先把它保留起來。或許你可 以把出問題的程式碼放到註釋中,或是顯示“未實現”訊息,或用虛擬資料加以替代。採取一些措施,防止進一步的惡化。這表明局勢尚在掌控之中。
我們見過整潔良好的系統在出現“破窗”之後立馬崩潰。雖然促使軟體崩潰的原因還有其他因素(我們將在其他地方接觸到),但(對“破窗”)置之不理,肯定會更快地加速系統崩潰。
簡而言之,好的程式碼會促生好的程式碼,糟糕的程式碼也會促生糟糕的程式碼。別低估了慣性的力量。沒人想去整理糟糕的程式碼,同樣沒人想把完美的程式碼弄得一團糟。寫好你的程式碼,它才更可能經得住時間的考驗。
譯註:《注重實效的程式設計師》,作者Andrew Hunt / David Thomas。該書直擊程式設計陳地,穿過了軟體開發中日益增長的規範和技術藩籬,對核心過程進行了審視――即根據需求,建立使用者樂於接受的、可工作和易維護 的 程式碼。本書包含的內容從個人責任到職業發展,直至保持程式碼靈活和易於改編重用的架構技術。從本書中將學到防止軟體變質、消除複製知識的陷阱、編寫靈活、動 態和易適應的程式碼、避免出現相同的設計、用契約、斷言和異常對程式碼進行防護等內容。
譯註:破窗理論(Broken Window theory):是關於環境對人們心理造成暗示性或誘導性影響的一種認識。“破窗效應”理論是指:如果有人打壞了一幢建築物的窗戶玻璃,而這扇窗戶又得不 到及時的維修,別人就可能受到某些暗示性的縱容去打爛更多的窗戶。發現問題就要及時矯正和補救。

5. 欲速則不達
經理、客戶和程式設計師正日益變得急躁。一切都需要做的事,都需要馬上就做好。正因如此,快速修復問題變得非常急迫。
沒時間對一個新功能進行適當的單元測試?好吧,你可以先完成一次測試執行,然後你就可以隨時回來繼續測試它。
訪問Y屬性時,會不會碰到奇怪的物件引用錯誤?無論怎樣,把程式碼放到try/catch語句塊中。我們要釣到大魚啦!
是不是似曾相識呢?這是因為我們在以前已經都做到了。並且在某些情況下、它是無可非議的。畢竟,我們有最後期限,還得滿足客戶和經理。但不要過於頻繁 操 作,否則你會發現你的程式碼不穩定,有很多熱修復、邏輯重複、未測試的方案和錯誤處理。最後,你要麼是把事情草草做完,要麼是把事情好好做完。

6. 三思而後行
“敏捷開發”這個詞最近被頻繁濫用,經常被程式設計師用來掩飾他們在軟體開發過程中的糟糕規劃/設計階段。我們是設計者,看到產品朝正當方向有實質進展, 我們理應高興。但意外的是,UML圖和用例分析似乎並不能滿足我們的願望。所以,在不知自己做什麼的情況下或者不知自己身處何處時,我們開發人員經常就稀 裡糊塗地寫程式碼了。
這就好比你要去吃飯,但你根本沒有想好去哪裡吃。因為你太餓了,所以你迫不及待地找個餐館,定個桌位。然後你上車開車後沿途在想(找地方吃飯)。只 是,這樣會耗費更多的時間,因為你要過較多的U型彎道,還在餐館前停車,也許最後因等待時間過長而不吃了。確切地說,你最後應該能找到地方吃飯,但你可能 吃的飯並不是你想吃的,並且這樣花費的時間,可能比你直接在想去的餐館訂餐所花的時間更長。

相關推薦

程式設計師10境界

作者簡介:周偉明先生畢業於上海交通大學,1994年開始 從事專業軟體開發,曾工作於美國加州矽谷的DASCOM Inc公司(現為IBM的全資子公司)和華為技術有限公司等企業。在網路安全軟體、服務端軟體、機器翻譯軟體、工具軟體、嵌入式系統等領域都擁有豐富的專 業實踐經驗。近年

程式設計師10基礎實用演算法

該演算法的輸入包含了一個有權重的有向圖 G,以及G中的一個來源頂點 S。我們以 V 表示 G 中所有頂點的集合。每一個圖中的邊,都是兩個頂點所形成的有序元素對。(u, v) 表示從頂點 u 到 v 有路徑相連。我們以 E 表示G中所有邊的集合,而邊的權重則由權重函式 w: E → [0, ∞] 定義。因此,

程式設計師10境界【走在路上,潛心修行】

    看了這層樓的名字“大哲”,可能不少人已經猜到了這層樓的祕密,那就是你的成果必須要上升到哲學的高度,你才有機會能進到這層來。     當然,上升到哲學高度只是一個必要條件,牛頓的萬有引力似乎也上升到了哲學的高度,因為不知道引力到底是怎麼來的,但是牛頓沒有被劃到這一層,因為進到這 層還有另外的條件,那就

程式設計師10諺語

所謂諺語,就是用言簡意賅、通俗易懂的方式傳達人生箴言和普遍真理的話,它們能很好地幫助你處理生活和工作上的事情。也正因如此,我才整理了10句程式設計諺語,每位開發人員都應該銘記他們,武裝自己。1. 無風不起浪別緊張,這也許只是一場消防演習程式碼設計是否糟糕,從某些地方就可以看出來。比如:   * a. 超大類或

2018年 Java程式設計師學習資料最佳之路!

隨著大資料時代的到來,有很多Java程式設計師想要轉行大資料。 不得不說,大資料行業可以說是為Java程式設計師量身打造的一個朝陽行業?為什麼要這麼說呢? 因為Java工程師轉型大資料具有天然進階優勢,不僅僅是前景和薪資等。技術層面來說,大資料使用的Hadoop(在分散式伺服

#鑑別程式設計師牛還是小白?網友:簡單,從髮量就可以看出啊

程式設計師的技術高低是由什麼決定的呢?是有你的工作年限,還是你的專案經驗?我覺得都可以作為一個判斷依據,其中還有一個是什麼?沒錯,聰明的小夥伴已經猜出來了,就是你的發亮。 有網友在釋出了一個如何鑑別菜鳥和大神程式設計師的帖子,原貼是這樣的: 在這裡我推薦下自己整理的資料,我自己是一名從事

前端課程集結!51cto 1024程式設計師放送,通過以下連結購買,可享受附加前端問題答疑服務

http://edu.51cto.com/sd/459c1 HTML5開發APP-框架MUI(仿支付寶案例)http://edu.51cto.com/sd/26227 NodeJS基礎、Express實戰視訊課程【後臺管理系統】【楊勝強老師-前端系列課程】http://edu.51cto.com/sd/a

普通的程式設計師神級的程式設計師有什麼區別?

普通的程式設計師和大神級的程式設計師的區別,小編來列舉幾點,順便給一些普通程式設計師一些學習建議,請查收 ~ 一、主要問題 1、沒有程式設計思想 或許很多人覺得很扯,但確實是這樣的。高階程式設計師在看到一個需求的時候,總是能夠快速在大腦裡生成這個需求在現實生活中的對映。每當產品經理提一個需求

徹底瞭解程式設計師學習資料開發的優勢在哪裡,轉行輕鬆度過菜鳥期

1.Linux基礎和分散式叢集技術 學完此階段可掌握的核心能力: 熟練使用Linux,熟練安裝Linux上的軟體,瞭解熟悉負載均衡、高可靠等叢集相關概念,搭建網際網路高併發、高可靠的服務架構; 學完此階段可解決的現實問題: 搭建負載均衡、高可靠的伺服器叢集,可以增

程式設計師恩人永遠地離開了

這個晚上月光很亮,你泡好一保溫杯枸杞養生茶,開啟電腦,開始敲程式碼;茶水的溫度剛剛好,你熟練地按下“Ctrl-C + Ctrl-V”……對於泡在程式碼裡的程式設計師而言,複製貼上無異於左右護法,很難想想沒有了這一功能的世界將會變成何等玄幻的模樣。可當我們頻繁按下這些快捷鍵的同時,似乎從未

2017年一線城市程式設計師工資調查

                                                                                                    編者按:作者爬了某招聘網站,獲取近一週的程式設計師工資18275條。其中,有工資的17628條(北京4892,

【轉】程式設計師10月書訊

10月有7本新書,其中實用統計學;有Python資料處理參考手冊;還有市場佔有率非常高的商業遊戲引擎Unity圖書;更有強大的程式語言Java併發程式設計的書;最後還有兩本可以輕鬆閱讀的有趣的科普書。 特別推薦 ○ 面向資料科學家的實用統計學 Practical

剛入坑的程式設計師,我該告訴你點什麼?(高齡程式設計師實話)

現在網際網路越來越發達,導致越來越多的人加入了程式設計師這個行列,或者說入了這個坑。那麼剛入坑的程式設計師你應該知道些什麼呢?下面是大佬的一些建議:在這裡相信有許多想要學習前端的同學,關注小編文章最後面文字,可免費領取一整套系統的web前端學習教程!正文少說廢話,多寫程式碼廢

頂級程式設計師和普通程式設計師的5個區別

1. 勇於去研究你不懂的程式碼 一般人都不願意去研究自己不曾接觸過的程式碼,很多人都沒有嘗試就放棄了。如果你經常去研究你沒有接觸過的程式碼,你就會越來越熟悉不同的程式碼結構和設 計模式。現在人們很容易就接觸到優秀的開原始碼資源,你可以很方便的就下載下來做一些改動或者除錯,去研究為什麼程式碼可以這

阿里P7告訴你普通的程式設計師神級的程式設計師有什麼區別?

一、主要問題 1、沒有程式設計思想 或許很多人覺得很扯,但確實是這樣的。高階程式設計師在看到一個需求的時候,總是能夠快速在大腦裡生成這個需求在現實生活中的對映。每當產品經理提一個需求的時候,高階程式設計師首先想到的就是,這個需求需要哪些資料庫上的改動,對現有的邏輯有什麼影響,需要提供

2018年,Java程式設計師轉型資料開發,是不是一個好選擇?

近日網上有一篇關於Java程式設計師職場生存現狀的文章“2017年 Java 程式設計師,風光背後的危機”,在Java程式設計師圈子裡引起了廣泛關注和熱議。 2017年,Java 程式設計師面臨更加激烈的競爭。 不得不承認,經歷過行業的飛速發展期,網際網路的整體發展趨於平

新人程式設計師牛進階之路

1.對程式碼花時間解構出來那一塊負責什麼功能,把專案給庖丁解牛成一個個不同功能的模組 2.對每個模組實現什麼瞭解 3.看懂每個模組的程式碼,不懂就google+stackoverflow去問 4.嘗試對某個你感興趣的小模組去重構 5.重構出來的效能不如原來的,分析原因,回到4,迴圈 6.期間惡補相關的知識,特

本週杭州程式設計師工資調查,高於深圳和廣州

今天晚上11點,爬了某招聘網站,獲取近7日內杭州的程式設計師工資2344條。其中,有工資的2275條。本文分別統計了工資的分佈,工資和學歷,工作經驗和公司的性質,規模,產業的關係。 這裡的程式設計師包括普通程式設計師,架構師,演算法工程師,計算機圖形,美工等。

應屆生如何為工作做準備 程式設計師 技術

你不需要拿NOI的獎,無需是開源社群名人,也用不著發過牛逼的SCI論文。(沒錯,筆者就是這樣的技術屌絲)   請記住,校園招聘,應聘的絕大部分人都只是才出象牙塔的毛頭小子。企業需要的是你們的潛力與激情。牛人總是鳳毛麟角的。程式設計師筆試面試的經驗貼、經驗書不計其數。本文

程式設計師薪資調查:學哪種程式語言最賺錢?

程式設計師有可能長年累月只使用一種程式語言工作,但如果他最近新增了一門程式語言認證,那麼憑藉多年的程式設計經驗和新增技術技能,一定會讓人印象特別深刻。 另外,優秀的程式設計師一般在做三件事:寫框架,寫演算法,寫庫。並不是說寫業務邏輯不重要,但如果你是好的程式設計師,總有一天你會開始做這三