mentorship-program icon indicating copy to clipboard operation
mentorship-program copied to clipboard

[Week20] Shawn

Open shawnlin0201 opened this issue 5 years ago • 0 comments

今天討論了什麼?結論是什麼?

  • 過早最佳化(Premature optimization)
  • Junior 學習面向的抉擇

過早最佳化(Premature optimization)

在談論優化前,Huli 最後依據問題後將優化大致分為三類:

  • 效能上的優化(讓程式碼跑更快)
  • 結構上的優化(clean code,讓程式碼更好維護)
  • 防禦上的優化(讓程式碼不會壞掉?)

效能上的優化,並非這次主要討論的地方,但我自己認為這是應該優化的部分,也有多篇文章以及提及了不要過早最佳化並非指的是這個部分。

結構上的優化,並非這次主要討論的地方,而這個部分則是不要過早最佳化所認為的重點,但同時卻也是 Clean code 的重點部分,感覺起來這個部分的 Clean 在於有跟沒有之間,是需要時間體會開發經歷來掌握的部分 XD。

Huli 提供相關文章: goodbye-clean-code

防禦上優化,則是分了三部分:

  • 一種是基礎的防禦,例如辨識型別的部分,Huli 舉了像是檢查手機號碼這種判斷問題,最後結論似乎得很看狀況,但 Huli 可能不會對某些情況下太冗餘的判斷下太多工夫。

  • 另一種是邊界的問題,而邊界的問題最後則是結論在其實一開始開會與 PM 討論時的 spec 上做足即可,不需要自己太過早處理邊界的問題,並間接證實出 TypeScript 在這上面的優勢,因為 data type 上會有問題很多時候是在開發時期上的傳遞,透過 TypeScript 可以在開就報錯阻擋下來。

  • 最後一例則是指,例如要將函式透過傳參擴充功能時,遇到了共用方面上的問題,難以有個較好的方式解決,因此討論如何預防性先想到會遇到這一類開發上的問題。最後討論下來,規模大要實現辨識呼叫,可能得靠另一層級的 function 來做為類似 TCP/IP 架構層級上的管控。而這類結果應該是比較偏向設計模式、架構上的問題,因此我最後應該會去多瞭解這一塊的處理。

Junior 學習面向的抉擇

這部分如果是要看增進能力的話,Huli 建議了我可以往 JS 底層、資結、OS、網路等方面的底層知識,而非工具。 但如果是為了興趣當然什麼都可以。

而的確我也是抱持著熱情在學不同工具,不過確實對於底層知識會需要好好掌握,我應該會固定抽個時間出來追 CS50 課程。

最新的進度是什麼?

LearnWeb Taipei 社群

  1. 準備第六次小工作坊,內容有關於版本控制與 Git 操作。

F2E.tw 社群

  1. 準備舉辦工程軌 2/26 活動,尋找講師中。

研究中 1.Unit test framework Jest.js.

##前往台南好想計畫## 神Q, Maxwell 跟我正在想要講什麼內容,可以讓聽眾能夠吸收到想要聽的,又不過太過於簡單。 目前沒有意外的話

下次報告前要完成哪些事項?

Survey OOP/ Design Pattern 的議題,後半年導師計畫目標決定。

其他心得

shawnlin0201 avatar Jan 17 '20 07:01 shawnlin0201