1. 程式人生 > >[譯文]過猶不及,別再在程式設計中高射炮打蚊子

[譯文]過猶不及,別再在程式設計中高射炮打蚊子

原文連結: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。 vuejs.org/v2/guide/st…

除非是提問者要求的,不然在推薦一個新工具之前,應該先去了解問題的背景。

雖然我十分喜歡 Vue,但如果有人問我:我在登入頁中應該使用什麼呢?。我不會直接告訴他:使用Vue。我會先詢問他,在頁面中要實現什麼功能。

以上只是冰山一角

這只是一點抱怨。我之前也經常這麼做,但我覺得這只是將自己喜歡的強加於對方,但並沒有解決提問者的問題

Have a nice day~程式設計是一件美好的事情。

最後:不少人在 reddit 上談論 XY 問題。如果提問者一開始就使用了不合適的工具,那麼推薦新的工具並沒有任何問題。我指的高射炮愛好者,是那些在不瞭解背景的情況下就直接推薦的人。