假設您開始經營一個電子商務網站。
您的第一位工程師是畢卡索的藍色時期。您的程式碼庫很快就充滿了畢卡索藍色時期的 JavaScript 檔案。他毫不費力地為您繪製了一個 JavaScript 購物車。他以前做過無數次了。但這一次是他最好的作品。是他的傑作。而且非常藍。
您的第二位工程師是薩爾瓦多·達利。他第一天上班時帶著一台相機、一支畫筆、一撮傻氣的鬍子,並開始貢獻一些瘋狂的超現實主義 JavaScript 檔案。
這影響了畢卡索,當他們一起工作時,畢卡索開始改變風格,並開始在程式碼庫中添加立體主義的檔案。由於程式碼庫是全新的,畢卡索和達利可以隨時添加新檔案而不會造成損害,因為當只有兩位工程師添加新功能時,沒有人需要維護。沒有人會踩到對方的腳。每個人都有足夠的顏料。
然後您聘請了莫內,他進來後在他的所有作品上都留下了印象。
現在,您在 /app/assets/javascripts
中擁有一個藍色時期的購物車、印象派風格的圖片延遲載入、超現實主義風格的幻燈片,以及立體主義風格的事件追蹤。javascripts 資料夾變成了一個博物館。
讓我們跳到 4 年後。許多主要功能已經建立完成。畢卡索已離開公司去追求一個以格爾尼卡風格為基礎的公司。您的業務重點稍微轉移,您需要有人來擴展畢卡索藍色時期的購物車,以支援協作購物(很多人即時分享同一個購物車)。
幸運的是,您剛剛聘請了一位在 JavaScript 領域冉冉升起的新星,他喜歡在牆上噴漆,他的名字叫班克斯。所以您告訴班克斯:「嘿,你的第一個工作是修改我們的購物車,讓它支援協作。對於盛大的重新發佈來說,時機非常重要,幸運的是這應該很容易,因為我們已經有畢卡索的購物車,而且它已經是一件傑作。只要重複使用它就好。」
所以班克斯進去在您的畢卡索購物車上噴漆,並使其具有協作性,而您也成功地重新發佈了。
一個月後,收到關於從購物車中移除商品的錯誤報告。班克斯正忙於另一個專案,所以您請莫內去修復它。
莫內不知道如何使用噴漆罐。所以他嘗試修復的方式很草率。他破壞了建置。他切換回畫筆,只是把它塗掉,但由於需要時間去理解和採用不熟悉的風格,所以花的時間比應該花的時間要長。
當您有超過 80 位工程師在同一個程式碼庫上貢獻時,您很快就會發現平常做事的方式行不通。因此,我們試著把每個人都變成畢卡索。無論您從哪裡開始接觸程式碼庫,所有檔案都看起來很熟悉,而且看起來像是您畫的。
最重要的是,無論您偏好的 JavaScript 風格是什麼,當您與團隊合作或處理未來必須維護的大型程式碼庫時,都要保持一致。
對我們的團隊來說,最有效的風格是我們的畢卡索風格,因為這是一切的開始。
我們將我們的風格指南開源,以便其他團隊可以複製它,並將其變成莫內風格指南或班克斯風格指南。看著這些變化很有趣。
作為一個在副專案上工作並探索 JavaScript 各種精彩可能性的個人畫家/工程師,請拋開慣例,並忽略任何人說過的任何話。
這是世界欣賞下一個畢卡索的唯一途徑。