日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者 | 魚皮

來源 | 程序員魚皮(ID:coder_yupi)

分享自己寫代碼時的好習慣,讓你的編程能力突飛猛進!

很多同學在學編程時不注重代碼質量,養成壞習慣的同時,失去了提升自己編程能力的機會。如何有意提升自己的代碼質量呢?我根本就發現不了自己代碼中的問題,以為已經寫得很棒棒了,怎么辦?

我寫代碼時的小倔強

要解決這個問題其實非常簡單,既然自己經驗不足、或者是 “只緣身在此山中”,看不出來代碼哪里寫的不好,那就找其他朋友或有經驗的程序員幫你看看代碼,給出一些意見。

雖然每個正常的程序員都無法忍受自己寫的代碼被人說是辣雞,但是虛心接受指正,并加以修改,的確能大大加深我們的印象,下次寫代碼時就會注意了。慢慢地,就養成了好習慣,不僅注重自己的代碼質量,還會 “繼承傳統”,開始說別人寫的代碼辣雞,從而幫助更多人改進。

我寫代碼時的小倔強

但有一個很殘酷的現實,誰這么好心幫我看代碼呢?

我大學期間,雖然做過很多項目,寫過很多代碼,但是自己的代碼基本都只給自己看。即使把大作業的代碼交給老師,他們也根本不看代碼,只看運行效果的,這也是上次提到的為什么大家越來越不注重代碼質量的原因之一。而且實不相瞞,我也曾經求學長幫我看代碼,但換位思考一下,如果不是和你關系非常好,誰閑的蛋疼免費去幫你看你寫的辣雞代碼?

我寫代碼時的小倔強

求人不得,只能求己。

一種方式就是把自己開發好的作品上線,讓用戶來使用它,從而幫你發現一些自己沒注意到的 Bug 或功能問題,驅使你去仔細閱讀和改進代碼。還可以把自己的代碼公開到 GitHub 等代碼托管平臺,允許其他同學閱讀和指出問題。但是,這種方式過于硬核,前期需要耗費大量精力去做推廣,否則根本沒人用你的項目,也沒人去看你的 GitHub!

硬核的方式咱玩不了,那我就教大家人人都能輕松學會的一招,也是我自己一直堅持的編程習慣。

下面一起來看看我寫代碼時的小倔強吧,有效提高你的代碼質量,編程能力突飛猛進!

我寫代碼時的小倔強我寫代碼時的小倔強

 

我的編程習慣

就像之前說的,我們之所以發現不了代碼中的問題,很大程度上是因為我們的編程態度是 “樂觀” 的,相信視頻教程、相信書本、相信編輯器,只要沒報錯,那就是對的。

但我寫代碼時,非常地 “悲觀” 且倔強,我會細致入微地把自己寫過的每一行代碼都看作是病人,堅持認為他們是有問題的,甚至可以說是從雞蛋里挑骨頭!

有同學說了,你特么不就是在說廢話么,這不就是仔細檢查代碼?或者說是防御性編程?

先別急,這和防御性編程可不一樣,我有多倔,舉個栗子你就明白了,下面請跟上我的思路~

我寫代碼時的小倔強我寫代碼時的小倔強

 

我有多倔?

假如我寫了這樣一端前端代碼,作用是獲取某條狗的名字:


 
// 默認狗名let name = '無名狗';// 狗、狗信息、狗名稱都存在if (dog && dog.info && dog.info.name) { name = dog.info.name;}

你覺得這段代碼有問題么?

如果你覺得沒有問題,那么很好,你很樂觀。

無所謂了,我才不要你覺得,我很倔,我就偏偏覺得這段代碼有問題,沒問題我也得挑挑問題 。

我寫代碼時的小倔強

嗯,代碼邏輯好像沒毛病,那硬要說有問題的話,代碼量是不是有點多?

比如在獲取狗名時,為了防止報錯,要先判斷狗是否存在,再判斷狗的信息是否存在,最后才能取到狗名,好啰嗦啊。如果還要獲取一堆其他的信息,這代碼簡直沒法看了。

所以,我就開始思考,如何讓這段代碼更加精簡,有沒有更好的寫法呢?

通過百度,我發現了一個牛逼的玩意兒,叫 可選鏈操作符( ?. ),允許讀取對象深處的屬性值,而不必明確驗證鏈中的每個引用是否有效;在引用為空的情況下不會引起錯誤,會自動短路返回值。

于是,代碼變成了這樣:


 
// 默認狗名let name = '無名狗';// 狗、狗信息、狗名稱都存在if (dog?.info?.name) { name = dog.info.name;}

