7 搜索關鍵詞 && 提問


初學者說“開發好難”,“完全無法理解”,其實不是因為他遇到的問題很難,而是他沒有掌握一個良好的搜索答案和提問的方式。
今天講的搜索和提問的問題,我個人認為是開發過程中最最最重要的問題,因為它是打開其他所有內容的鑰匙。掌握了鑰匙,世界的大門就會向你敞開。

搜索引擎 && 搜索關鍵詞

我們在之前的教程中提到過多次,第一個問題,搜索引擎!選擇什么!谷歌或者必應,國外谷歌,國內必應,不要用百度不要用百度不要用百度!記住這個,你就成功了一半了,剩下的一半就是搜索關鍵詞
我們現在遇到的問題搜索都很直白,往往一兩次搜索就可以得到答案,比如“Git 版本回退”、“C# 讀寫txt文檔”,即“使用工具 使用內容”這樣的關鍵詞。
但有時也會遇到一些比較復雜、比較詳細的問題,需要我們經過認真的思考和閱讀才能得到答案,在這里我舉幾個典型的例子。

概念性的問題

比如“CDN”、“死鎖”、“事務”。概念性問題最重要的就是理解其本質,1.為什么需要這樣做,2.它是如何實現,3.可以根據原理自己寫一個簡單的實現。至於有哪些工具(框架)可以完成它,可以關注一兩個,但不必深入學習,記住概念,需要用的時候再去學習即可。
概念的學習,可以讀百度百科的第一句話,但不要指望通過百度百科看明白。畢竟“百科”,就是科普向的,我們應該看更專業的文章。
看一篇文章看不懂,就放棄它、關掉,看下一篇。有些作者可能講得比較晦澀,找到一篇自己可以理解的即可。
有時候可能會需要結合幾篇文章的內容才能看懂。
有時候一個概念可能會引申出更多的概念,需要有耐心,一個個去搞清楚,同時搞清楚它們之間的關系。

只知道實現結果的問題

比如“實現XXX數據的統計與導出”、“繪制XXX數據的曲線圖”,這部分問題需要耐心的拆解成不同的問題。
以“繪制XXX數據的曲線圖”為例,將其拆解為:
1.根據查詢條件,查詢XXX數據;
2.在某種平台(桌面端/移動端/Web端)下繪制曲線圖。
其中1是需要提供至少1個接口,根據業務編寫接口。
2則需要根據平台和采用技術的不同,搜索不同的關鍵詞,如:“WPF 曲線圖(折線圖)”、“ASP .NET 曲線圖”等等。根據搜索結果,找到符合要求的繪制圖形的框架。“符合條件”包括,可以1.滿足業務需求,2.支持當前我們所使用的開發語言和框架,3.確認框架是否付費,如果付費價格是否可接受,4.框架可以滿足后續業務的修改與更新需求,5.框架的更新速度與維護情況佳,最好項目開發活躍、社區活躍等等。
然后閱讀該框架的“快速入門”篇一邊開發一邊學習。

細節問題

比如,運行報錯、發布報錯。這些問題沒必要去記憶,遇到了順着問題解決即可。如果覺得應該是個常見錯誤,而且比較難解,可以寫篇博客記錄一下,下次再遇見可以直接查博客來操作。
1.有時候有錯誤日志,復制粘貼去查,根據搜索結果,有時需要修復環境問題,有時需要修改代碼。
2.有時候可能沒有錯誤日志,或者錯誤日志的錯誤提示非常簡短、奇怪、無法理解,比如下面這種情況:
1
這是ASP .NET Core在發布站點后,運行失敗的報錯內容,報錯內容幾乎沒有意義,此時我們需要先找到更詳細的錯誤內容,才能對症下葯。
我們可以:
(1)設置IIS日志,並通過IIS日志分析器查看日志;
(2)設置站點返回報錯信息(默認發布狀態不會顯示報錯信息),查看錯誤並解決;
(3)遠程調試。

遇到這個問題的人很少的問題

