成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

編碼之道(一):程序員的“圣經(jīng)“

Elle / 1953人閱讀

摘要:與此類似,理所當然的,我們程序員也會有自己的圣經(jīng)。這便是程序員的圣經(jīng)三個原則我認為做為一個程序員,最神圣的就是三個原則,它幾乎能完整無誤的定義做為一個程序員應該如何去編碼。

這是個隱喻。

在敏捷軟件開發(fā)的原則中,其中一個原則就是使用隱喻。我在這里也仿照了它的做法。

程序員是個群體,當我們說一個群體,一定意味著它有一些共通點,不然不能稱之為群體。而每一個群體必然有一個大家都認同的價值觀,否則不能形成群體。

什么叫大家都認同的價值觀?

舉個例說,信仰基督教的人,它們歸為一個群體,那它們的共同的價值觀是什么?或者換個說法,是什么在指引他們行事?

當然是圣經(jīng),對吧。

每一個基督教徒都把圣經(jīng)做為最神圣的事物,遵守圣經(jīng)的教導是基督教徒的行事標準,對吧。

與此類似,理所當然的,我們程序員也會有自己的"圣經(jīng)"。

那做為一個程序員,當你在寫代碼時,你有沒有思考過,自己的"圣經(jīng)"是什么?

從本周起,我將闡述我對編碼之道的理解與思考,這是第一篇:程序員的"圣經(jīng)"

技術只是工具

由于我過去的經(jīng)歷,我編碼的經(jīng)驗遍歷后端,移動端以及前端,所以我清楚幾乎每一個方向的程序員的日常工作是怎么樣的。

當然,如果我們就每一個方向來談論它們所涉及到技術,它們肯定是各不相同,甚至是技術上沒有太多交集。

后端的人大多使用的Java,并且與Java生態(tài)打交道,他們的詞匯是:并發(fā),集群,緩存,性能等

移動端的人則分為幾類,iOS,Android原生開發(fā),React Native或Flutter等跨平臺開發(fā)等,它們用到的技術也各不相同,比如OC,Java或JavaScript等

而前端則主要是與JavaScript或TypeScript打交道,他們更關注的可能是兼容性與體驗,樣式等

似乎沒有太交集?

完全不是,在我看來,這些工作其實毫無區(qū)別。無論是我在從事哪個技術方向的開發(fā)時,我遵守的原則幾乎一致。

想像一下,你怎么看待技術?

你會發(fā)現(xiàn),在你編碼的職業(yè)經(jīng)歷中,你會遇上各種各樣的技術,新的語言,更好的框架,更函數(shù)式的語法,面向大數(shù)據(jù)的技術等,你可能會認為自己熟悉某些特定的語言,認定自己使用這些語言會更好。

我認為這是一個完全的錯誤。

我把所有的語言,框架或各種各樣的開源的玩意當成工具,它們都是我的工具。把自己想像成一個建筑師,我擁有很多工具,這些工具都是我在建造建筑時可以考慮使用到的東西。

我從不會限定自己只使用什么,我這些年也是這樣做的,從一個后端架構師,使用的Java,再去用Java編寫一個Android程序,再去用OC去編寫一個iOS程序,再去用TypeScript去編寫一個跨平臺桌面程序,又去用Kotlin+Vert.x投入到響應式編程的世界中,這些語言也好,技術也好,框架也好,都是我的工具而已。

我有一大堆工具,我意識到了,當我要編寫下一個程序,解決下一個問題時,我其實有非常多的工具可以選擇了。

做為一個程序員,我從來不對特定的語言表達虔誠,但我想程序員也得有自己的虔誠,我想要尋找一個編碼的"圣經(jīng)",它足以讓我虔誠的遵守它,守護它,捍衛(wèi)它。

這便是程序員的"圣經(jīng)"

三個原則

我認為做為一個程序員,最神圣的就是三個原則,它幾乎能完整無誤的定義做為一個程序員應該如何去編碼。

它也不是空洞的理論,每一個原則都是可以通過技術實實在在的做到。而是否遵守這些原則,也是區(qū)分一個程序員是否優(yōu)秀的標準。

這三個原則就是程序員的"圣經(jīng)",

它們分別是:

  • 編寫滿足需求的代碼
  • 編寫可維護的代碼
  • 編寫易于閱讀的代碼

編碼滿足需求的代碼

這應該非常易于理解。

我們要編寫的代碼不是憑空產(chǎn)生的,一定是為了解決某種特定的需求。

當然,需求的來源可以有許多種,比如來自于客戶,來自于產(chǎn)品經(jīng)理,或來項目經(jīng)理,也許來自于自己的一些想法。這些都無所謂。

但是,最起碼的原則就是:我們要寫出滿足需求的代碼

編寫代碼就是實現(xiàn)契約的過程,提出需求的一方是期望我們理解并實現(xiàn)他們的需求,他們并不明白與理解我們是如何用代碼實現(xiàn)他們的需求的,但重要的是他們認為與我們定義了一個契約,這個契約就是:

請你們用代碼來實現(xiàn)我們的需求吧,拜托了

連這一點都做不到的,我認為就不要稱自己是程序員了。

編寫可維護的代碼

寫出能運行的代碼這個太簡單了,但編寫出可維護的代碼,則是個巨大的挑戰(zhàn)。

想必很多程序員都經(jīng)歷過類似的痛苦,可能進入了一份代碼中,這份代碼在可維護性上已經(jīng)差到令人發(fā)指了,但還是得要繼續(xù)。于是常見的現(xiàn)狀是:修改一個BUG越來越困難,而且會引發(fā)更多的BUG,添加一個穩(wěn)定的新功能越來越不可能。那些不懂代碼的管理者也不知所措,于是往這個糟糕的項目中添加新的人員,或延長每日工作時間成為了必然的選擇,但絕大多數(shù)情況下,情況壓根不會好轉,可能會更糟糕。

