這里的接口指的是團隊開發(fā)中被廓,模塊間的函數(shù)接口坏晦,或者跨進程的協(xié)議接口。
俗話說有人的地方就有江湖嫁乘,在軟件開發(fā)當(dāng)中昆婿,有人的地方就有接口,有接口就要考慮兼容性問題蜓斧。平心而論仓蛆,一般新軟件,前面的版本挎春,考慮太多接口兼容性問題不現(xiàn)實看疙,因為前面的版本改動特別大,兩個版本之間面目全非的情況比比皆是直奋。但是到了一定階段能庆,接口就急需要穩(wěn)定,因為不兼容的接口帶來的成本太高了脚线。
最簡單的接口兼容性方案就是永遠只新增接口相味,然后老老實實的等著舊接口自然消亡,當(dāng)然這個過程非常痛苦殉挽,但是習(xí)慣了也沒有什么丰涉。這里還是有幾條建議,可以緩解這個痛苦的斯碌。
既然選擇了新增接口來支持兼容性一死,就不要再去嘗試其他方案,也就是將這條路走到黑傻唾,避免多種接口兼容性策略同時生效投慈,反而讓使用者糊涂承耿。
項目團隊中形成共識,每當(dāng)新接口和老接口有替換關(guān)系時伪煤,就盡量在主分支主動升級到新接口加袋,然后讓新接口自然在未來某個版本中自然生效。
新接口和老接口在命名上應(yīng)該有一個自然的替換關(guān)系抱既,比如說老接口叫 GetBigBook职烧,新接口叫做GetBigBook2,雖然很俗氣,一旦團隊內(nèi)都采用類似風(fēng)格防泵,也可以接受蚀之。將來排查那些GetBigBook沒有替換完畢的時候也很方便。
如果新增了參數(shù)捷泞,盡量將新增的部分放在尾部或者頭部足删,別頭部放一個,尾部放一個锁右,減少使用者更換接口時的不適感失受。好的新接口設(shè)計,甚至可以實現(xiàn)批量替換咏瑟。這里不詳細描述了拂到。跨進程的接口協(xié)議响蕴,可以在使用側(cè)先用函數(shù)封裝一下組裝報文的部分谆焊,后面報文格式變了惠桃,最終也就變成了函數(shù)的替換浦夷。