越底層的模塊,應(yīng)該越穩(wěn)定,越抽象,越具有高復(fù)用度。穩(wěn)定的最直觀表現(xiàn)就是暴漏的API很久都不用變化,隱藏變化因子,避免傳遞給依賴它的模塊。穩(wěn)定的API越抽象,復(fù)用度越高,如OC的代理Protocol和swift中的范型T。
減少依賴,避免模塊依賴不穩(wěn)定的模塊。模塊穩(wěn)定性會傳遞:B模塊依賴于A模塊,如果B模塊很穩(wěn)定,但是A模塊不穩(wěn)定,那么B模塊也會變的不穩(wěn)定。如果,A中代碼段x是高復(fù)用的代碼段,那么無妨將X單獨做成一個模塊X;如果,x是一個簡單的方法或函數(shù),不太適合做成一個模塊,那就將x代碼拷貝到B中,這樣可以保證模塊的穩(wěn)定性和自完備性。
提升模塊的復(fù)用度,自完備性有時候要優(yōu)于代碼復(fù)用。自完備性:盡可能的依賴少的模塊來達到代碼可復(fù)用。
每個模塊只做好一件事情,不要讓Common出現(xiàn)。模塊化結(jié)構(gòu)是讓工程結(jié)構(gòu)更清晰,每個模塊都只做一件事情,都有自己的一個命名,這樣這個模塊才能良性發(fā)展。Common非常不穩(wěn)定,大量依賴,全是耦合,整個模塊無法復(fù)用到其它APP。
模塊從上到下依賴,業(yè)務(wù)模塊之間也盡量不要耦合。