成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

挨踢部落故事匯(18):程序猿與代碼的基情

原創
移動開發
作為程序猿,大家應該每天都在和26個字母做著你死我活的斗爭,對于編程應該也都有自己獨到的見解。借著這個機會,51CTO社群中核心開發者小史童鞋拋個磚頭,粗淺的和大家聊聊關于代碼的一些事。

【51CTO.com原創稿件】“朋友,你還會修電腦啊?”這是小史在朋友中聽到過的最多的一句話。每當聽到這句話時,他也很無奈。難道程序猿就一定要會修電腦嘛?但是沒辦法,在朋友眼中,編程是一個很高深的工作。可能動動手指,哪邊就會出什么事,生活十分精彩。嗯,電影看多了。作為一名不會修電腦但努力想學習修電腦的程序猿來說,除了修電腦的技能,也還要具備大部分其他程序猿共有的特質。比如:宅、悶。可能也具備獨有的特質,喜歡陪老婆逛街。。。

[[193566]]

小史·Java開發

嚴肅的簡單介紹下本期主人公小史童鞋,從事Java后臺開發工作已經三年有余,目前服務于一家創業公司做駐場開發。期間經歷過kafka,大數據等領域的開發。作為程序猿,大家應該每天都在和26個字母做著你死我活的斗爭,對于編程應該也都有自己獨到的見解。借著這個機會,小史拋個磚頭,粗淺的和大家聊聊關于代碼的一些事。

一、對復制/粘貼說NO

小史看過一篇文章《程序員的進步從每一天少寫一點代碼開始》里面提到說Google與網絡的幫助可以讓你寫出一行又一行的代碼。這句話不禁讓小史想起大學實習,面試工作時候,測試主管對他說的一句話:“寫代碼沒什么難的,不就是復制、粘貼嘛”。當聽到這句話的時候,他的腦海中不禁又浮現出了同學對他說的話:“我現在在公司里整天干的活就是復制、粘貼”。當時小史不經意間產生一種疑問,難道程序猿的工作這么簡單和枯燥嘛?帶著這個疑問,他踏入了程序開發的大軍中。

小史參加工作的***天,他的領導就反復強調一句話:“寫代碼不要復制、粘貼”。這對于剛參加工作的他不是太能理解這句話的含義。當時,他一心就是為了工作效率,工作趕緊完成,讓領導知道自己的能力。這就導致了功能代碼的命名、結構差勁,后來返工反而浪費了更多的時間。現在他回頭想想,當時的行為是多么的幼稚,如果只是復制粘貼,并沒有嘗試了解背后的運作機制,充其量代表了工作完成而已。

二、碼農的追求——高品質代碼

“你的代碼像一坨翔”。相信這句話大家或多或少的在平時工作中都有聽過。曾經在網絡上看見過一個帖子是這樣說的:“相信很多人都認為自己的代碼是最棒的,別人的代碼都是很糟糕的,因為看不懂”。畢竟程序猿都有一顆工程師的心,所以當他們到新的場地想做的***件事就是,將舊的一切推倒重來。是的,他們決不會滿足于簡單的增量勞動。或許這種微妙的心理定位可以解釋:為什么程序猿進入新項目組后寧愿丟掉舊代碼重新寫,也不愿意修修補補。他們認為舊代碼簡直一團糟。

好的代碼,就像是好的笑話,無須解釋就能讓人輕易明白;壞的代碼,就像是古文言,即使寫滿了注解,也不一定能輕易看懂;好的代碼,就像是一本寫作技巧高超的人所寫的書,它容易理解、分章明確;壞的代碼,就像是剛剛學會寫字的人所寫的書,它錯亂復雜,自我推翻。

那么,如何寫出一段好代碼呢?小史曾經看過一篇文章,覺得解釋的很好,它是這樣說的:

  • 可讀性——你所寫出的代碼,不僅你自己要明白,你身邊合作的開發者也要能在最短的時間內看懂。(這個尤其要注意)
  • 可維護性——讓你的代碼在修改的時候很簡單。
  • 簡潔性——不要讓你的代碼看上去毫無必要的復雜。
  • 效率性——盡可能的讓你的代碼獲得最快的運行速度。
  • 明確性——類的命令、方法的命名要清楚的表達出具體動作的含義。

三、代碼優化很有必要

