程序員的工匠精神-請允許我向您介紹真正的代碼藝術品

PHP自學 / 2019-01-02 18:55:19

動與靜

“ 從業這幾年來,見過很多類型的代碼,有些像坨屎,有些像雜草,但今天我見到了代碼中的藝術品 ”

作為一個程序猿,我的工作就是擼代碼,上班擼到下班,我努力讓自己擼的代碼規范一些,因為我害怕什么時候另一個程序猿接手我的代碼,或者團隊中的搭檔查看源碼時,一不小心問候了我的全家,本來擼代碼已經是一個挺費神的工作,我真的不想再給大家心中奔騰一萬匹草泥馬的機會。所以,我自認為自己寫的代碼,注釋清晰,層次分明,排版工整,相對規范,畢竟規范一些可以讓別人感覺到專業。

大一點的公司會有自己的代碼規范,即便人員有一定的流動性,但大概規范總是有的。但是對于小公司而言,人手有限,加上人員流動,程序猿為了趕工期,趕進度,自成一派的寫法,最終等到你接手的時候,尷尬至極。先拋開代碼的質量,從最基礎的排版風格都讓你跟進早市一樣,有的像番茄,有的像土豆,有的像雜草,時不時碰見遛狗的,沒準還能踩上一堆狗屎。常在河邊走,哪有不濕鞋。我相信同道中人一定也深有感觸。

前不久我跳槽到了一家新的公司,盡管是一家小公司,但是相對開放和自由的氛圍讓我覺得不那么壓抑,畢竟壓抑的環境很難讓人有工作熱情。我接手的代碼是上一個老大哥寫的,我和他都是干后端的,而公司是做一個資訊類APP,剛起步,也沒什么名氣,后端語言采用PHP,后端的代碼大多出自他手。我跟著他熟悉了幾天項目,簡單的做了一些交接,他就離開公司,聽同事說他可能回老家結婚,結完婚可能就不來北京了,其實我心里還是有一些小遺憾的,畢竟對于程序猿來講,逃離北上廣深到二線城市,意味著收入下降,另外那位老大哥人很nice,即便是接觸不久,深有好感。好了,言歸正傳,因為剛來時間不長,所以大部分時候都是在熟悉接口和業務邏輯,所以并沒有深入的去翻看他遺留的代碼,一直到這個周末,因為下周可能會加一些新需求,我覺得有必要把整個項目的代碼仔細的閱讀一遍。然后,我被驚艷到了!

最先被震驚的是他并沒有使用任何一個成熟的PHP框架,而是采用自己封裝的一個小框架,非常小巧,框架結構也非常合理。

只取了部分文件,重要的是結構

簡單的做一下說明,可能作為程序員你們一定非常容易理解,如果不是程序員也沒關系,直接忽略掉這段話!

Actions是控制器文件夾

Configs是配置文件夾

Extends是第三方SDK文件夾

Models是數據服務層

Services是邏輯服務層

SQLs存放數據庫查詢文件

Tools是項目常用到的系統工具類

乍一看中規中矩,層次還算分明,但這不是重點,重點是Services層和Models又劃分為抽象層和實現層,這種結構在php項目中并不算多見。這是令我驚喜的開始,也有可能是我沒見過世面,不管怎么說我覺得這個項目的層次劃分很高明,比MVC要更靈活一些。

如果說僅僅是這樣我就被驚艷到的話,那我真的算是菜鳥了。優秀的代碼風格如同一身得體的打扮,能夠給人以良好的印象。廢話不多說,上干貨。

看看這代碼,我很慚愧

這是一個獲取客戶端請求IP地址的一個系統方法,代碼已經精煉到一定程度,如果是個新手沒準還真看不懂。

重要的是這注釋,這排版,這就是藝術品有木有!

這縮進,這注釋,膜拜了

一個簡單的插入排序算法,我已經膜拜了。

藝術品有木有

簡單高效的到處表格的方法,還能說點什么呢!!!

注釋中竟然有示例,還要我怎樣

注釋中竟然還有示例,真的很貼心!!!

注釋的還能再清晰一點?

這個是他寫的依賴注入容器類的一個方法,真的很精煉!!!

看起來代碼很少,但邏輯量不少

在遞歸解析這幾行代碼,真的能看出來大哥的邏輯處理能力不一般,代碼精煉程度,讓人折服;

接口的使用

我們經常說面相對象,但是!!!

一個單例模式,兩種不同的實現

我看到了大哥對編程的熱情,一個單例,兩個決然不同的實現方法,充分兼顧了速度與可讀性,讓接手的人可以自由選擇,我覺得工匠精神,他做到了!!!

如果僅僅只是代碼寫的極其精致也算算了,來看點更體現功力的東西

數據庫語句

如果僅僅是數據庫語句夠整齊也就算了,畢竟每個人都可以做到,但是如果我告訴你,主表的數據量超過500萬,再加上其他關聯表,數據量總體超過2000萬,加上連結操作,你猜這條語句從查詢到接口需要多久?

你沒看錯,49毫秒,這不是最好成績

是的,49ms,也許這個速度你覺得也就湊合,但是對于在阿里云上購買的一核2G的MySQL數據庫來講,這個成績堪稱完美。我已經徹底被征服了,你可能會笑話我沒見過世面,但是對于我來說,這真的算是一個藝術品,我看到了工匠精神,之后我也會用更高的標準來要求自己,如果說僅僅是為了升職加薪,我相信我會一事無成!

這個社會上很多人在生活上追求更高的品質,但愿意對自己手頭所做的事情堅持高標準堅持卓越理念的人已經不多見了,以至于我們發現花再多的錢也買不到 安全的食品了,花了一輩子的積蓄買的房子卻有各種質量問題。

捫心自問自己在工作中是否能堅持某些東西,大部分人的態度都差不多,只是你糊弄一下不會怎樣, 而他馬虎一點就會死人,區別僅僅在于這里。

程序開發者應該知道優秀程序員的價值,不在于其所掌握的幾招屠龍之術,而是在細節中見真著。

做一個追求極致的工匠,而不是一個壘代碼的民工。

我試著想用更加冷靜客觀的態度來闡述這些,但是真的沒有把持住。如今像上面這位大哥這樣可以把代碼寫的像藝術品一樣的人已經不多見了,我相信這樣的人,無論是否回到北上廣深,都一定能找到一份如意的工作。常言道,以人為鏡,可明得失,但愿每個程序員都成為一個追求極致的工匠。如果這篇文章讓你們中間的任何一個人有所覺悟,那么我的目的就達到了!

4399小游戏上海麻将连连看 永久固定公式规律大全 三d返奖比例历史记录 江苏快三历史开奖号码 体彩20选5走势图i 2016年的3d带线走势图 福彩快乐十二开奖走势图 江西快三走势图走势图分布图 急速赛走势图 老重庆实时走势图360 时时开奖号码查询