1. 程式人生 > >論一個好的APP介面的自我修養

論一個好的APP介面的自我修養

首先,一個好介面要長得好看。

在這個看臉的社會,顏值總是放在第一位的。介面程式碼也是如此,髒亂差的程式碼,其他人一眼都不想看,更別說維護和修改了。我們對人的要求一般是“乾淨整潔講衛生”,對程式碼類似,至少要做到“空格縮排有標準”吧。如果你不知道什麼是好的標準,那麼遵循PEP8啊。

下面是一個外援的程式碼: 在這裡插入圖片描述 圖1:外援程式碼整容前

這個程式碼我看起來是有點難受的:為什麼這個函式跟上一個函式之間空4行,下一個函式跟這個函式之間空一行?為什麼函式引數之間有的間隔兩個空格,有的卻沒有空格。另外兩個換了行的超長程式碼行,我看了之後生怕螢幕被捅破了。於是我用autopep8工具格式化了一下這個檔案,於是它變成了下面這個樣子:

在這裡插入圖片描述 圖2:外援程式碼整容後

突然感覺這段程式碼從一個邋遢大漢變成了精緻打扮的小鮮肉。

其次,一個好介面要功能完整、正確。

一個好男人除了帥,還要會掙錢。介面也是如此,如果只有好看,功能不完整、不正確,也是沒有什麼卵用的。

介面功能完整,意味著這個介面內部至少要包含四個部分:**引數驗證、許可權驗證、資料操作和返回結果。**其中每個部分可以少至只有一兩行程式碼,在一些特殊情況下還可能沒有程式碼,但是編寫者需要在心裡清晰地知道這個介面中的四個部分分別是哪幾行。

下面是鄙人寫的一個介面,從上至下清晰地標出了四個部分的範圍:

在這裡插入圖片描述 圖3:介面的四個基本部分

鄙人所寫介面,基本都可以清晰地畫出這四個框,其中:

引數驗證是驗證傳入的引數是否有效,如果不寫,往往會在引數錯誤時導致程式碼某處報錯,伺服器返回500。一個好介面是不允許返回500的。

許可權驗證是保證介面的呼叫時機和呼叫者與設計意圖相同。呼叫時機不對,會導致髒資料的產生。呼叫者不對,會帶來資料洩露的問題。無論哪一種,都可能最終導致業務的失敗,造成不可挽回的損失。

資料操作是實際的資料更改,這部分是功能實現的部分。

返回結果部分,關鍵在於返回的資料結構的合理性。有關資料結構的合理及可用,我們後面還會說到,這裡就不細說了。

根據我的觀察,這四個部分,大多數初學者都是隻關注資料操作的部分,其他三個部分實現的質量就非常呵呵了。可以說,另外三個部分的質量,最體現出高手和初學者的差別。

再次,一個好介面要讓使用者願意用。

雖然你長得又帥,又會賺錢,但是就是逢人不給好臉色,這樣依舊追不到心儀的妹子的。沒有妹子欣賞,你的帥、你的會賺錢,又有什麼用?同樣的,一個介面如果輸入引數和返回結構讓呼叫者噁心,沒人願意用這個介面,那你為這個介面付出的努力就算是付之東流了。

舉個現實的例子,我們一個外援要為下面這個頁面編寫介面:

在這裡插入圖片描述

這個頁面分為6個部分。為了拉取這個頁面的資料,該外援就寫了6個介面。客戶端對接時就不幹了,頁面一開啟就要發6個請求,程式碼冗餘不說,效能也不好。如果用微信小程式開發該功能,就直接無法完成功能了(微信小程式限制同時最多隻能發5個請求)。

還有一些常見的糟糕的介面設計:比如為了程式碼少寫一兩行,返回“user__id”這樣的欄位(其中用了雙下滑線,對接人員完全無法理解為什麼要這樣);不同介面相同引數卻使用不同名字的;返回錯誤時,錯誤資訊直接返回Traceback的,等等。

畢竟介面不是寫來觀賞的,是要給人呼叫的。適當地遷就呼叫者的需求和習慣,還是有必要的。我們這些寫後臺的,也算是半個服務業從業人員呢!(嗯,正當服務業,別想歪了~)

最後,一個好介面要基本安全。

做到了上面三點,你就又帥又多金,關鍵還會撩,什麼妹子追不到?追到了之後你就金屋藏嬌,過上了幸福的生活。作為家裡唯一的男人,家裡的安全都是你的職責。雖說天下沒有絕對的安全,但是晚上你家裡也不能開門睡覺,不是麼?基本的安全措施還是要有的,不能給盜賊開大門。一個好介面,能夠避免一些初級的安全問題,也是非常必要的。

另外,絕對不要使用上傳引數的內容拼接SQL字串,然後給資料庫執行。

總結 做到上面四點,是一個好介面基本的自我修養。這些都是無關能力,只要你盡心,就一定能夠也應該做到的事情。