代碼優化,一個很重要的課題。可能有些人覺得沒用,一些細小的地方有什么好修改的,改與不改對于代碼的運行效率有什么影響呢?關于這個問題,小史有深刻的體會。舉個例子,之前他寫過一個功能用到redis的排序。本著有輪子不造輪子原則,毅然決然的使用了redis提供的排序方法。寫完之后,他還挺高興的,對redis的學習又深了一點。然而,事與愿違,當代碼放到生產環境上運行出來的結果直接把他干懵逼了,在大規模的數據洗禮下,完全跑不動。那晚,小史一行一行打著日志,分析慢的原因,***定位到了redis的排序上(具體代碼細節不作闡述),然后寫了一個算法代替了redis排序。

關于代碼優化,小史做了很多筆記,如:

1、盡量指定類的final修飾符帶有final修飾符的類是不可派生的。

2、盡量重用對象。特別是String 對象的使用中,出現字符串連接情況時應用StringBuffer 代替。

3、盡量使用局部變量,調用方法時傳遞的參數以及在調用中創建的臨時變量都保存在棧(Stack)中,速度較快。其他變量,如靜態變量、實例變量等,都在堆(Heap)中創建,速度較慢。另外,依賴于具體的編譯器/JVM,局部變量還可能得到進一步優化。

4、在Java+ ORACLE 的應用系統開發中,Java中內嵌的SQL語句盡量使用大寫的形式,以減輕ORACLE解析器的解析負擔。

5、盡量減少對變量的重復計算
例如:for(int i = 0;i < list.size; i ++) {
             …
}
應替換為:
for(int i = 0,int len = list.size();i < len; i ++) {
             …
}

6、盡量采用lazy loading的策略,即在需要的時候才開始創建。
     例如:     String str = “aaa”;
             if(i == 1) {
                 list.add(str);
}
應替換為:
             if(i == 1) {
String str = “aaa”;
                 list.add(str);
}

等等……

四、書籍很重要

Web行業知識更新特別快,今天一個框架的新版本,明天又是另一個新框架,有時往往根據項目的需要來不斷學習新東西。所以,我們大家在平時閑暇的時候不妨多看兩本好書,如果實在沒時間看的話,也建議大家去找一些看過這本書的大牛寫的博客。因為,這上面可能就是整本書的精華所在。

以上觀點來自51CTO社群核心開發者小史的個人見解,歡迎加群(群號312724475)共同交流學習~

51CTO開發者交流群②群 312724475

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

責任編輯:何星 來源: 51CTO
相關推薦

2017-01-11 17:25:23

開發者故事

2017-01-05 15:30:59

開發者故事

2017-01-19 13:40:56

開發者故事

2017-01-18 16:37:43

開發者故事

2017-11-28 14:15:38

開發者故事

2017-03-21 11:19:57

開發者故事

2016-12-30 16:43:53

開發者故事

2017-03-01 15:57:48

開發者故事

2017-08-04 13:15:59

開發者故事

2017-10-23 13:15:51

2017-01-10 14:59:03

開發者故事

2017-09-15 11:39:47

2017-01-13 16:36:29

開發者故事

2017-07-06 14:59:27

2017-03-10 11:32:49

開發者故事

2017-01-16 17:24:08

開發者故事

2017-01-18 11:07:20

開發者故事

2017-04-21 15:50:52

開發者故事

2017-04-25 15:39:30

開發者故事

2017-01-19 14:46:55

開發者故事
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区三区视频免费观看 | 欧美精品成人一区二区三区四区 | 国产二区视频 | 日韩在线视频免费观看 | 超碰导航 | 91影院 | 国产乱码久久久 | 日韩在线不卡视频 | 久久精品国产99国产 | 精品欧美激情精品一区 | 久久亚洲欧美日韩精品专区 | 日韩精品一区二区三区视频播放 | 在线观看www高清视频 | 天天躁人人躁人人躁狂躁 | 91视频播放 | 欧美人成在线视频 | 国产日韩欧美在线观看 | 欧美综合久久 | 狠狠狠干| 一区二区三区中文字幕 | 国产乱码精品一品二品 | 精品国产一区二区三区性色av | 国产成人精品一区二 | 免费国产一区二区 | 日韩综合在线 | 久久午夜影院 | 亚洲精品一区二区在线 | 成人乱人乱一区二区三区软件 | 日韩欧美国产一区二区三区 | 久久高清精品 | 日韩精品免费视频 | 午夜在线 | 中文在线一区 | 亚洲成av人片在线观看 | 一区二区三 | 91在线精品秘密一区二区 | 国产成人久久av免费高清密臂 | 精品二区| 午夜视频精品 | 精品九九在线 | 另类 综合 日韩 欧美 亚洲 |