自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

[[193566]]

小史·Java開發(fā)

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

一、對復制/粘貼說NO

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

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

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

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

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

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

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

三、代碼優(yōu)化很有必要

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

關于代碼優(yōu)化,小史做了很多筆記,如:

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

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

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

4、在Java+ ORACLE 的應用系統(tǒng)開發(fā)中,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的策略,即在需要的時候才開始創(chuàng)建。
     例如:     String str = “aaa”;
             if(i == 1) {
                 list.add(str);
}
應替換為:
             if(i == 1) {
String str = “aaa”;
                 list.add(str);
}

等等……

四、書籍很重要

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

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

51CTO開發(fā)者交流群②群 312724475

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

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

2017-01-11 17:25:23

開發(fā)者故事

2017-01-05 15:30:59

開發(fā)者故事

2017-01-19 13:40:56

開發(fā)者故事

2017-01-18 16:37:43

開發(fā)者故事

2017-08-04 13:15:59

開發(fā)者故事

2016-12-30 16:43:53

開發(fā)者故事

2017-03-21 11:19:57

開發(fā)者故事

2017-11-28 14:15:38

開發(fā)者故事

2017-10-23 13:15:51

2017-03-01 15:57:48

開發(fā)者故事

2017-01-10 14:59:03

開發(fā)者故事

2017-09-15 11:39:47

2017-01-13 16:36:29

開發(fā)者故事

2017-07-06 14:59:27

2017-04-21 15:50:52

開發(fā)者故事

2017-01-16 17:24:08

開發(fā)者故事

2017-03-10 11:32:49

開發(fā)者故事

2017-01-18 11:07:20

開發(fā)者故事

2017-04-25 15:39:30

開發(fā)者故事

2017-01-19 14:46:55

開發(fā)者故事
點贊
收藏

51CTO技術棧公眾號