學心法 如何從原始碼角度體會作者的設計思想

2021-10-06 20:32:59 字數 799 閱讀 1988

我們在做專案時候一般會遇到下面的問題:

對於這些問題,說到底主要是因為經驗不夠,而經驗主要從專案實踐中積累,所以招聘單位一般都會限定工作時間大於 3 年,因為這些人的專案經驗相對較豐富,專案中遇到的場景相對較多。工作經驗的積累來自於年限與實踐,然而看原始碼可以擴充套件我們的思路,這是變相增加我們經驗的不錯方法。雖然不能短時間內通過時間積累經驗,但是可以通過學習開源框架、開源專案來獲取。

還有一點就是當你使用框架或者工具做開發時,如果你對它的實現有所了解,就能最大化的減少出故障的可能。比如併發佇列 arrayblockingqueue 裡面元素入隊有個 offer 和 put 方法,雖然某個時間點你知道使用 offer 方法時,當佇列滿了就會丟棄要入隊的元素,之後 offer 方法會返回 false,而不會阻塞當前執行緒;使用 put 方法時當佇列滿了,則會掛起當前執行緒,直到佇列有空閒元素,入隊成功後才返回。但是人是善忘的,當你一段時間不使用,就會忘記他們的區別,這時當你使用時,需進入 offer 和 put 的原始碼看他們的實現。進入 offer 方法一看,哦,原來佇列滿後直接返回了 false;進入 put 方法一看,哦,原來佇列滿後,直接使用條件變數的 await 方法掛起了當前執行緒;知道了他們的區別,你就可以根據自己的需求來選擇了。

看原始碼最大的好處是可以開闊思維,提公升架構設計能力。有些東西僅靠書本和自己思考是很難學到的,必須通過看原始碼,看別人如何設計,然後思考為何這樣設計才能獲取。能力的提高不在於你寫了多少**,做了多少專案,而在於給你乙個業務場景時,你是否能拿出幾種靠譜的解決方案,並且說出各自的優缺點。而如何才能拿出來,一來靠經驗,二來靠歸納總結,而看原始碼可以快速增加你的經驗。

更多原始碼級調優研習參考:

從原始碼角度來看UVM phase

說到uvm phase我們就知道是uvm乙個很重要的特性,從使用者角度來講,其實就是一些很簡單的應用規則,能夠極大地提公升編碼的效率,簡化 複雜度,提高debug的效率。至於應用可以參看zhangqiang大佬的第五章,這裡就不再贅述。本文就從原始碼的角度來看,uvm的phase是怎麼工作的?之前學...

從原始碼的角度理解Volley

今天從原始碼的角度來理解一下volley中部分功能的實現。新增請求到請求佇列 將請求新增到請求佇列中 public requestadd requestrequest 為請求設定順序編號.request.setsequence getsequencenumber 新增標記 request.addma...

從原始碼角度分析RACObserve的實現原理(一)

racobserve是個巨集,racobserve target,keypath 最終是執行 target rac valuesforkeypath keypath target,keypath observer self 這就牽出nsobject racpropertysubscribing ca...