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

  • 相关阅读:
    redis 中 set 和 hset 有什么不同,什么时候使用 hset 什么时候使用set?
    redis的底层数据结构
    python开发-实现redis中的发布订阅功能
    使用redis-py的两个类Redis和StrictRedis时遇到的坑
    python使用redis实现协同控制的分布式锁
    深入理解 Python 异步编程(上)
    linux中read,write和recv,send的区别
    socket常见问题
    python socket 编程之三:长连接、短连接以及心跳
    Flask快速入门
  • 原文地址:https://www.cnblogs.com/Lulus/p/12361932.html
Copyright © 2020-2023  润新知