MyException - 我的異常網
當前位置:我的異常網» 綜合 » “懶”出效率是程序員的美德

cf手游荒岛特训大神按键设置:“懶”出效率是程序員的美德

cf手游刷枪永久枪软件 www.yqwdk.icu  網友分享于:2015-02-04  瀏覽:1次

cf手游刷枪永久枪软件 www.yqwdk.icu “懶”出效率是程序員的美德


        Perl 之父 Larry Wall 曾說過,程序員的三大美德是「懶惰」、「不耐煩」、以及「傲慢」,其中「懶惰」高居三大美德之首,這一回就讓我們來看看程序代碼設計的懶人之道。


惰性是人類科技持續進步的最大動力

       這字面上的「懶惰」,或許叫人誤解,以為這是在暗示好的程序員是因為不愿意盡心投入代碼設計工作,才會想要偷懶,盡量讓自己少做點工作。不過,能成為卓越程序員的人,幾乎沒有例外的熱愛程序代碼設計工作,對他們來說,程序代碼設計本身就是樂趣所在,只可能深陷于其中無法自拔,而沒有不愿意多寫點程序代碼的。

       我們可以把「懶惰」分為兩種,一種是單純的不想做事,而另一種則是希望盡量少做點事,卻達到一樣的目標。同樣是想要少做點事,后者卻有著截然不同的正面、積極意義。而程序員的「懶惰」美德,也是建立在此種「懶惰」基礎之上。

       知名的手機制造商 Nokia 說「科技始終來自于人性」,而這句話中的「人性」其實意味著人性中的需要,所以人們都說「需要是發明之母」,許多有用的科技,都是源自于人性中各式各樣的需求及欲望,而在這些需求及欲望中,想要「偷懶」的念頭,絕對是具有相當重要的地位。

       倘若說「懶惰是發明之母」,實在是一點也不為過。人類發明馬車、牛車,就是希望藉由獸力提供額外的動作,好讓人類在交通運輸上能夠更為輕松,這當然完全是出自于「懶惰」的想法。人類之后更發明了火車、汽車、甚至飛機,大幅提升了「懶惰」的程度。

       許多工程師絞盡腦汁、苦心孤詣的設計,最終便是希望得到一個讓自己、也讓所有人都能夠偷懶的產物。從這個觀點來看,惰性實在是人類科技持續進步的最大動力。


程序代碼設計的懶人之道──四兩撥千斤

       所以說,倘若從正向的角度來解讀「懶惰」,工作偷工減料,其更積極的意義,應該是「以最小的力氣達成目標,同時保持不變的品質,或是提升至更好的品質」。從這樣的定義來看,「懶惰」的確可以做為程序員的美德之首。

       程序代碼設計并不是一種單靠認真工作就能夠開花結果的工作。一名程序員的工作成效,往往很難單純地只倚靠工時的長短來評估。

       工作時間長的程序員,可能是工作能力出了問題,才會需要花費更多的時間。有許多優秀的程序員,只需要花上少許的時間,就能得到和別人一樣、甚至更好的工作成果,原因之一便在于優秀的程序員懂得如何偷懶,而偷懶的真正意義,是以最小的力氣達到一樣的結果。

       程序代碼設計的懶人之道便是四兩撥千斤。施四兩之力,得千斤之結果。掌握這懶人之道,便能掌握提升時間效率以及生產力的關鍵。


懶人善用工具增加生產力

       想要偷懶,你可以從許多面向來著手,而第一個會被大家所先想到的,便是開發工具上的輔助。的確,如果你想要偷懶,第一件事便是要試著盡可能地自動化所有的事物。

       在程序代碼撰寫的過程中,有太多具重復性、單純只是勞力性質的工作。所有具有規則性的事物,都可以利用自動化的方式,讓工具為我們代勞。例如善用程序代碼的產生器,便可以免去人工撰寫那些機器便有能力產生出來的程序代碼。

       又好比一些自動化的建構工具,例如在 Java 社群廣泛被使用的 ANT,便是一套透過讓你描述建構軟件的程序,借以自動化執行此一程序的工具。透過這樣的工具,在建構過程中的許多動作,例如自版本控制系統中取出原始碼、編譯原始碼、部署至測試環境、單元測試,及寄發測試報告等,都可以輕易地自動執行。

       降低人力介入的程度,不僅省時省力,也不易犯錯。此外,許多 IDE 也都提供了像程序代碼自動補全(Automatic Code Completion)、或自動 API 提示的功能,都可以省掉許多打字及查詢 API 文件的時間。


