前言
為什么要談易用性呢?其實是因為博主從事軟件行業(yè)長久以來巢音,另一最煩躁的遵倦,也是經常聽到身邊同事抱怨的一句話就是:我靠!天啦擼官撼!這個API好難用拔嗵伞!0列濉掠哥!
其實難用就是消費方對于提供方所提供資源(服務或能力)的最直觀的不滿用詞。這個時候秃诵,你要真想讓消費方說哪些地方難用续搀?估計他只會告訴你:哇,你這個參數命名很讓我費解啊菠净,完全不知道什么意思禁舷,而且還為文檔!老規(guī)矩毅往,在詳細闡述之前牵咙,我們嘗試定義這個特性(關注點)。
定義
易用性 - 消費方使用系統(tǒng)提供的資源(能力或服務)的便利程度攀唯。
消費方
消費方是評價的主體洁桌,因此系統(tǒng)提供資源的易用性不能自己說了算。這就和每當年底績效考核時侯嘀,你的自評和Leader評價存在差異是一樣的道理另凌,是個看問題的角度問題。
便利程度
便利程度首先需要強調不是無限度的讓每個消費方都感覺便利残拐,實際上也是做不到的途茫。且不說你實際上是否真正的“便利”,但就每個消費方的對于“便利”的評價標準不是整齊劃一的溪食,而且這還是超出你控制之外的因素囊卜。這就和生活中,你不可能讓人人對你滿意是一樣的道理。實際上是一個比較模糊的用語栅组,所以我們只需要讓絕大部分消費方感到便利即可雀瓢?
技巧
那么既然易用性的評價標準如此模糊和不統(tǒng)一,我們還怎么提升系統(tǒng)易用性呢玉掸?這還是得依靠我們再學習面向編程語言第一天聽到的那個特點:抽象刃麸。上一篇我們也提到了它,讀者應該可以感受到理解基礎概念的重要性了吧司浪!實際上通過思考泊业,我們是可以在這些模糊變化的標準中抽象出一些不變的技巧或思路來幫我們提升系統(tǒng)易用性的:
盡可能的把消費方當做“傻子”,不要把消費方想想的很聰明
為什么要這么思考呢啊易?因為你不能保證所有的消費方都很“聰明”吁伺,能理解你的設計意圖!所謂的“傻子”和聰明其實很多時候與智商無關租谈,僅僅是因為每個人的從業(yè)背景和經驗差異導致的篮奄。
簡潔清晰的文檔
“好記性不如爛筆頭”這句老話確實有道理,文檔不但可以便于提供方查看割去,也可以避免消費方頻繁詢問窟却。尤其現(xiàn)在這么多開源的產品,很多時候如果文檔不夠清晰明了呻逆,提問后等待社區(qū)反饋那就時間沒法保證了夸赫。說道這,不得不說下我們國內的開源產品一貫的不重視文檔的習慣了页慷,所以基本上不太敢用憔足,當然做的好的也有胁附,比如阿里巴巴開源的分布式RPC框架Dubbo酒繁,文檔很全,不過略顯雜亂控妻。博主之前看Kafka州袒、RabbitMQ等國外開源產品文檔,都驚嘆于對方簡潔清晰的文檔弓候。
方法和參數命名
提供出去的每一個API的方法簽名郎哭,最好都是能望文生義,消費方看到這個方法簽名就大概知道怎么用了菇存,這樣是最好的夸研。
高級接口
高級接口其實一點也不“高級”,就是我們在大話系統(tǒng)架構決策 - 靈活性中提到過的組合接口依鸥。提供高級接口不但會提升系統(tǒng)的易用性亥至,其在新系統(tǒng)推廣時,起著極其重要的作用。
實例一:某消息中間件SDK提供高級Push/Pull接口
SDK是提供給消費端用于和消息中間件交互的姐扮,其本身也是為了提升消息中間件的易用性絮供,降低消費端的開發(fā)難度。那么在設計SDK的暴露給消費端的API時茶敏,正常情況下只要包括簡單的Push/Pull接口即可壤靶。但是很多時候,其實這樣的封裝還是不夠的惊搏,比如一般情況下贮乳,消費方都是要寫一個線程池來定時拉取消息消費的。那么這個時候恬惯,其實提供了一個封裝了線程池拉取的接口塘揣,就會大大提升易用性,提升消費方的接入意愿宿崭。