雜談 ----- 幾個月的忙碌工作簡記
很久沒更博了,今天閒著沒事,難得有興致,把自己最近幾個月的工作感悟做個簡記,畢竟好記性不如爛筆頭 ^ _ ^
以下內容不分主次,想到啥寫到啥,哈哈~~~
1、時刻謹記,寫Java程式碼時,傳參只是傳副本,仔細想想就不容易踩坑;
2、寫程式碼之前,多想想邏輯流程,程式碼不過是思路的一種實現方式,可以簡單用筆寫寫畫畫,或者用ProcessOn(簡單便捷的線上作圖工具);
3、很多時候,一段好的程式碼不是一蹴而就的,而是不斷迭代,不斷優化,不斷更新,才有了它最終的樣子,所以最開始的時候儘自己最大的努力去實現最簡單的功能就可以,後續再一步步優化;
4、自己也是剛畢業的普通二本娃,技術經驗都一般,但是也會有理想,儘早選定一個方向,並堅定走下去,不是那種程式語言或者平臺的方向,
5、做移動開發的雖說比較多混合的東西要看要學,但是所基於的基本程式語言最好還是花時間去更深入,比如Android之於Java,iOS之於OC或者Swift,這樣對自己的職業生涯發展是很有好處的,當然,本人也正在這條路上走(共勉^ _ ^);
6、自己進公司以來的兩個月都基本在做資料轉換的介面,工作量頗大,內容頗多,這個時候,封裝、分流、重構程式碼就顯得尤為重要了,雖然一開始可能是比較痛苦的,但是涇渭分明的程式碼對後續開發省的可不是一小點時間;
7、公司比較注重結果,所以過程不要太在意,當作自己的歷練就好,而團隊比較注重效率,畢竟不是學校裡那種做課程設計的環境,不可能給你十天半個月去熟悉整個系統再著手幹活,要的是效率、效率、效率。最開始的時候,自己以為工作中那些大牛肯定也是技術上的大牛人,但是工作後漸漸發覺,真正的大牛根本不關注這些東西,他們厲害之處在於用最短的時間、最高的效率去解決遇到的各種問題,所以說,工作中的牛人其實是快捷高效解決問題的牛人;
8、儘早擁有網速夠快的vpn或者其他科學上網的手段(目前最快的vpn是expressVpn),高效優先,百度廣告實在打得太沒良心,畢竟有這麼個說法,解決問題最高效的三個工具Google + Stack Overflow + Github,結合這三個東西,沒有解決不了的問題;
9、做移動開發要靈活運用回撥介面;
10、當一個類太過複雜時,可考慮用繼承來拆分邏輯(可用其他手段儘量少用繼承);
11、呼叫介面物件的方法時,所有實現該介面的地方都會得到呼叫;
12、下手寫程式碼前,還是要多考慮各種情形,特別是異常情況的處理,像判空、容錯這些是必須考慮的,最好的除bug手段就是源頭解決,據說外國佬寫程式碼從不用複製貼上,但是他們思路無比清晰,所以效率極高,就算多敲了一遍敲過的程式碼;
13、如果不同類之間資料交接較頻繁,要注意一個類最好只做自己的事,專一干活的類對整個系統穩定性和擴充套件性有好處;
14、巧用 Android 中的廣播來進行跨程序、跨執行緒程式設計,有時可考慮替代為回撥介面;
15、如果業務往來較多,而且採用廣播來通訊,廣播接收器裡的onReceive方法最好開啟執行緒來處理,畢竟不能處理超過10s(否則ANR),如果頻繁接收到廣播,要進一步考慮使用執行緒池,畢竟不能每幾秒就開一個執行緒吧;
16、寫Java程式碼的人最直接的提高效能的地方就是,謹記儘量少產生讓GC程序過度勞累的東西(尤其大物件、全域性變數等),對於不再使用的物件儘早顯示賦為 null;
17、在子執行緒裡操作業務邏輯時,如果需要使用到while死迴圈,必須加 sleep,否則必然佔據大量CPU資源導致被程序被幹掉;
18、寫程式碼一定要嚴謹、規範,漂亮的程式碼是在遵循程式碼標準的前提下形成的,用了 try-catch 要關閉資源必帶 finally;
19、逐漸將熟悉的 io 程式碼操作轉為去習慣 NIO 包下的類的使用(Thinking in Java);
20、重複三次以上的程式碼要考慮可否封裝成方法、類、介面等,一個方法最好不要太冗長;
21、如果需要跟同事配合完成任務,學會定時踢同事屁股,催進度也是要技巧的;
22、如果用常規的思路去實現功能對於自己目前的技術水平來說難度過高,那麼先用笨辦法實現也不失為一個好方法,因為在工作上結果比較重要(當然後續一定要去優化);
23、同驅動層、HAL層或者Linux層傳輸資料時,使用 Json String 的格式(XML 現在比較偏配置),有時候可以非常省事;
24、學會使用移位、按位與、按位或、異或、按位非等資料的最基本操作,熟悉進位制轉換,有時這些東西可以幫你省下不少時間;
25、做 Android 開發的需要熟悉日常的 adb 命令;
26、如果沒有必要每次都產生一個新物件,那就不要浪費這類資源(考慮改變物件狀態等);
27、用做產品的態度去寫程式碼跟用實現功能的態度去寫程式碼,結果是截然不同的(有時間必須要去優化自己的模組程式碼);
28、打 Log,最好使用可以方便去掉列印的開源庫(或者自己寫個簡單的封裝類來控制過多的 Log 列印);
29、持久化資料操作,簡單資料用檔案、類似鍵值配置等用Preferences、資料邏輯複雜用資料庫、資料分享用ContentProvider;
30、使用 File 相關的 IO 類初始化時,若不指定檔案開啟模式,會清空檔案內容(此坑已踩過);
31、Java 中的集合(資料結構) + IO + 多執行緒程式設計 + 網路程式設計,花多點時間去熟悉也不為過(其他語言類似);
32、切忌用理所當然的態度對待 bug,就算繁瑣也要從源頭上開始一步一步找問題所在,否則可能會花更多的時間來彌補;
33、大部分時間都在看程式碼,所以要看好的程式碼,規範、嚴謹的程式碼,漂亮的程式碼,有時間記得模仿摘抄收錄下來;
34、做專案要快,如果有輪子,就沒必要再造了,如果輪子太重,就給予適度精簡,畢竟不是每個輪子都百分百適合專案;
35、關注那些值得關注的人,國內國外大牛都可以,多看好書,多看好的部落格,因為這是對待技術職業的一個態度;
36、要有自己的信仰,要有自己的理想,要有自己的風格,要有健康的身體,少刷社交軟體,少玩遊戲,技術生涯是無盡的。
----- 此致,共勉 !