[译文]过犹不及,别再在编程中高射炮打蚊子
原文鏈接:Anyway,stop recommending bazookas to kill flies in programming.
眾成翻譯地址:過猶不及,別再在編程中高射炮打蚊子
譯者注:翻譯這篇吐槽的文章,主要是為了自省~日常工作中確實會犯類似的錯誤,不單是解答別人的時候,自己選擇對應工具時,也是趨向于熟悉的而不是合適的。避免濫用框架與盲目引入類庫,與諸君共勉~
在編程的社區中,有些現象讓我感到十分困擾。(為了更好地闡述我的觀點,)我將以 Vue 作為例子,盡管這同樣存在于其他編程領域之中。
首先,我們一起來看看問題的根源。
在編寫代碼時,可能會遇到一些問題,自然想(前往社區)尋求幫助。此時,你會迫切地想得到問題的解決方案。然而,我對部分的問題回答者保留意見。他們鼓吹提問者切換工具、類庫或者整個框架,而不是根據實際情況提供一個恰到好處的解決方案。
部分回答者不會嘗試去了解你所遇問題的背景。他們會建議你去用高射炮,盡管你只想殺的 bug 是只蚊子。
這實在是答非所問!比如我在烤一個蛋糕時,問你:
我正在烤一個蛋糕,烤箱應該設置多少度呢?
我期待的答案是告訴我應該設置什么溫度,然而回答卻并非如此:
別烤蛋糕了,你做過沙拉嗎?
在社區中類似的場景比較常見。我不是想指責什么,但這并不是一個好現象。我剛接觸編程時,也經常犯這個錯誤。但之后我意識到這并不對。
我并不是說換一個工具就不能解決問題,我的意思是:需要了解問題的需求與背景。
與其建議對方用自己正在用的,不如在了解背景之后,提供一個恰到好處的解決方案。不要因為熟悉某項技術,就不斷慫恿他人使用。
那么,Vue 的社區有什么問題呢?
在 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。 https://vuejs.org/v2/guide/state-management.html#Simple-State-Management-from-Scratch
除非是提問者要求的,不然在推薦一個新工具之前,應該先去了解問題的背景。
雖然我十分喜歡 Vue,但如果有人問我:我在登錄頁中應該使用什么呢?。我不會直接告訴他:使用Vue。我會先詢問他,在頁面中要實現什么功能。
以上只是冰山一角。
這只是一點抱怨。我之前也經常這么做,但我覺得這只是將自己喜歡的強加于對方,但并沒有解決提問者的問題。
Have a nice day~編程是一件美好的事情。
最后:不少人在 reddit 上談論 XY 問題。如果提問者一開始就使用了不合適的工具,那么推薦新的工具并沒有任何問題。我指的高射炮愛好者,是那些在不了解背景的情況下就直接推薦的人。
總結
以上是生活随笔為你收集整理的[译文]过犹不及,别再在编程中高射炮打蚊子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery简单实现点击弹出层效果实例
- 下一篇: 三年前端,面试思考(二)