原文連接:Anyway,stop recommending bazookas to kill flies in programming.html
衆成翻譯地址:過猶不及,別再在編程中高射炮打蚊子vue
譯者注:翻譯這篇吐槽的文章,主要是爲了自省~平常工做中確實會犯相似的錯誤,不單是解答別人的時候,本身選擇對應工具時,也是趨向於熟悉的而不是合適的。避免濫用框架與盲目引入類庫,與諸君共勉~vuex
在編程的社區中,有些現象讓我感到十分困擾。(爲了更好地闡述個人觀點,)我將以 Vue 做爲例子,儘管這一樣存在於其餘編程領域之中。編程
首先,咱們一塊兒來看看問題的根源。架構
在編寫代碼時,可能會遇到一些問題,天然想(前往社區)尋求幫助。此時,你會迫切地想獲得問題的解決方案。然而,我對部分的問題回答者保留意見。他們鼓吹提問者切換工具、類庫或者整個框架,而不是根據實際狀況提供一個恰到好處的解決方案。框架
部分回答者不會嘗試去了解你所遇問題的背景。他們會建議你去用高射炮,儘管你只想殺的 bug 是隻蚊子。ide
這實在是答非所問!好比我在烤一個蛋糕時,問你:工具
我正在烤一個蛋糕,烤箱應該設置多少度呢?ui
我期待的答案是告訴我應該設置什麼溫度,然而回答卻並不是如此:spa
別烤蛋糕了,你作過沙拉嗎?
在社區中相似的場景比較常見。我不是想指責什麼,但這並非一個好現象。我剛接觸編程時,也常常犯這個錯誤。但以後我意識到這並不對。
我並非說換一個工具就不能解決問題,個人意思是:須要瞭解問題的需求與背景。
與其建議對方用本身正在用的,不如在瞭解背景以後,提供一個恰到好處的解決方案。不要由於熟悉某項技術,就不斷慫恿他人使用。
在 Vue 的社區中,不管是在 Facebook、論壇仍是 Discord,只要涉及處處理 state 或者 SEO 的問題,回答者常常在詢問提問者項目的規模以前,就給出同樣的回答。
提問者:我 Vue 的項目中碰到一點 SEO 問題 […] 我該怎麼辦呢?
回答者:你嘗試過 nuxt 嗎?
這並非好的答案?若是提問者的項目中並未使用 nuxt,回答者首先應該根據提問者的項目背景提供解決方案,而不是建議他直接去使用 nuxt。
不要誤會,我喜歡 nuxt,nuxt的做者是法國人,而我一貫法國兄弟的好哥們。個人觀點是:nuxt 並非在 Vue 項目中解決 SEO 的惟一方案。
遷移到 nuxt 並非一件簡單的事情,nuxt 有本身的架構,若是和如今的架構不兼容時,遷移的成本並不低。
所以,告訴提問者:「用 nuxt 就好」,實在不是好的解決方案。這和只建議人們使用 prerender-spa-plugin 或其餘工具是同樣的。
提問者:有兩個組件,我想讓他們共享狀態,我該怎麼作呢?
回答者:用 vuex 就好。
vuex 是兩個組件共享狀態的惟一方案嗎?顯然不是!
我也十分喜歡 vuex,我在項目中常用它,但 vuex 在小的項目中,實在是大材小用。先了解背景與需求,再去回答對應的問題!
在 Vue 中,要共享狀態,至少有三種不一樣的解決方案:共享一個響應式的對象、Event Bus、Vuex。 vuejs.org/v2/guide/st…
除非是提問者要求的,否則在推薦一個新工具以前,應該先去了解問題的背景。
雖然我十分喜歡 Vue,但若是有人問我:我在登陸頁中應該使用什麼呢?。我不會直接告訴他:使用Vue。我會先詢問他,在頁面中要實現什麼功能。
以上只是冰山一角。
這只是一點抱怨。我以前也常常這麼作,但我以爲這只是將本身喜歡的強加於對方,但並無解決提問者的問題。
Have a nice day~編程是一件美好的事情。
最後:很多人在 reddit 上談論 XY 問題。若是提問者一開始就使用了不合適的工具,那麼推薦新的工具並無任何問題。我指的高射炮愛好者,是那些在不瞭解背景的狀況下就直接推薦的人。