已經比剛剛簡化了不少,但我不滿足,獲取個狗名竟然要寫 4 行代碼?這肯定有問題啊!能不能再簡化一下呢?

思考了一下,這次我憑著自己賊硬的基礎知識儲備,沒有百度就想出了更精簡的寫法,使用 JAVAScript 的三元運算符就行了,代碼如下:


 
let name = dog?.info?.name ? dog.info.name : '無名氏';

怎么樣,一行代碼搞定!

我寫代碼時的小倔強

下面給大家個機會,代碼寫成這樣還有問題不?或者說,你看這行代碼覺得舒服么?

反正我覺得不太行,我魚某偏要從雞蛋里挑骨頭!

仔細看,我們發現 dog、info、name 這三個單詞都重復出現了兩遍,那有什么辦法再精簡一下呢?

再次打開搜索引擎,這次搜了半天都沒找到優化的方法,那我干脆就去搜了 “JavaScript 小技巧”、“JavaScript 高級寫法” 等關鍵詞,終于找到了答案。

空值合并操作符( ?? ),當左側的操作數為 或者 undefined 時,返回其右側操作數,否則返回左側操作數。

最終,代碼縮成了這樣:


 
let name = dog?.info?.name ?? '無名狗';

舒服多了吧!

這就是我寫代碼時的倔強,通過這次挑問題,起碼幫助我學到了兩個 JavaScript 操作符的用法,爽死了!

我寫代碼時的小倔強我寫代碼時的小倔強

 

值得么?

那有同學說了:像你這樣寫代碼,不累么?這么認真地去摳代碼的細節,不會很花時間么?

小了,格局小了。

從這一次寫代碼來看,的確我花了更多的時間,代碼能跑就行了,管那么多別的干啥呢?但從長遠來看,這是學習的必經之路,通過自己思考去發現問題、解決問題,學到的知識可以說是深深地刻在了腦海里,以后再寫類似的代碼時,就能更輕松、規范和高效,省下的時間是無限的!

當然,摳細節也要看情況,如果你要開發的東西很緊急,肯定還是先以完成功能為主。但等后面有空了,一定要記得優化一下,否則你也算是為代碼 “屎山” 貢獻了自己的一份力量。

我寫代碼時的小倔強

悲觀編程還有什么其他的好處呢?

樂觀編程時,我們往往是被動地發現問題,以為代碼跑的很順利,但卻往往被別人來提 Bug,再被迫修改,心態會越來越差。

而悲觀編程時,我們是自己主動找問題,主動去優化代碼。當你通過思考、搜索和實踐,將原本很復雜的代碼化繁為簡后,你會驚喜地發現:我去,原來代碼還可以這樣寫!牛逼牛逼!

我寫代碼時的小倔強

然后,你就會收獲成就感,繼續堅持這種習慣,不斷進步。

這讓我不禁想起了拼多多,早期沒有給用戶很高的預期,讓他們覺得這是個多牛逼的產品。而是主動降低用戶的預期,讓大家都覺得這是個土味兒產品,后來再一次次地超出預期,最終走向成功。

我寫代碼時的小倔強

 

找不到問題?

看到這里,大家應該理解我寫代碼時的倔強了。但一定會有同學表示,我沒有這種敏銳的直覺,看不出自己代碼中的問題咋辦呢?

我自己有一些經驗方法,大家可以嘗試一下:

  1. 當你覺得有段代碼寫起來很麻煩時,多半有問題,不妨去搜索下有沒有現成的組件,或者別人是怎么實現的。

  2. 當你重復寫某段代碼時,一定有問題,不妨把它抽象成函數或組件、或者用設計模式來優化。

  3. 當某段代碼中寫了大量的 If Else 時,一定有問題,試著重新梳理邏輯,減少條件和分支。

  4. 多關注開發工具的報黃和報紅提示,通常能得到很多好的優化建議,盡早發現問題。

我寫代碼時的小倔強

再給大家一道練習題,上面舉的栗子是前端的,這次就舉個 Java 的吧。

目標是獲得所有狗的名字列表,老弟小阿巴寫的代碼如下:


 
// 獲得所有狗的名字列表List<Dog> dogList = new ArrayList<>;List<String> dogNameList = new ArrayList<>;if (dogList !=  && dogList.size > 0) { for (int i = 0; i < dogList.size; i++) { Dog dog = dogList.get(i); if (dog != ) { dogNameList.add(dog.getName); } }}return dogNameList;

這段代碼有問題么?如何優化呢?大家快來試試吧~

小提示,一行代碼就可以實現同樣的功能!歡迎在評論區交流。

分享到:
標簽:代碼
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定