一個(gè)不好的View層架構(gòu)
- 代碼混亂不規(guī)范
- 過多繼承導(dǎo)致的復(fù)雜依賴關(guān)系
- 模塊化程度不夠高,組件粒度不夠細(xì)
- 橫向依賴
- 架構(gòu)設(shè)計(jì)失去傳承
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里面一般是不會(huì)存在private methods的,這個(gè)private methods一般是用于日期換算、圖片裁剪啥的這種小功能。這種小功能要么把它寫成一個(gè)category,要么把他做成一個(gè)模塊,哪怕這個(gè)模塊只有一個(gè)函數(shù)也行。
MVC的拆分
1. 保留最重要的任務(wù),拆分其它不重要的任務(wù)
有一件事情Controller肯定逃不掉要做:協(xié)調(diào)V和M。也就是說,不管怎么拆,協(xié)調(diào)工作是拆不掉的。
只要不是Controller的核心邏輯,都可以考慮拆出去,然后在架構(gòu)的時(shí)候作為一個(gè)獨(dú)立模塊去定義,以及設(shè)計(jì)實(shí)現(xiàn)。
2.拆分后的模塊要盡可能提高可復(fù)用性,盡量做到DRY
根據(jù)第一心法拆開來的東西,很有可能還是強(qiáng)業(yè)務(wù)相關(guān)的,這種情況有的時(shí)候無法避免。但我們拆也要拆得好看,拆出來的部分最好能夠歸成某一類對象,然后最好能夠抽象出一個(gè)通用邏輯出來,使他能夠復(fù)用。即使不能抽出通用邏輯,那也盡量抽象出一個(gè)protocol,來實(shí)現(xiàn)IOP。這里有篇關(guān)于IOP的文章,大家看了就明白優(yōu)越性了。
/// TO-DO