學(xué)習(xí)Java必須避開的十大致命雷區(qū)
Tiobe發(fā)布了***一期(3月)編程語言歡迎度榜單,其榜單根據(jù)互聯(lián)網(wǎng)上開發(fā)人員、課程和第三方廠商的數(shù)量,并根據(jù)使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube統(tǒng)計(jì)出排名數(shù)據(jù)。毫無疑問,老大哥Java 穩(wěn)居***。同樣都是編程語言,為何Java那么優(yōu)秀?
本文梳理了學(xué)習(xí)Java需要注意的十大雷區(qū)和常用工具,祝各位大神看好學(xué)好,長生不老。
學(xué)習(xí)Java需要注意的十大雷區(qū)
1. 研究太多,實(shí)踐太少
在編程方面缺乏實(shí)踐是十分致命的。從***天開始學(xué)習(xí),就要每天練習(xí)編程。就如同學(xué)習(xí)拳擊或跳舞,如果只通過視頻學(xué)習(xí),永遠(yuǎn)也學(xué)不會(huì)這些。除非你把練習(xí)編程變成一種日常習(xí)慣,否則永遠(yuǎn)不會(huì)對編程有信心。
2. 沒有目標(biāo)的無休止盲目學(xué)習(xí)
有些學(xué)生,盡管年齡大,卻只是單純喜歡學(xué)習(xí)。他們追求的是過程,而不是結(jié)果。即使這樣可以開闊你的眼界,但是也不得不承認(rèn),浪費(fèi)上百小時(shí)(如果不是上千小時(shí))在新潮的愛好上,是沒有任何意義的。
僅僅為了賺錢的程序開發(fā)員,是不會(huì)在谷歌或者其他著名軟件公司旗下任職的,因?yàn)榫幊踢@行業(yè)并不屬于他們。同樣的,如果你熱愛編程,但卻不愿每天付出時(shí)間練習(xí),那也許編程并不適合你。
3. 一次性學(xué)習(xí)太多技術(shù)
軟件開發(fā)這領(lǐng)域是個(gè)深藏眾多數(shù)據(jù)和編碼工具的深海。如果你期望學(xué)習(xí)熱門并且看起來有意思的東西,你可能會(huì)在剛開始就完全陷入困惑之中。這就是為什么你需要根據(jù)自己的情況制定特定的計(jì)劃,計(jì)劃中包括融入Java的核心編碼項(xiàng)目和編程工具。具體的計(jì)劃和目標(biāo)也可以幫助你避免成為無止盡的學(xué)習(xí)者,讓你的學(xué)習(xí)設(shè)定在明確的時(shí)間框架內(nèi)。
4. 造成學(xué)習(xí)空檔
還記得“每天練習(xí)編碼”這句學(xué)習(xí)Java的座右銘嗎?很好,每當(dāng)你想要偷懶翹掉幾天編碼學(xué)習(xí)時(shí),就想想這個(gè)。初學(xué)者在剛開始時(shí)就三天打魚、兩天曬網(wǎng)的話,造成的后果會(huì)比想象中嚴(yán)重。一旦開始學(xué)習(xí)新的知識(shí)板塊,其中涉及到之前的知識(shí)時(shí),你會(huì)發(fā)現(xiàn)自己完全不記得之前學(xué)習(xí)的內(nèi)容。這種驚人的“健忘癥”會(huì)不斷阻礙你的前進(jìn),所以竭盡全力、從不間斷地學(xué)習(xí)前進(jìn)吧。
5. 認(rèn)為只要了解了Java,就可以開始編碼
一個(gè)優(yōu)秀的開發(fā)人員必須掌握語言這個(gè)必要的工具。有些人可能認(rèn)為編程必須是對數(shù)學(xué)很在行的——不,其實(shí)未必。同樣的,知道如何寫代碼也不代表你會(huì)成為程序員。編程還要求你掌握許多其他的技能:強(qiáng)大的邏輯思維能力、解決問題的能力,以及將程序的結(jié)構(gòu)和序列可視化的能力。有經(jīng)驗(yàn)的程序員會(huì)在考慮好解決方案的邏輯之后再開始編寫代碼。
6. 深陷在困難的理論之中
在通常情況下,花在任務(wù)或研究上的時(shí)間與事情的成功與否沒有直接的關(guān)系。學(xué)習(xí)Java時(shí),持之以恒的態(tài)度是解決問題和學(xué)習(xí)新知識(shí)的關(guān)鍵。但有時(shí)候,你需要先跳過難以解決的問題,稍后再找到出現(xiàn)問題的核心。友情建議:不要試圖死記硬背代碼,也不要對編碼中的“工作原理”糾結(jié)得太深。Java的許多進(jìn)程都是自動(dòng)運(yùn)行的,因此你可以更多地注重編程的直觀感覺,并不斷讓自己更加熟練。
7. 忽略可讀代碼的重要性
學(xué)習(xí)編程時(shí),首要任務(wù)就是讓代碼運(yùn)作起來。這也是為什么初學(xué)者不注重帶有清晰注解的可讀代碼,而這些代碼后來可能會(huì)被“解密”。
但是大多數(shù)有經(jīng)驗(yàn)的程序員會(huì)做這樣的事情。他們遇到某些不熟悉的代碼時(shí),會(huì)試著理解這些代碼的意思以及這些代碼要完成的功能。只有足夠努力,你才能適時(shí)地學(xué)習(xí)如何編寫可讀性代碼。
8. 沒有定期測試代碼
非常遺憾,但是確有這樣的事實(shí)——你編寫的代碼并不總是如期運(yùn)作。這就需要定期測試,別讓后續(xù)的錯(cuò)誤越積越多。如此以來,每個(gè)階段就只需要處理少數(shù)的問題,而不需要反復(fù)費(fèi)力的調(diào)試以找出漏洞所在和漏洞出現(xiàn)的時(shí)間。
9. 單獨(dú)學(xué)習(xí)Java
鑒于網(wǎng)上有許多助你成功學(xué)習(xí)的工具和資源,往往大家會(huì)選擇自學(xué)編程??墒谴蠹視?huì)忽視真正的學(xué)習(xí)交流。事實(shí)上,盡可能多地參與學(xué)習(xí)小組會(huì)更有效率。比如, Coderanch和Stack Overflow論壇(這兩個(gè)都是與程序相關(guān)的IT技術(shù)問答網(wǎng)站)就有許多供Java程序員討論的平臺(tái). 此外,還有一個(gè)Oracle Java社區(qū),它鼓勵(lì)新手和經(jīng)驗(yàn)豐富的開發(fā)人員加入該Java論壇并關(guān)注Oracle Java博客的更新。值得一提的是,Reddit上的Java社區(qū)已超過10.7萬人。
10. 認(rèn)為總有一天自己會(huì)懂得一切編碼知識(shí)
作為編程菜鳥,多聽聽有經(jīng)驗(yàn)的同事的建議,始終不懈的學(xué)習(xí)。編程領(lǐng)域日新月異,要求學(xué)習(xí)者始終秉持著學(xué)習(xí)的態(tài)度掌握與時(shí)俱進(jìn)的新知識(shí)新技術(shù),這樣才能成為受人追捧的專家。
學(xué)習(xí)Java的成功秘訣
- 安排好學(xué)習(xí)時(shí)間,盡量減少干擾。
- 風(fēng)雨無阻,日常編碼。
- 嘴上再能說,不如動(dòng)手做。
- 正確的提問。可以加入Stack Overflow和Coderanch論壇的討論,在編程課程上結(jié)交虛擬朋友,一起做復(fù)雜的項(xiàng)目。
- 編程可視化。試著制作一個(gè)作品集,讓別人有機(jī)會(huì)看到你的作品。
- 即使成功了,也要堅(jiān)持每天學(xué)習(xí)。
總而言之,如今有最廣泛的資源:Java博客、指南、指導(dǎo)課、專題報(bào)告、課程、編碼“戰(zhàn)場”。所以,現(xiàn)在就按照正確的比例將這些“教育雞尾酒”混合,小酌一口吧!
學(xué)習(xí)Java的幾種工具
1. 多種編碼語言的資源:
• CodeAcademy ——通過編碼學(xué)習(xí)編碼
CodeAcademy從***堂課開始就是一些實(shí)際的編程任務(wù)。由簡單到復(fù)雜。遇到問題可以嘗試自己找到解決方案,如果覺得難,可以點(diǎn)擊任務(wù)欄上提示尋求幫助,或者去常見問題(FAQ)處尋求解答。CodeAcademy是個(gè)很好的學(xué)習(xí)Java的補(bǔ)充工具,可以利用它提高編程技能,但是同時(shí)也需要其他的一些資源來學(xué)習(xí)關(guān)鍵概念。
• Codewars ——參加編碼競賽
掌握了基礎(chǔ)后,可以嘗試Codewars讓自己在編碼更有信心。這是一個(gè)在線平臺(tái),在此可以與其他程序員競爭,并提高你使用多種編程語言編寫代碼的技能。你可以在瀏覽器中編寫解決方案,并逐步檢查它們;可以單獨(dú)編寫代碼,或者組隊(duì)處理任務(wù)。解決的任務(wù)越多,獲得的就越多。
2. 嚴(yán)格用于學(xué)習(xí)實(shí)踐Java: CodeGym.cc
趣味學(xué)習(xí):CodeGym是一個(gè)在線學(xué)習(xí)平臺(tái),它使用游戲化的方式讓你的學(xué)習(xí)體驗(yàn)變得有趣。課程分為四個(gè)任務(wù),設(shè)定在未來世界的故事情節(jié)和獨(dú)特的人物設(shè)定。每個(gè)任務(wù)包含十級(jí)。每一級(jí)多達(dá)10-13課,外加幾十個(gè)實(shí)踐任務(wù)。與CodeAcademy一樣,從***課開始,學(xué)員可以通過網(wǎng)絡(luò)集成開發(fā)環(huán)境(web IDE)編寫代碼。一切都很簡單:讀取任務(wù)、編寫代碼,然后單擊“check”按鈕立即得到結(jié)果。與其他編碼練習(xí)不同的是,它提供了Java理論的清晰解釋,因此對于所有的初學(xué)者來說非常方便。