各位觀眾大家好!!!我們是Kotlin樂團,我是主唱小笠宏樹!今夜讓我們一起狂歡吧!!!
來首可愛的
雀斑樂團Freckles 壞習慣 Bad Habit
今天要來討論的是流水線的工作方式
要討論的對象是functional programming
首先要先做個慚愧聲明,其實作者本人在functional programming的鑽研不夠深入,因此如果出現了任何不正確的理解也歡迎各位留言討論。
同樣的我們也從優缺點來理解流水線
缺點
- 易讀性
- 由於很多時候每個funciton會做的事情很少,所以能從function得到的資訊也很少,因此剛接觸的別人的程式碼,必須要往下鑽好一陣子才能比較容易理解,但對於OOP來說可能看個Class Name就大概能猜到這個是幹嘛用的。
- 對於流水線來說也是很容易發生的,假如只從流水線中的某一個點開始看會非常難以理解為什麼當前要做這個步驟,以及當前步驟對於之後和之前的影響是什麼。
- 不夠彈性
- 當已有一條完整的並且將function拆的很細的function chain後,當想要在中間插入一個變化,那可能會導致很麻煩的步驟,首先要先從這條chain中找到一個最適合開始插入這個變化的時機點,再來可能要逐個修改chain的內容一直到chain的結尾,但好處是一次改完就沒事了。
- 而對於流水線來說也是一樣的,當流水線上的產品需要做一點更動,首先要確認目前的機器是否足夠做這樣的客製化,再來是必須詳細的重新設計原本的流程,才能避免原本共用的機器的流水線會發生問題。
優點
- 好作測試
- 由於會盡量讓一個function做的事情非常簡單,再加上其盡量使變數Immutable的方式,所以通常來說只要每個function以及其return是沒有問題的,那整個程式碼是不應該有bug的,另外來說由於每個function可以被切割開來看,因此Unit Test是非常好寫的。
- 在流水線上,只要能確保流水線上的每個小流程是沒問題的,那就能確保最後的結果會是想要的,並且小流程的檢視也非常好做統計和改善。
- 錯誤率低
- 由於每個function做的事情簡單,因此不太容易犯錯,並且變數Immutable的性質也會讓每個input和output是可以固定並且可預測的,這些都能讓程式碼的出錯率降低。
- 每個流水線的小流程都是簡單的,因此只要機械式的操作,可以讓員工反覆做同樣的事情從而避免失誤,而且也可以檢視每一個小流程,並對其加入防錯的機制,或是提前找出良率差的流程並改善。
好哩!以上就是有關流水線與functional programming的互相印證
接下來來個比較長篇的案例分析好了會為期三天