很多程序員想必理解我在說什么對吧,我也經(jīng)歷過類似的項目,記得當時整個團隊花了幾乎幾個月的時間就是去修復BUG,每天有專門人統(tǒng)計每日的BUG修復情況,領導們也為大家打氣。

但最終項目不可逆轉的失敗了。

當然,我們不去談論具體原因,但無論是什么引發(fā)這種情況,做為程序員,我們都不能否定一個事實就是:

那些由我們負責編寫的一行行代碼,當它們合在一起的時候,分工協(xié)作與合作卻越來越困難,如同一群相互嫌棄的人硬被我們堆在一起一樣。

這是典型的不可維護的代碼的表現(xiàn)。

做為一個程序員,你有責任讓自己的代碼具有可維護性,在技術的所有特性中,我認為最重要的一個特性就是:

代碼一定要具有可維護性

做為一個程序員,你要努力寫出可維護的代碼。

編寫易于閱讀的代碼

代碼的可閱讀性我把它分為三個層次:

  1. 機器能讀懂的代碼
  2. 自己能讀懂的代碼
  3. 別人能讀懂的代碼

無論你的代碼寫的多差勁,只要它接受一個輸入,并能輸出一個符合期望的結果,那你這份代碼就達到了機器能讀懂的境界了。

再往上一層的要求就是讓自己讀懂??赡芎芏嗳藭J為自己寫的代碼怎么會自己讀不懂?

當然,我說的不是讓你去閱讀自己上周寫的代碼,而是說讓你去閱讀你過去的,你已經(jīng)有一段時間沒有參與的代碼中,我相信一定有一些人可能對于自己過去寫的代碼可能不是非常理解了,得費勁思考一下才能明白當初自己寫的這份代碼是干什么的。

要求最高的就是讓別人讀懂,在我們程序員這個群體中,幾乎有一個共通性,就是不太愿意接手別人的代碼。我想這之中一個很重要的原因就是,別人寫的代碼我們不太容易讀懂。

這也從反面反應出,寫出一份能讓別人讀懂的代碼,其實是有著一定的難度的。

想要寫出易于閱讀的代碼,就得寫出簡潔的代碼,寫出優(yōu)雅的代碼,能做到這種程度的程序員實在不多。

它們是"圣經(jīng)"

理所當然的,能遵守并做到上述三個原則的程序員,都可稱之為優(yōu)秀的程序員,反之則不是。

所以,我把這幾個原則稱為"圣經(jīng)"。

只要稍微思考下,無論你是后端,前端或是移動端還是其它什么技術方向,這幾個原則幾乎無一例外的能覆蓋到你編碼這件事情上。

這便是我所思考的程序員的最高原則。

我將它們時刻牢記在心,虔誠的遵守它們,守護它們。

你做為一個程序員,有沒有思考過自己的原則?

有了原則,再談談使命

這就是我這一次要講的原則,做為一個程序員,你一定得有你覺得對你而言,你不得不去遵守的原則。

一旦你能為自己確立一個正確的原則,那它將迫使你成為一個越來越優(yōu)秀的程序員,因為只有足夠優(yōu)秀才能守護你的原則。

我很難想像一個不優(yōu)秀的程序員能做到編寫滿足需求的代碼,編寫可維護的代碼以及編寫易于閱讀的代碼。

你的原則時刻守護著你,有了原則之后,下一步是什么?

你有沒有思考過這一個問題,做為一個程序員,編碼是用來做什么的,它會產(chǎn)生什么價值?

下一篇,繼續(xù)談編碼之道:編碼之道(二):軟件的價值

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/119094.html

相關文章

  • 編碼之道(終):做專業(yè)序員

    摘要:本周,編碼之道的最終章,做專業(yè)的程序員。言必行,諾必達程序員的職業(yè)素養(yǎng)中有個章節(jié)就是在講程序員如何說是,也就是怎么去做承諾。我覺得我們的文化有更優(yōu)雅的詞來形容它,就是言必行,諾必達程序員需要謹慎的做出承諾,而一旦做出承諾,就要努力做到。 ...

    yacheng 評論0 收藏0
  • Java序員必讀書籍

    摘要:對于專業(yè)的開發(fā)者來說,單元測試是一項必備的技能,多數(shù)的程序員卻不具備測試驅動開發(fā)的能力。對于工程來說,開源項目基本都嚴格遵守執(zhí)行單元測試,而很多商業(yè)的工程則在單元測試方面有所缺失。一個擁有單元測試的項目會變得更加容易維護和更改。   作為一名合格的Java程序員,日常工作除了上班擼代碼就是加班擼代碼。擼碼其實不難,無非詢問Google,StackOverflow,解決方法和demo一籮...

    aisuhua 評論0 收藏0
  • 聊聊加密那點事——PHP加密最佳實踐

    摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變?yōu)橐欢慰瓷先]有任何意義的字符,必須通過事先約定的解密規(guī)則才能將...

    lcodecorex 評論0 收藏0
  • 聊聊加密那點事——PHP加密最佳實踐

    摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變?yōu)橐欢慰瓷先]有任何意義的字符,必須通過事先約定的解密規(guī)則才能將...

    Mr_zhang 評論0 收藏0
  • 從小白序員路晉升為大廠高級技術專家我看過哪些書籍?(建議收藏)

    摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術專家我看過哪些技術類書籍。 大家好,我是...

    sf_wangchong 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<