原創文章,如有轉載,請註明出處:http://blog.csdn.net/yihui823/article/details/6746448
寫這篇文章,並不是突然來的想法。寫之前也猶豫了很久,因為擔心會遭到很多白眼,被眾多高手吐槽。反覆思量,還是決定寫一些,也算是給自己一個解釋。好了,我先承認,我不是高手。
為什麼說,要給新手多一些耐心呢?
寫部落格的時間不長,文章也不多。但是我寫的時候,總是寫的比較白話,寫的比較細緻。我記得有一篇,我是寫如何把一篇錯誤的線程代碼,分5次改成可以用的代碼的。很快我就發現,踩的比頂的多多了。也有高手在評論中告訴我,其實怎麼怎麼做就行了。我首先要感謝這位高手,他的評論讓我知道代碼如何寫會更好。但是,我寫的這麼平庸的代碼,有問題嗎?
我當年也是從新手成長起來的。學Android也是從新手學起來的。很多時候,找到一個問題的解決方案,往往寫文章的人就寥寥幾句。很多高手都說:直接上代碼。然後呢?代碼弄過來,不一定編譯的了,不是少了這裡,就是少了那裡。好不容易弄通了,也不知道這些代碼是一個怎樣的進化過程。我相信有高手,寫代碼都是一遍就OK的。但是我們也得承認,我們不是高手,我們這個世界也不是只有高手在編程,還有廣大的中手低手在吃程式員這碗飯。我們需要一個成長的階梯。
同樣的情況,我在玩三國殺的時候就深深體會到。我在新手房把遊戲玩熟練了,就進入高手房深造。開局的時候,我就說明了我是第一次來高手房。結果,打牌的時候被眾多高手噴的體無完膚。不過我很快就在高手房玩精通,勝率也很高,也拿了“常勝將軍”的稱號。但是,沒有最開始的幾盤失敗,我能一步到位嗎?當然不能。我後來碰到新手,總是耐心的去跟他們講解牌面上的一些經驗。我想,高手不能總是打擊貶低新手的,有更多人來玩,不是更有趣嗎?
這種情況,讓我想起了段譽和蕭峰來。直接就學高手的代碼,就好象段譽,一上來雖然一身武功,但是碰到問題依然手忙腳亂不知所措。而一步一個腳印學上來的高手,就好象蕭峰,不但進階功夫(降龍十八掌)打的巔峰造極,就連一般的太祖長權也能在聚賢莊大發神威。
以前有個同事,在我們公司已經做到了項目組長的職位了,帶十幾個兄弟做J2EE完全不成問題。後來那哥們跳槽了,去了一家新公司。新公司的老闆讓他做一個servlet,那哥們說,不會。啊,怎麼可能不會呢?原來,那哥們一直是在公司自己的架構裡寫的代碼,架構熟的不能再熟了,在架構下沒有解決不了的問題。但是,離開了公司的代碼架構,他就不知所措了。當然,後來這哥們靠著自己的聰明才智,吃苦耐勞,從頭來過,現在也總算無限風光。
我相信,一個對Thread和Runnable能熟練掌握的人,即使不會Timer和TimerTask,也能把定時觸發的邏輯寫的優雅易懂。但是,一個上來就學Timer和TimerTask的人,不一定能搞定非定時的線程問題。
所以,我覺得不要在別人寫出一些較為低級的代碼之後,就大大的“踩”之。代碼不優雅可以討論,但是不能以“不使用進階類庫”之類的理由加以打擊。可以像我第一段說的那個高手一樣,給一個更好的方案,我想這是可以接受的。新手不需要一上來就學些精深的內容,從低級的東西學起,更有裨益。
我之前寫的博文,都是從新手的角度寫的,一方面是給同樣在學習的人一些協助,另一方面也在記錄自己的學習曆程。我自認在Android方面還是有不少心得的,不敢妄自菲薄,但是也不敢妄自誇為高手。一山還有一山高,誰也不能保證自己寫的代碼是最好的,java層寫的再好,還有人可以在c裡面寫了java調用,你說是吧。鄙人的博文寫的很詳細,也很無趣,都是一步一步的操作,一步一步的。如果新手們有不懂的,或者發現有問題的,可以留下評論,我會很開心的改正。如果高手們覺得很低俗,請繞道,也請手下留情,不要隨意“踩”之。