警告:本文乃個人主觀情緒極重的文章,不喜勿入。但是本文並非diss任何人任何事,僅僅是希望提問者和回答者能夠更加有效地溝通。提問者肯定是無奈之下才會尋求幫助,但是回答者都有各自的事情,並不可能隨叫隨到給提問者回復,估計也只有Siri才能隨叫隨到,及時回覆。
互相體諒,互相尊重也許是共同進步的關鍵所在!
最近筆者一直在想一個問題,就是該如何問問題?
說句不要臉的大實話,筆者挺自私的,並不喜歡回答問題,原因有三:
- 有些問題明明可以通過各種搜尋軟體得到問題,偏要找“人肉搜尋引擎”。
- 秉著負責任的態度,對待答案總要自行檢查一遍,雖然過程中也可有收穫,奈何費時費力。
- 本身工作挺忙,待學習的佇列已經排到美國了,期間看到問題,真心覺得煩躁。
可以說上述三條理由都是筆者在為自己這種自私的行為開脫,但是要筆者不情不願的回答一些“不是問題”的問題,憋屈啊。將心比心,因為知曉己所不欲勿施於人,所以筆者很少提問。即使提問也要斟酌再三,確認無誤,確保不是“惱人”的問題。那麼,究竟什麼樣的問題是“惱人”的,甚至“不是問題”的問題,什麼問題是“值得回答”的問題呢?
問題黑名單
首先來談談那些“惱人的”問題(若有雷同,純屬巧合):
第一類:百度搜尋
相信大家都遇到過,客氣的人會說這個不復雜,你可以百度一下。
,但是脾氣暴躁的人會說,這麼傻X的問題,你不會百度啊
。這類語氣著實傷人,為了防止個人的玻璃心受傷,就要避免一些“百度”的問題。
百度問題分以下幾類:
- 最經典的莫過於api的問題,有關api的用法,百度吧。但是有個隱藏的api問題,就比如筆者想要實現某個功能,但是根本不知道用啥api,這個時候有好心人給了方向之後,就自行百度吧。
- 0基礎的小白的問題,這一類問題,很難回答,相信很多好心人說著說著恨不得自己拿過來幫人家寫了算了。這個時候筆者推薦提問者先從基礎開始學吧,網上挺多零基礎的教程的。雖說要對自己有所要求,但總不能還沒學會爬就要開始跑了吧。
- 常見問題,比如CSS中經典的居中問題,佈局問題,自適應問題,相信網上應有盡有。相信大家已經回答地不想再回答了,並不是說鄙視這類問題,而且乏了,真的乏了,估計已經回答了幾十遍同類問題了。
第二類:不知所云
每次遇到別人問,咦,這個怎麼沒出來呀?
,為什麼報錯了呀?
。這個時候筆者就想裝死,畢竟本人不住在瀏覽器,報錯和不出現的問題,就算當面除錯也不一定能夠立馬出答案。而且考慮到面子問題,萬一出不來會不會顯得筆者很渣?
不知所云分為:
- 截圖或者一句話,沒有詳細說明,沒有操作說明,沒有想要的結果說明。比如為什麼
ajax獲取不到資料
,這一類好心人會一步步引匯出真正的問題,像筆者這樣的就直接無視了,甚至會diss,“誰XXX知道你想問什麼”(乖寶寶們不要學習)。 - 直接丟出一個報錯,報錯的原因千千萬種,不瞭解對方專案的該如何,這個時候又要回到第一類問題了,完全可以百度以下錯誤的成因,然後根據自己的專案分析。此類問題非經驗豐富的,基本get不到提問的點。
第三類:道德綁架
線上等,急
此類問題一律不答。至於原因,感覺筆者不幫助找到正確答案,彷彿就是個大壞蛋,甚至自我懷疑。
第四類:要你何用
這一類算是筆者的親身經歷吧,可能脾氣太好了。在大學的時候,一個小學弟來問筆者資料庫的問題。且不說筆者當時並不熟悉,現在筆者也是個渣渣。小學弟問了很多問題,筆者都沒答上來,最後他來了一句要你何用
。真棒,學姐沒用!題外話,說者無心聽者有心,這對筆者當時的幼小心靈造成了極大的傷害,還好筆者沒心沒肺,沒多久就恢復了。
對於問問題,且不說虛心討教,還要充大佬的,不尊重人的,門在那邊,出門左拐不送,不伺候。
問問題是門藝術
這裡筆者想要借用StackOverflow的一些規範,來總結下如何問出討喜
的問題。
先給出一個錯誤示範:
大佬,我碰到了XXX問題,不知所措。(謝謝,大佬比你更不知所措~)
複製程式碼
搜尋搜尋再搜尋!
問問題之前,請再三地搜尋,即使找不到有用的資訊,也可以對比你的問題和其他人的不同,同時總結出一些結果,即使現在無用,以後也許用得上,這也是一種學習過程。
詳細說明
詳細說明你的問題,一上來就放出一堆程式碼,反正筆者看到幾十行的程式碼都是直接遛的。用簡短的語言,整理邏輯關係,詳細說明。
必要時給出實列程式碼
現在有很多線上的code play的網站,比如codepen(my favourite),jsfiddle,實在不行貼上github地址。這樣大幅度減少了對方瞭解問題的時間。
舉個例子,筆者的模版
提出問題:
大佬,我碰到了XXX問題。我希望的結果XXX,然而預期的結果XXX。
處理過程:
我搜尋了很多資料(表明你搜尋過了),網上有一些和我的問題很像,但是有些區別,我是這樣地,他是那樣的。(給對方畫一個範圍,告訴對方你的問題在哪一個區域)。
我試過了1,2,3,4……種方法(最好講明每一種方法的利弊,節約對方的勞動力)。
客套一下:希望大佬能給我指一條明路。(因人而異,看個人個性,筆者喜歡謙虛一點,畢竟是請求對方幫忙。)
複製程式碼
相信筆者,經過這一番的思考之後,自己就能找出答案了。
解惑者
那麼遇到一個問題,該如何回答,畢竟大家都有做新人的時候,總是要受點挫折才能成長為大佬。對於萌新還是要有“慈悲為懷”的。
此處再次借用StackOverflow地規範,有關於態度地,也許對於解惑者更重要的是一種態度。
錯誤示範:
這個問題百度下就可以了。
我都不知道你要問什麼。
(雖然有時候有些問題確實一言難盡,但是此類的回答語氣還是不太好的。)
複製程式碼
和善地提出——你可以去百度了
第一種,優雅地告訴對方,請百度:
這個問題其實難點在於XXX,是很常見,推薦搜尋一下,應該就會有許多解答。
第二種,手頭上有合適的大佬文章,丟擲連結:
這個連結裡面的內容,感覺和你的問題很像,可以參考下。
友好地告訴對方我不知道你在說啥
我無法get到你的問題點。給出對應的推理,是XXX這個原因嗎?還是說你想要XXX?
避免帶有挑釁的語氣
比如不屑,侮辱,甚至人身攻擊,這裡就不舉例子了,不合適。
優雅地回答!讓萌新不再瑟瑟發抖。
筆者解決問題的過程
- 首先是StackOverflow搜尋,這裡能找到答案的機率最大,而且用英文搜尋,更加精準,不是筆者推崇英文,而是中文的表述過於複雜,很多名詞有多個解釋。
- 找不到問題再去google,同樣關鍵字刪選。
- 整理解決方案,一個個除錯,整理每次失敗的過程。
- 無法解決可以換一個思路再去解決,此路不通,那麼就繞路而行。
- 最後的最後,整理解決過程,找大佬解決。
筆者曾經問過一個關於video在微信上自動播放的問題,雖然最後並未找到更簡單的方式。大家可以參考一下。
一個問題的產生過程
問題提出: 需要在微信上面,自動播放視訊。但是手機為了使用者體驗著想,都不允許自動播放,所以該如何繞路而行了。我並不想使用常規的摸一摸播放,順便提一下在安卓上面一定要click事件才能點開視訊……
問題的痛點: 搜尋了多方面的資訊發現一個噩耗,無論什麼樣的播放都需要使用者的操作支援。而且ios和android的支援不同。首先蘋果為了代替gif,雖然支援靜音狀態下的播放,但是我無法保證音訊和視訊的一個同步執行,總是有個微微的延遲或者提前,而且音訊也需要摸一摸。安卓?不提了……
可行的方案: 終於找到了解決方案,然而卻需要利用ffmpeg轉流,然後通過jsmpeg將轉化之後的流通過canvas等技術播放出來。這能同時解決安卓和蘋果的自動播放問題。不過學習成本過高,需要掌握ffmpeg的基本操作以及jsmpeg的用法。
請求: 不知道大家有什麼更加簡易的解決方法?
當筆者寫整理完問題的時候,彷彿已經知道了最終答案,只是抱著試一試的心態去問一下也許有大神就知道呢?同時這也算是一個小小的經驗分享吧,該踩的坑都踩了。相信大家有一個自我的思考過程答案迎刃而解。
(感覺只有加粗大家才能看到筆者的請求,到現在都沒有收到更加簡單的方法,要是有大神知道請留下您寶貴的建議!)
筆者回答問題的過程
讓筆者找一個在stackoverflow回答的例子
提問的寶寶很客氣,原文大概是這樣的:
有關於通過js執行css的問題。
謝謝大家花時間看我的問題,任何幫助我都會感謝大家。
我有以下一串程式碼:
.middle_n.expand.remove
{
animation: contractm 0.3s forwards;
transform-origin: 0 75px;
height:200%;
animation-delay: 1.3s;
}
@keyframes contractm
{
0%{}
100%{transform:translate(147.8%,100%) rotate(-16.75deg);}
}
複製程式碼
我希望能夠傳遞一個動態的值,讓這個轉起來。我該如何做。通過js可以實現多個動畫嗎?
再次感謝。
雖然是個新手,但是提問點很清晰。剛好筆者擅長該領域,於是就給出了回答。
筆者的回答:
在我看來,如果你希望控制你的動畫,我的簡易是你可以使用js控制你的元素的style。因為animation是完成一系列的動畫的。
並且有一個非常強大的css屬性,叫做css變數,你可以通過這個連結得到更詳細的解釋。
然後給出筆者的例子:
const rotate=document.getElementById("rotate")
let r=0
rotate.addEventListener("click",()=>{
r += 10
rotate.style.setProperty("--rotate", r+"deg");
})
複製程式碼
#rotate{
--rotate:0deg;
background:pink;
width:100px;
height:100px;
transform:rotate(var(--rotate));
transition:transform 1s;
}
複製程式碼
當然,如果你希望一系列的動畫,你可以檢視這裡。設定一系列的動畫很簡單。
本文的主觀性很強,如果有感到不適的地方,筆者道歉。筆者只是為了大家能夠有個更好的學習氛圍。少一些爭論,多一些討論。好好學習,天天向上。
怕被打,溜了溜了。
不知道如何安放的文章,筆者應該怎麼新增標籤呢?