API編碼規範迫在眉睫框架
不是隨便一個功能就要有個接口,也不是隨便一個需求就要加個接口。性能
每新建一個接口,要有充分的理由和考慮,即這個接口的存在是十分有意義和價值的。無心義的接口不只增長了維護的難度,更重要是對於程序的可控性的大大下降,接口也會十分臃腫。學習
設計接口時,分析的角度要統一。不然會形成接口結構的混亂。例如:不要一會以角色的角度設計,一下子就要以功能的角度設計。測試
推薦:以」屬性對象 + 行爲」的視角定義API編碼
每一個API接口應該只專一一件事,並作好。產品概念簡單、關係清楚。功能模棱兩可,諸多特殊邏輯的API確定不是個優雅的API,且會形成功能相似重複的API。spa
注:若是API它很難命名,那麼這或許是個很差的徵兆,好的名稱能夠驅動開發、而且只需拆分與合併模塊便可。翻譯
功能大而全的API在靈活性、簡單性方面確定捉襟見肘。定義API的粒度以前,建議先將業務分領域、劃邊界,以此來提取業務對象,而後再根據業務對象用例來設計單一功能的API。設計
好比:查詢會員,可能除了查詢會員表外還要獲取該會員的其餘必要信息,但不要在查詢會員的同時還有修改權限等相似的其餘業務功能,應該分紅兩個接口執行。日誌
接口設計簡單、清晰。API執行的功能能夠很豐富、很強大,但API聲明和用法必定要儘可能的簡單,不能將功能的豐富經過複雜的用法來實現,這會致使API功能不單一,演進不可控。對象
最終的評審要看API的簡單易用程度。
編寫的代碼必定要易於讀、易於理解,這樣別人纔會欣賞,也可以給你提出合理化的建議。相反,如果繁雜難解的程序,其餘人老是會避而遠之的。
API的入參、出參所述的對象、屬性,必定是按業務特性進行抽象後的實體。誤將底層數據模型概念如實的反應到API上。抽象API、抽象對象實體更宏觀,具備更好的適用性、兼容性、擴展性。
對擴展開放,對修改關閉。保證API的向後兼容。
擴展參數應當是便利的,保證後續相似的需求,能夠在已有的API上經過兼容擴展的方式實現。
代碼應該儘量減小讓讀者驚喜。業務API只需根據需求來設計便可,不須要刻意去設計一下複雜無用、華而不實的API,以避免弄巧成拙。
API應該減小對其餘業務代碼的依賴關係。低耦合每每是完美結構系統和優秀設計的標誌。
耦合的種類:
正交性是指改變某個特性而不會影響到其餘的特性。
API之間的功能應該成正交性,無功能重合。API之間應該是互相補充的關係。
對於API調用者而言,API應該是可被測試且易於被測試的。測試API不須要依賴額外的環境、容器、配置、公共服務等。
對可測試友好的API也是可被有效集成測試的前提。
API要具有統一的命名、統一的入/出參規範、統一的異常規範、統一的錯誤碼規範、統一的版本規範等。
統一規範的API優勢: