天天看點

程式設計之道

早上看了CSDN上一篇大三學生寫的部落格,讓我覺得自己萬分的慚愧,就如同被狠狠地扇了一個耳光。說實話,我很讨厭自己,讨厭自己身上的那些缺點。當然不能因為自己很爛,就徹底的自暴自棄,我還是需要鼓起勇氣,多學習一些知識終究會有好處。

切記一根筋

看完這個小節,都有點懷疑自己到底還能不能在軟體這個行業上有所成就。這裡還需要把作者給出的内容重複一遍。

問:“若要做好程式設計,必須要積累很多年經驗才行嗎?”

比爾蓋茨說道:“不是的,我覺得在程式設計的3-4年後,你是不是一名優秀的程式員就決定了。”

我真的覺得自己就是一名不會程式設計的人,雖然我已經從事軟體開發4年了,這還要抛棄大學的學習生涯。如果按照這個觀點繼續下去,我覺得我恐怕要放棄程式設計了,然而我無論可走,我隻有在軟體開發這個行業中才能生存,我沒有其他的技能。我必須給自己一點自信,畢竟我的工作還是受到了重視和尊重,我的确不夠優秀,但我至少比很多人要強,我并不會被淘汰。

成為更加優秀的程式員的方法是抛開程式設計。

多培養自己對程式設計周邊事情的熱情,讓自己喜歡的範圍擴大,進而在程式設計技能之外的地方也取得進展突破,這會幫助你成為更優秀的程式員。記得《代碼大全》中寫到軟體建構的過程中需要用到隐喻,而隐喻就需要你能夠更好的懂得生活。

我最近在極客頭條上發表了一篇程式員們,你們在讀哪些書?說說書名+收獲,很多很多同仁所讀的書都不會僅限于軟體程式設計的書,他們在讀《富國論》、《時間簡史》、《解憂雜貨店》等等,我覺得這就是一個優秀的程式員應該去讀的書。

破窗理論

這個觀點,Jeff其實發表過與其類似的部落格,諸如《處理壞蘋果》。這其實都表達了一個内容,就是:代碼中如果存在瑕疵、錯誤,那麼就要着力修改,不要放任小的錯誤不管,這終究會帶來災難。

關于“破窗理論”,如果你不知道的話,請了解一下吧,這其實和做人有一樣的道理,“勿以善小而不為,勿以惡小而為之”,這是劉玄德的遺诏中一句話。

人的能力會與日俱增,那麼當你看到你以前寫的爛代碼後,如果你有精力修改,那麼就修改掉它。如果你正在負責的項目中也有,那麼就花時間改善掉,不然整個項目會随之爛掉。

要麼熱愛,要麼離開

這個觀點其實也可以應用到其他領域,所謂“幹一行,愛一行”,如果你選擇的行業,你不夠熱愛它,那麼離開它就是唯一的抉擇。迫于社會壓力,處在軟體行業頂峰的人,諸如劉強東、馬雲,他們如明星般光彩照人,而處于低端的人,像我一樣,苦苦的為明天而掙紮。

很多時候,我也在懷疑我自己是否适合做這個行業,但是我思前想後總結到,我離開這個行業,真的無論可走,與其這樣說,還不如說我深深的愛着這片土地。

簡單之美

這個觀點也很普通,喬布斯也說“緻繁歸于緻簡”,幾乎所有人都不喜歡繁文缛節,我們都崇尚于簡約大方。觀點表達起來都很容易,但是能夠強制執行簡單的做法卻少之又少。

keep simple:保持簡單,當在向我們的項目中添加功能時,盡量先在腦中過一過這個概念,保持目前添加進去的子產品足夠的獨立,足夠的簡單,不去影響到已經存在的代碼。

不要妄自推測:有很多人喜歡在寫一個功能的時候,瞻前顧後,認為自己應該想得足夠的充分,以緻于本來很簡單的功能最後繁雜沉重。舉個例子,假如我們現在要為NBA的一場比賽記錄分數,你可能想,萬一哪天某一個超級英雄爆發個人得分單場超過1000分,那麼我們的記分器就要做好充分的考慮,這就屬于妄自推測,很明顯,單場比賽總得分一個球隊超過200分就不得了了。

自己動手:我記得,我曾發表過一篇名為《mysql:論證select count(*)和select count(1)的差別》的文章,是因為我的同僚說怎麼怎麼樣,結果經過我的論證發現和其說的觀點有很大的沖突。自己動手,豐衣足食。

樂于删代碼

我一直很厭煩别人把已經沒有用處的代碼留在項目中,即使那段代碼曾經做過貢獻,我覺得也應該盡早的删除掉,我甚至認為,不必說出任何理由。

     // 保證金和出金的當機資金是累加的,對于結算程式來說,當日結算時需要減去上一日的結算後的占用資金

     // 重要:從銀行清算結果看,銀行在處理當機資金時,當機資金為目前賬戶所有的保證金+出金當機資金

//   BankDailyPreSettlement preRecord = this.bankDailyPreSettlementMapper.getPreday(record.getUid());

//   if (preRecord != null) {

// record.setOccupyMoney(record.getOccupyMoney().subtract(preRecord.getOccupyMoney()));

//   }

看看我曾經這樣幹過,但是經過今天看Jeff的觀點,我覺得我趕緊把這段内容給删除掉,并且連根拔起,删除掉這段内容,并且删除掉相關廢棄的代碼。

你是程式員這塊料嗎

的确對于我自身而言,在學習程式設計的過程中,我在以下這些内容上遇到了障礙。

指派和序列

遞歸

并發

這些阻礙足夠讓我覺得自己壓根就不是塊程式員的料,直到現在,這些内容讓我惶惶不可終日。

然而,我該退卻嗎?答案顯然是不,無論怎樣,我覺得隻要我還在努力,我就會在程式設計這方面取得成就。

int a = 10;

 int b = 20;

 a = b;

 System.out.println(a);//20

 System.out.println(b);//20

這個測試題,顯然我又運作了一次,才來保證自己内心确認自己的觀點是正确的。

我想說,我認為自己不适合程式設計,但是我依然堅信我能夠在這個行業上取得一些成就,因為我還在努力。

繼續閱讀