優秀的程序員,多半懂得如何善用各式工具。

       盡管許多工具都能提升撰寫程序代碼的效率。但許多程序員都存在著對工具的迷思。并不是每種工具都適合每個程序員,原因在于每個工具的定位不同。工具并不是威力越強大就越好,你必須挑選適合用途的工具,正所謂殺雞焉用牛刀,殺雞不僅不需要動用到牛刀,用了牛刀,雞反而可能也殺得不好。


懶人運用重構提煉自有的程序代碼庫

       真正優秀的程序員并不完全倚靠工具來達到偷懶的目的,事實上,工具所能節省的,往往并不是關鍵,真正的關鍵還是在于程序員自己如何進行設計。

       真正偷懶的程序員,會持續地讓自己的設計保持在一種很容易可以偷懶的狀態,也就是說,只需要花費一點點力氣,就能得到自己所需要的東西。這就是我所說的四兩撥千斤。

       如何讓自己的設計盡可能的保持在一種很容易可以偷懶的狀態呢?關鍵之一說穿了,還是要讓自己的設計盡可能地可以被重復運用,而且是跨專案的重復運用。許多專案開發的系統,或許與最終呈現出來的面貌有著很大的不同,但內部會運用的元素,往往都落在一定的范疇之內?;г刂芷詒碇械腦刈蓯鲇幸話儆喔?,但卻也能組成了我們所見到的無數種物品。

       設計出能夠跨專桉重復使用的程序代碼,需要持續重構,并且讓自己的代碼朝著更佳的通用性持續演化。當你在執行重構時,會找出形態相似的程序代碼,并且利用提煉函式或類別的技巧,將它們以更為通用的型式整理出來。你(或你的團隊)需要建立一個自有的程序代碼庫,放置這些通用的代碼。而且,必須在專案中持續使用程序代碼庫中的代碼。唯有如此,才能持續考驗它們并且讓它們有演化的機會。


懶人不隨便重新造輪

       雖然我鼓勵人們建立自有的程序代碼庫,容納在開發過程中所找出來的通用程序代碼,但卻不鼓勵人們反覆地重造輪子。懶惰成性的程序員,是不會浪費時間去重新建造輪子的,一定是從既有的輪子中挑選出適用的,再施以最小的力氣,添加一些程序代碼碼,使得所選出來的輪子,能夠順利地接上自己所開發的車子。

       所以,把「懶惰」視為美德的程序員,絕不輕易地重新開發已經存在的東西,而是會盡可能加以利用──尤其是開放源碼的成品,因為這代表你可以自行加工或修繕的空間較大。現成的產物就是你能夠得到的千斤,而四兩就是你所施加的額外力氣。倘若每個輪子都自己重頭來過,那么施千斤力,或許反而只會有四兩重的效果。

       隨著時間的過程,懶惰的程序員會累積出相當多的資產,這些資產是可以被靈活地運用在各種專案中。懶惰的程序員在面臨一個新的開發需求時,所做的事情,往往不是將程序代碼重頭寫過,而比較像是把可被重復運用的程序代碼,當做積木一般堆積起來,生產力自然大大的不同。


懶惰的最高原則:不浪費力氣在不會發生的需求上

       偷懶的程序員更不會犯了設計過度工程化(Over-Engineering)的毛病,因為過度工程化,會浪費無謂的力氣在不會發生的需求上。懶惰的程序員只會專注在面前以及可見的近端未來。

       你瞧,偷懶的天性竟會對程序代碼設計帶來這么多的好處,難怪它是那么重要的美德了。

       作者簡介:

       王建興

       清華大學資訊工程系的博士研究生,研究興趣包括電腦網路、點對點網路、分散式網路管理、以及行動式代理人,專長則是 Internet 應用系統的開發。曾參與過的開發專桉性質十分廣泛而且不同,從 ERP、PC Game 到 P2P 網路電話都在他的涉獵范圍之內。

