zoukankan      html  css  js  c++  java
  • 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.概念性问题
    我不太能理解_____大概念中的_____小概念,我的理解思路是_____。不知道这样理解有没有问题?
    如果是新概念,处于完全不了解的情况,应该自己找博客学习,或者问人,也应该请对方扔链接,看了有不懂的地方再问。

  • 相关阅读:
    flash中网页跳转总结
    as3自定义事件
    mouseChildren启示
    flash拖动条移出flash无法拖动
    需要一个策略文件,但在加载此媒体时未设置checkPolicyFile标志
    Teach Yourself SQL in 10 Minutes
    电子书本地转换软件 Calibre
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes – Page 31 练习
  • 原文地址:https://www.cnblogs.com/Lulus/p/12361932.html
Copyright © 2011-2022 走看看