不正確學習sdk所帶來的巨大危害
想想這一年,出現了兩個巨大的錯誤,第一個是在暑假的時候,當時想要了解直播視訊的原理,於是跟著視訊去敲了下相關的程式碼。 但是當時並沒有安卓的基礎,由於自己很多知識是自學的緣故,所以想著乾脆就直接去看sdk的程式碼吧。 一邊看一邊跟著敲。 這簡直就是一個巨大錯誤的開始! 把一切都想的太簡單了。 記得當時敲的是騰訊的隨心播sdk的原始碼。
這帶來的結果是連續好幾天心情極度壓抑,自己的學習積極性受到嚴重的挫敗。 但是由於自己事先已經計劃好了,又不得不迫使自己投入到實踐學習中去。 就像老太婆的裹腳布又臭又長!! 最後死磕的結果就是,自己啥玩意兒沒學到,對寫程式碼的厭倦感直線上升。 由此而引發的還有消極懈怠,積極性頹廢,輕度抑鬱等非常危險,可怕的消極情緒。
最終不得不以放棄該計劃而告終!!
第二次是前天。 因為當時計劃是將即時通訊的內容學習學習。 此時的我已經入門Android有了好幾個月。 由於有java的知識做支撐,所以內心多少還是有些底氣。 在實踐的過程中,我先是選擇了先看官方文件,然後理解總結,然後實踐。 確實取得了成績。 至少,是可以說正確的集成了的。 通過在IM後臺也確實能夠達到通訊的目的。
但是我的目標是完成端到端的連線通訊。所以光實現功能是不夠的。 還得有一些相對看得過去的ui。 這個時候,另一個愚蠢的決定又開始了!! 我又打起了SDK的注意。。 這次盯上的是極光的IMSDK:jchat。 我的目標本來是比較明確的,就是引用它的聊天介面的ui,而邏輯這塊我自己搞定。。
萬萬沒想到,我方法論還是出了一些問題 。 由這個頁面所引發的附帶的頁面以及相關的類和介面,成了一個黑洞,不斷的吸入它所附帶的內容。 這使得我要理解的程式碼量,以及複雜度瞬間上升了好幾個檔次。 更別說這些SDK中還有傑出的架構師在中間揮斥方遒了。
具體的問題有這樣的一些:
1. 為了程式達到更多的耦合性,將程式中出現的很多的業務邏輯進行了分層。 如使用了一些Controller,handler處理業務邏輯;將很多的常量以資源的方式引入; 將很多的內部變數進行抽象,定義為全域性的靜態變數;
2.為了達到定製化的效果,採用了介面卡的模式。 通常式自定義檢視,並與之配套相關的介面卡。 這塊程式碼即龐大,又夾雜著很多的業務邏輯。 同時還包含這其它的一些檢視元件。 總之,對外部人員看來,它的耦合性還是太高!
3. 為了達到內聚的效果,使用了繼承的方式,使得整個程式碼的很有層次,但是無形中加大了理解的難度。 因為很多的業務邏輯有可能分散在父類與子類之間。 對於不熟悉這個專案的架構的人來說,理解起來是難上加難了。
4. 由於個人的原因,對每個程式碼塊的邏輯不清晰,但是又不捨得丟棄程式碼。 覺得既然是官方寫的,那麼就一定是值得學習借鑑的,包括借鑑程式碼風格,架構方式,以及演算法使用的內容。 總之就是不捨得動刀子。
最後的結果也沒好到哪去。 逼著自己去完成了大概有10多個類,若干的資原始檔的拷貝,引用,糾正之後,我是害怕了。 結果昨天一天上課沒精神,加上陰沉沉的天氣,自己的內心有一種厭學的,莫名的,很壓抑的怒火。 但是當時竟不知道來源於哪裡。陷入了一種積極性頹廢狀態。
它是這樣一種狀態,想要學習點什麼,但是不知道學習什麼。 想要好好的玩一下,但是內心覺得自己又該學習。 想要看看視訊,但是覺得沒有什麼視訊能夠入了我的法眼。甚至就連睡覺,都覺得沒什麼意思。 我以為這是抑鬱,但是實際上我現在更多的覺得,這是迷失, losing myself。而這一切,其根本是自己的目標高於了自己的實際能力,也就是俗話說的眼高手低,好高騖遠。(好高騖遠在此時可以當作一個褒義詞,因為不好高騖遠的話,便沒了夢想)。
所以,論正確的使用SDK是有多麼的重要!