這種情況比較少,但確實有。
有時候是中文資料匱乏,則必須去查英文資料。
有時候是英文資料都比較少。比如Xamarin的一些技術點,可能就需要曲線求國,去看看android原生的寫法,再結合C#進行改寫。
有時候搜索不到答案,可以:
1.在官網Stack OverflowCSDN這些網站上提問;
2.根據官方公布的技術支持郵箱,寫郵件提問;
3.在相關的開發群中問問有沒有人遇到類似的問題;
4.如果是開源的項目,可以閱讀源代碼,自己調試。
再比如,某些硬件的SDK,也可能存在這種問題。這種時候,考慮聯系廠商、技術支持,最好可以聯系到一線開發。把問題完整的表述出來,記錄好錯誤日志,便於溝通。如果在這方面反饋進展不好,可能就需要反編譯SDK來看看了。

一些技巧

1.有時第一次的關鍵詞不能直接得到答案,需要根據關鍵詞搜索的答案,不斷修改關鍵詞,找到最終的答案。
2.看博客注意看日期,越新的越好,超過5年以上的選擇性看(觀念、技術可能已過時),超過10年的可以關掉了。

提問

“提問”這個問題,看起來很簡單,但是往往會出現問題。
“提問”可以參考我們寫作文,語文老師怎么教的?時間地點人物做什么,你得描、述、清、楚、啊!
錯誤的姿勢:

誰會 誰懂 XXX
大神是怎么做的(對方向你伸手要代碼)
這個代碼怎么改(對方向你扔出了一片錯誤代碼)
XXX怎么理解(某個語言、框架或者其他大范圍的概念)
......

首先,如圖所示:
2
你要相信日常開發中的大部分問題,一定有人踩過,一定可以搜索到解決方案或者替代解決方案。
再來,真的要問問題就好好問,現階段不知道怎么問問題,我們就先去借鑒、參考一下唄————————github部分大型開源項目的issue是有issue的模板的。
比如vscode的Bug反饋模板:

<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- Please search existing issues to avoid creating duplicates. -->
<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: https://code.visualstudio.com/insiders/ -->

<!-- Use Help > Report Issue to prefill these. -->
- VSCode Version:
- OS Version:

Steps to Reproduce:

1.
2.

<!-- Launch with `code --disable-extensions` to check. -->
Does this issue occur when all extensions are disabled?: Yes/No

ABP框架的Issues模板:

### Documentation

Please check the official documentation before asking questions: https://aspnetboilerplate.com/Pages/Documents

### GitHub Issues

GitHub issues are for bug reports, feature requests and other discussions about the framework.

If you're creating a bug/problem report, please include followings:

* Your Abp package version.
* Your base framework: .Net Framework or .Net Core.
* Exception message and stack trace if available.
* Steps needed to reproduce the problem.

Please write in English.

### Stack Overflow

Please use Stack Overflow for your questions about using the framework, templates and samples:

https://stackoverflow.com/questions/tagged/aspnetboilerplate

Use aspnetboilerplate tag in your questions.

上面都是標准的關於bug的提問姿勢,是不是瞬間覺得思路清晰了?總結一下,問問題要醬紫:
1.詳細的出錯、報錯的問題
系統環境是_____,使用的框架、產品是_____,其版本是_____。
你的需求是_____,報錯代碼是:

//貼出你的代碼
//一小段,關鍵的出錯代碼+功能代碼

代碼貼多少,經常看stackover flow就可以很清晰,比如:onServiceConnected not called after enable my AccessibilityService
報錯的內容是_____。(報錯內容可能很長,可以全部展示,做好markdown)。
(可選)如果你有嘗試搜索、修復這個問題,可以貼上進展:
我檢索了_____(關鍵詞),查閱了文章A(鏈接)、文章B(鏈接),把代碼修改為_____,依然出現問題_____。
這樣做的目的是讓看的人明白你已經嘗試了哪些內容,在幫助你的時候可以划掉這個選項。
2.詳細的功能、性能問題
基本信息:我使用_____開發語言_____框架,開發環境是_____。
大體內容:我在完成_____功能,在寫_____的時候出現了問題(問題詳細內容或者問題截圖)。
詳細問題:我嘗試了_____Plan A,出現了_____問題(截圖、詳細問題內容)。嘗試_____Plan B,出現了_____問題(截圖、詳細問題內容)。
尋求解決:Plan A或者Plan B的問題應當怎么解決?或者是否存在Plan C?
3.概念性問題
我不太能理解_____大概念中的_____小概念,我的理解思路是_____。不知道這樣理解有沒有問題?
如果是新概念,處於完全不了解的情況,應該自己找博客學習,或者問人,也應該請對方扔鏈接,看了有不懂的地方再問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM