一個不好的View層架構(gòu)
- 代碼混亂不規(guī)范
- 過多繼承導(dǎo)致的復(fù)雜依賴關(guān)系
- 模塊化程度不夠高,組件粒度不夠細(xì)
- 橫向依賴
- 架構(gòu)設(shè)計失去傳承
View代碼結(jié)構(gòu)的規(guī)定
代碼結(jié)構(gòu)
細(xì)節(jié)
1. 所有的屬性都使用getter和setter
在viewDidload里面只做addSubview的事情,然后在viewWillAppear里面做布局的事情(勘誤1)疏魏,最后在viewDidAppear里面做Notification的監(jiān)聽之類的事情迈套。至于屬性的初始化依鸥,則交給getter去做啰挪。
2.關(guān)于private methods呐矾,正常情況下ViewController里面不應(yīng)該寫
正常情況下ViewController里面一般是不會存在private methods的苔埋,這個private methods一般是用于日期換算、圖片裁剪啥的這種小功能蜒犯。這種小功能要么把它寫成一個category组橄,要么把他做成一個模塊荞膘,哪怕這個模塊只有一個函數(shù)也行。
MVC的拆分
1. 保留最重要的任務(wù)晨炕,拆分其它不重要的任務(wù)
有一件事情Controller肯定逃不掉要做:協(xié)調(diào)V和M衫画。也就是說,不管怎么拆瓮栗,協(xié)調(diào)工作是拆不掉的削罩。
只要不是Controller的核心邏輯,都可以考慮拆出去费奸,然后在架構(gòu)的時候作為一個獨立模塊去定義弥激,以及設(shè)計實現(xiàn)。
2.拆分后的模塊要盡可能提高可復(fù)用性愿阐,盡量做到DRY
根據(jù)第一心法拆開來的東西微服,很有可能還是強(qiáng)業(yè)務(wù)相關(guān)的,這種情況有的時候無法避免缨历。但我們拆也要拆得好看以蕴,拆出來的部分最好能夠歸成某一類對象,然后最好能夠抽象出一個通用邏輯出來辛孵,使他能夠復(fù)用丛肮。即使不能抽出通用邏輯,那也盡量抽象出一個protocol魄缚,來實現(xiàn)IOP宝与。這里有篇關(guān)于IOP的文章,大家看了就明白優(yōu)越性了冶匹。
/// TO-DO