關于框架的一些雜談
關于view層的代碼規范:
- 1.提高view層的可讀性和可維護性
- 2.確保傳承
viewController的代碼應該差不多是下面這樣的,不在viewDidLoad里面初始化view然后再add,在viewDidLoad里面只添加addsubview,在viewWillAppear里面做一些布局的事情。而屬性的初始化,完全可以在getter里面實現。這樣在屬性以及控件很多的時候還能保持代碼整齊。view的初始化都放在getter放在里面去了。可以使用懶加載創建控件

getter和setter方法放在最后面
因為一個viewcontroller可能有很多的view,如果getter和setter放在前面,會影響代碼的課閱讀性。
所以我一般寫代碼的時候按照順序來分配代碼塊的位置,先是life cycle
,然后是Delegate
方法實現,然后是event response
,然后才是getters and setters
。這樣后來者閱讀代碼時就能省力很多。
delegate寫到一個地方去
所有的delegate寫到一起
event response專門開一個代碼區域用來處理事件
所有button、gestureRecognizer的響應事件都放在這個區域里面,不要到處亂放。
private methods 一些私有方法
一般都是些通用的方法,比如圖片壓縮,日期裝換等方法。這種小功能要么把它寫成一個category,要么把他做成一個模塊。
ViewController基本上是大部分業務的載體,本身代碼已經相當復雜,所以跟業務關聯不大的東西能不放在ViewController里面就不要放。另外一點,這個private method的功能這時候只是你用得到,但是將來說不定別的地方也會用到,一開始就獨立出來,有利于將來的代碼復用。
PS:其實在viewWillAppear這里改變UI元素不是很可靠,Autolayout發生在viewWillAppear之后,嚴格來說這里通常不做視圖位置的修改,而用來更新Form數據。改變位置可以放在viewWilllayoutSubview或者didLayoutSubview里,而且在viewDidLayoutSubview確定UI位置關系之后設置autoLayout比較穩妥。另外,viewWillAppear在每次頁面即將顯示都會調用,viewWillLayoutSubviews雖然在lifeCycle里調用順序在viewWillAppear之后,但是只有在頁面元素需要調整時才會調用,避免了Constraints的重復添加