您好,登錄后才能下訂單哦!
今天給大家介紹一下User這個詞為什么不要在代碼中使用。文章的內容小編覺得不錯,現在給大家分享一下,覺得有需要的朋友可以了解一下,希望對大家有所幫助,下面跟著小編的思路一起來閱讀吧。
當你意識到你在項目開始時做的輕量、簡單的設想竟然完全錯了時,你已經用了六個月的時間投入到這個項目上。
現在你需要解決這些問題,才能讓這個系統繼續運行下去,你發現你用在這個項目上的精力遠遠超出了你的預期,如果一開始就用正確的方式來做,就不會發生這樣的事。
今天,我要告訴你的是一個經常犯的錯誤,一個會給你帶來無窮無盡的問題的單詞,那就是“users”
這個單詞有兩個最基本的錯誤:
最開始,沒有任何一個軟件系統真的有使用者存在。乍一看“user”是一個好的描述,但是你稍微一想就會意識到你的業務邏輯實際上比這要復雜的多。
我會使用三個例子,從一個極端的情況出發。機票預訂系統沒有“users”
我曾經給機票預訂系統寫過訪問控制邏輯,下面只是一小部分需求:
不再一一列舉。一些與人類相關的基本概念是“旅客”,“代理”(網站也可是看作代理)和“購買者”。“user”這個概念根本沒用,并且在許多請求中我根本不會使用這個單詞,舉個例子,我們的請求必須包括旅客和代理人的證件,而不是使用者的證件。
我們看一個不太一樣的例子。Unix (這些天被稱為POSIX)有用戶,他們可以登錄并執行代碼。這樣看起來很不錯吧?我們深入看一下。
如果我們把所有都當作“users”的話,我們將會有:
上面四個是幾乎不同的概念,但是在POSIX上他們都是 “users”. 一會兒我們就會看到,把這些概念都稱為‘user’會導致很多安全問題。
在操作上,因為POSIX的用戶模型邊界存在,我們甚至不能找到一種方式說“只能讓 Alice 和 Bob 通過這個賬號登錄”。
Jeremy Green 最近就用戶模型在SaaS中的應用在推特上發文,它第一次提醒了我寫下這篇文章,他的基本觀點是
SaaS 服務幾乎總是:
如果你一開始就把這些人作為一個用戶,你將會陷入一個痛苦的世界。你無法建立團隊模型,你無法組建同時為多人支付的模型,然后你就會開始改造你的系統。現在你在SaaS案例中學到了一課,我們來看一看你的生活。
但是這只是眾多例子中的一個:“users”的概念太模糊了。如果你開始懷疑“user”這個詞,最終你可能發現最終你其實只需要兩個概念:團隊(用來組織關系和支付)和成員(實際使用服務的人)。
“user” 這個單詞不僅是業務邏輯的問題,它也導致了一系列安全問題。
“user” 這個單詞如此的模糊以至于從根本上將兩個概念合并了:
為了說明這個問題,假設你正在訪問一個居心不良的網站,在它服務器上的圖片導致了你的瀏覽器內存溢出。遠程網站控制著你的瀏覽器,并且開始將你的文件上傳到他的服務上。
因為瀏覽器是以系統用戶的身份運行的,它被認為與人類身份的你相同,實際上你們是不同的。你作為user,不想上傳文件。但是系統的賬號也是‘user’,能夠上傳文件,如果瀏覽器運行在你的賬號之下,他所有的行為會被當作是你的意圖,也就是說是你讓它這么做的,實際上不是。
這就是被稱為Confused Deputy的問題。如果你使用“用戶”這個詞來描述兩個根本不同的東西,那么這個問題就更有可能成為你設計的一部分。
花更少的功夫處理相同的問題是成為高產程序員的關鍵。使用模糊不清的概念比如“用戶”來組織你的軟件,將會話費大量時間和精力來解決未來發生的問題。一上來就開始編碼看起來是高產的,事實恰好相反。
下次你開始一個新的軟件項目時,花幾個小時預先確定你的術語和概念:你仍然不會完全正確,但你會做得更好。未來的你將感謝你所做的所有預防浪費的工作。
以上就是User這個詞為什么不要在代碼中使用的全部內容了,更多與User這個詞為什么不要在代碼中使用相關的內容可以搜索億速云之前的文章或者瀏覽下面的文章進行學習哈!相信小編會給大家增添更多知識,希望大家能夠支持一下億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。