[译文]过犹不及,别再在编程中高射炮打蚊子
原文鏈接:Anyway,stop recommending bazookas to kill flies in programming.
眾成翻譯地址:過(guò)猶不及,別再在編程中高射炮打蚊子
譯者注:翻譯這篇吐槽的文章,主要是為了自省~日常工作中確實(shí)會(huì)犯類似的錯(cuò)誤,不單是解答別人的時(shí)候,自己選擇對(duì)應(yīng)工具時(shí),也是趨向于熟悉的而不是合適的。避免濫用框架與盲目引入類庫(kù),與諸君共勉~
在編程的社區(qū)中,有些現(xiàn)象讓我感到十分困擾。(為了更好地闡述我的觀點(diǎn),)我將以 Vue 作為例子,盡管這同樣存在于其他編程領(lǐng)域之中。
首先,我們一起來(lái)看看問(wèn)題的根源。
在編寫(xiě)代碼時(shí),可能會(huì)遇到一些問(wèn)題,自然想(前往社區(qū))尋求幫助。此時(shí),你會(huì)迫切地想得到問(wèn)題的解決方案。然而,我對(duì)部分的問(wèn)題回答者保留意見(jiàn)。他們鼓吹提問(wèn)者切換工具、類庫(kù)或者整個(gè)框架,而不是根據(jù)實(shí)際情況提供一個(gè)恰到好處的解決方案。
部分回答者不會(huì)嘗試去了解你所遇問(wèn)題的背景。他們會(huì)建議你去用高射炮,盡管你只想殺的 bug 是只蚊子。
這實(shí)在是答非所問(wèn)!比如我在烤一個(gè)蛋糕時(shí),問(wèn)你:
我正在烤一個(gè)蛋糕,烤箱應(yīng)該設(shè)置多少度呢?
我期待的答案是告訴我應(yīng)該設(shè)置什么溫度,然而回答卻并非如此:
別烤蛋糕了,你做過(guò)沙拉嗎?
在社區(qū)中類似的場(chǎng)景比較常見(jiàn)。我不是想指責(zé)什么,但這并不是一個(gè)好現(xiàn)象。我剛接觸編程時(shí),也經(jīng)常犯這個(gè)錯(cuò)誤。但之后我意識(shí)到這并不對(duì)。
我并不是說(shuō)換一個(gè)工具就不能解決問(wèn)題,我的意思是:需要了解問(wèn)題的需求與背景。
與其建議對(duì)方用自己正在用的,不如在了解背景之后,提供一個(gè)恰到好處的解決方案。不要因?yàn)槭煜つ稠?xiàng)技術(shù),就不斷慫恿他人使用。
那么,Vue 的社區(qū)有什么問(wèn)題呢?
在 Vue 的社區(qū)中,無(wú)論是在 Facebook、論壇還是 Discord,只要涉及到處理 state 或者 SEO 的問(wèn)題,回答者經(jīng)常在詢問(wèn)提問(wèn)者項(xiàng)目的規(guī)模之前,就給出一樣的回答。
提問(wèn)者:我 Vue 的項(xiàng)目中碰到一點(diǎn) SEO 問(wèn)題 […] 我該怎么辦呢?
回答者:你嘗試過(guò) nuxt 嗎?
這并不是好的答案?如果提問(wèn)者的項(xiàng)目中并未使用 nuxt,回答者首先應(yīng)該根據(jù)提問(wèn)者的項(xiàng)目背景提供解決方案,而不是建議他直接去使用 nuxt。
不要誤會(huì),我喜歡 nuxt,nuxt的作者是法國(guó)人,而我一向法國(guó)兄弟的好哥們。我的觀點(diǎn)是:nuxt 并不是在 Vue 項(xiàng)目中解決 SEO 的唯一方案。
遷移到 nuxt 并不是一件簡(jiǎn)單的事情,nuxt 有自己的架構(gòu),如果和現(xiàn)在的架構(gòu)不兼容時(shí),遷移的成本并不低。
因此,告訴提問(wèn)者:“用 nuxt 就好”,實(shí)在不是好的解決方案。這和只建議人們使用 prerender-spa-plugin 或其他工具是一樣的。
提問(wèn)者:有兩個(gè)組件,我想讓他們共享狀態(tài),我該怎么做呢?
回答者:用 vuex 就好。
vuex 是兩個(gè)組件共享狀態(tài)的唯一方案嗎?顯然不是!
我也十分喜歡 vuex,我在項(xiàng)目中經(jīng)常使用它,但 vuex 在小的項(xiàng)目中,實(shí)在是大材小用。先了解背景與需求,再去回答對(duì)應(yīng)的問(wèn)題!
在 Vue 中,要共享狀態(tài),至少有三種不同的解決方案:共享一個(gè)響應(yīng)式的對(duì)象、Event Bus、Vuex。 https://vuejs.org/v2/guide/state-management.html#Simple-State-Management-from-Scratch
除非是提問(wèn)者要求的,不然在推薦一個(gè)新工具之前,應(yīng)該先去了解問(wèn)題的背景。
雖然我十分喜歡 Vue,但如果有人問(wèn)我:我在登錄頁(yè)中應(yīng)該使用什么呢?。我不會(huì)直接告訴他:使用Vue。我會(huì)先詢問(wèn)他,在頁(yè)面中要實(shí)現(xiàn)什么功能。
以上只是冰山一角。
這只是一點(diǎn)抱怨。我之前也經(jīng)常這么做,但我覺(jué)得這只是將自己喜歡的強(qiáng)加于對(duì)方,但并沒(méi)有解決提問(wèn)者的問(wèn)題。
Have a nice day~編程是一件美好的事情。
最后:不少人在 reddit 上談?wù)?XY 問(wèn)題。如果提問(wèn)者一開(kāi)始就使用了不合適的工具,那么推薦新的工具并沒(méi)有任何問(wèn)題。我指的高射炮愛(ài)好者,是那些在不了解背景的情況下就直接推薦的人。
總結(jié)
以上是生活随笔為你收集整理的[译文]过犹不及,别再在编程中高射炮打蚊子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jquery简单实现点击弹出层效果实例
- 下一篇: 100*100的 canvas 占多少内