模組串接,跨專案也不要複製貼上
這一個月的主要任務
是將手上的專案
接上登入模組
就像之前所提到的
其實公司有很多App
架構都大同小異
像是登入,自選股,聊天室等等
以前的做法多是複製貼上
從最近開始才進行模組化的架構
登入模組是第一個模組
會使用登入模組的原因
是因為公司最近新增手機註冊的功能
而所有的App都必須要接上
所以主管指派一組人去做模組
其他組別只要改一下外觀設定
就可以套用
除了登入
包括註冊忘記密碼葉面等等
還有伺服器維修,強制更版等處理
都包在模組裡面了
各專案要實作的
就是把ViewController生出來後
再push到畫面上就可以了
最近上班的需求比較一般
沒有什麼比較特別的
除了一個–複合列舉
所謂的複合列舉
這邊有點難以解釋
有興趣的可以上網查一下
簡單來說用複合列舉的好處
就是可以彈性的擴充API
假設今天個人資料的api有八個欄位
我就可以利用複合列舉
取得八個欄位中的任意欄位
而且將來個人資料新增不同欄位時
也不須要再開一隻新的API
而是擴充原本的複合列舉就可以了
這個是很久很久以前聽過
但是終於用到的一個技巧
所以實際在使用上
會是把1+2+4+8+32這種方式
來取得複合列舉的值
不過後來又經過其他同事提醒
其實可以用位元運算子當中的 | (OR)
來做簡單的防呆
避免加到重覆的值
導致最後的複合列舉錯誤
也是受到這個啟發
原本code裡面
有很多over loaded的方法
後來就改成使用optional參數的方法
而不是一個參數就開一種方法
讓程式碼更簡潔
又最近下班感覺太清閒
所以又跟主管要了加班專案
不過這次要挑戰的不是單一專案
而是跨專案的購買模組
做模組就和做專案差異滿多的
考慮的就不只是好不好維護
而是別人要接的時候好不好接
能否滿足每一個專案的需求
所以在做之前
先把每一個專案都拉下來看一下
順便把之前build過的archieve檔案清一清
研究一下每一個專案的需求
另外一個做模組比較特別的點
就是還要寫詳細的文件
包括簡單的UML圖
告訴別人有哪些方法屬性可供使用
還有不可少的使用說明
在接下模組專案之前
主管便叫我先去了解登入模組的架構
看完整份Code之後
真的覺得自己的功力
和同事有差
有一點難形容
簡單來說就是程式碼看起來比較舒服
雖然說要達到一樣的功能
可能我也辦得到
但是就無法寫得那麼簡潔易懂
不過有鑑於之前接登入模組時
設定不完的按鈕顏色
未啟用,啟用,點擊狀態
還有邊框底色等等
用程式碼設定
真的是頗吃力
於是想到之前同事分享的IBDesignable
讓xib的屬性
可以即時在畫面上設定
並且預覽
原本以為會很簡單
結果實作上卻卡了好一陣子
不是說swift檔案找不到
不然就是程式直接crash
最後發現是由於我們的Backend專案
已經升級成為pod參考的方式
所以在新增完檔案後
最好就馬上下git commit
並且直接重新pod install
看到畫面即時render出來的時候
有一點感動也有一點傻眼
感動的是終於成功
傻眼的是一模一樣的步驟
不知道之前是在忙什麼…
最後分享一個不太算Bug的Bug
由於這一次的登入模組有串手機登入
在手機國碼的部分
使用Emoji套件
也就是吃手機裡面的國旗圖片
後來PM在測試時
台灣國旗圖片不見
後來仔細一查
還真的有這一回事
https://blog.emojipedia.org/one-emoji-doesnt-show-on-ios-in-china/
無奈之餘還帶一點淡淡哀傷