文章評論

我跳槽是因為他們的顯示器更大
我跳槽是因為他們的顯示器更大
中美印日四國程序員比較
中美印日四國程序員比較
程序員必看的十大電影
程序員必看的十大電影
總結2014中國互聯網十大段子
總結2014中國互聯網十大段子
看13位CEO、創始人和高管如何提高工作效率
看13位CEO、創始人和高管如何提高工作效率
什么才是優秀的用戶界面設計
什么才是優秀的用戶界面設計
2013年中國軟件開發者薪資調查報告
2013年中國軟件開發者薪資調查報告
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
團隊中“技術大拿”并非越多越好
團隊中“技術大拿”并非越多越好
程序員應該關注的一些事兒
程序員應該關注的一些事兒
十大編程算法助程序員走上高手之路
十大編程算法助程序員走上高手之路
10個調試和排錯的小建議
10個調試和排錯的小建議
老程序員的下場
老程序員的下場
Java程序員必看電影
Java程序員必看電影
如何成為一名黑客
如何成為一名黑客
Web開發人員為什么越來越懶了?
Web開發人員為什么越來越懶了?
Java 與 .NET 的平臺發展之爭
Java 與 .NET 的平臺發展之爭
為什么程序員都是夜貓子
為什么程序員都是夜貓子
 程序員的樣子
程序員的樣子
我是如何打敗拖延癥的
我是如何打敗拖延癥的
5款最佳正則表達式編輯調試器
5款最佳正則表達式編輯調試器
程序員的一天:一寸光陰一寸金
程序員的一天:一寸光陰一寸金
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序員和編碼員之間的區別
程序員和編碼員之間的區別
“懶”出效率是程序員的美德
“懶”出效率是程序員的美德
程序員都該閱讀的書
程序員都該閱讀的書
漫畫:程序員的工作
漫畫:程序員的工作
60個開發者不容錯過的免費資源庫
60個開發者不容錯過的免費資源庫
Google倫敦新總部 猶如星級莊園
Google倫敦新總部 猶如星級莊園
寫給自己也寫給你 自己到底該何去何從
寫給自己也寫給你 自己到底該何去何從
旅行,寫作,編程
旅行,寫作,編程
親愛的項目經理,我恨你
親愛的項目經理,我恨你
要嫁就嫁程序猿—錢多話少死的早
要嫁就嫁程序猿—錢多話少死的早
程序員周末都喜歡做什么?
程序員周末都喜歡做什么?
“骯臟的”IT工作排行榜
“骯臟的”IT工作排行榜
鮮為人知的編程真相
鮮為人知的編程真相
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
為啥Android手機總會越用越慢?
為啥Android手機總會越用越慢?
10個幫程序員減壓放松的網站
10個幫程序員減壓放松的網站
2013年美國開發者薪資調查報告
2013年美國開發者薪資調查報告
程序員的鄙視鏈
程序員的鄙視鏈
不懂技術不要對懂技術的人說這很容易實現
不懂技術不要對懂技術的人說這很容易實現
聊聊HTTPS和SSL/TLS協議
聊聊HTTPS和SSL/TLS協議
初級 vs 高級開發者 哪個性價比更高?
初級 vs 高級開發者 哪個性價比更高?
那些爭議最大的編程觀點
那些爭議最大的編程觀點
如何區分一個程序員是“老手“還是“新手“?
如何區分一個程序員是“老手“還是“新手“?
做程序猿的老婆應該注意的一些事情
做程序猿的老婆應該注意的一些事情
每天工作4小時的程序員
每天工作4小時的程序員
一個程序員的時間管理
一個程序員的時間管理
軟件開發程序錯誤異常cf手游刷枪永久枪软件Copyright © 2009-2015 MyException 版權所有