阅读更多

4顶
0踩

非技术

转载新闻 程序员解决问题的60个策略

2015-02-02 09:35 by 副主编 mengyidan1988 评论(0) 有5174人浏览
程序员的生活就是解决一个又一个问题,永无止境。

这篇文章介绍了一系列解决问题的策略。

如果你觉得有用,欢迎分享。



根本的指导方针

1.首先写代码的时候最好不要有缺陷。最好的修复方法就是让bug胎死腹中。
  • 良好的单元测试
  • 强制数据库约束
  • 使用输入验证框架
  • 避免未实现的“else”条件
  • 在应用到主程序之前知道如何在孤立的情况下使用

日志

2.print语句。往往额外输出个一两行将有助于隔离问题。

3.切换至详细的日志记录。详细的日志记录有助于发现更多的线索。

4.搜索日志。如果日志太多,可采取关键字或错误代码来搜索日志文件。

5.开启自动换行和关闭自动换行。控制日志的自动换行也非常有用。

6.搜索不同的日志。主服务器的日志可能并不是唯一有用的日志。

7.Windows事件日志。日志文件的另一个来源可能是操作系统本身。

8.制作有用的日志记录。有时,如果你没有得到任何有用的日志记录,那么你可能需要自己写。

与其他人交流

9.询问一些可能知道问题答案的人。

10.问”愚蠢“的问题。可能你觉得这些问题很愚蠢,但其实并不是。

11.将问题解释给队友。他们可能知道答案或者能提出一些你并没有想到过的事情。

12.将问题解释给你的狗。述说的对象是谁其实没有关系,但是能让你从不同角度分析问题。

写作

13.描述问题。用最准确和最精确的语句描述问题,有助于你去思考可能的解决方案。

14.问题日记。创建一个文本文件来记录已经尝试的各种方法,包括代码片段、配置设置以及产生的任何错误。

15.记录问题和解决方案。有没有这样的情况,突然看到一个似曾相识的问题,只记得解决过但却忘记了是如何解决的?可以将问题和解决方案记录到一个容易搜索的地方,如维基、缺陷跟踪,甚至可以发送电子邮件给自己。

支持

16.阅读FAQ。

17.提交支持请求。如果有可用的产品/库的支持,那么就用。

18.在你点击send之前,请三思。写支持请求能让你再一次思考问题,有时候就在你点击send按钮之时,突然灵机一动就想到了解决问题的方法或者是新的线索。

19.其他方面的支持。可以与开发人员直接面对面交流,最好是实时聊天/ SKYPE/屏幕共享。

离开键盘

20.散散步。

21.打个盹。

22.重置优先级。暂时从键盘上离开还有一个好处就是可以让你重新评估这个问题的重要性,也许这个问题只是个CSS/布局问题,根本不值得你花上16个小时。总之要有效分配和使用时间。

23.暂时将这个问题放在一边。实在解决不了的话,可以将这个问题先搁置起来。也许几天后你在阅读相关问题的时候,突然一个激灵,解决问题的关键就来了。

隔离

24.确定是哪行代码。首先要确定是哪行代码导致的问题,以便于插入print语句。

25.将问题分割为一个单独的程序。有时候对于库和产品的问题,我们可以将它的相关代码从主程序中分离开来。这可能需要一点时间,但往往处理一个孤立的程序比应对整个的项目构建过程要容易得多。然后在解决这个单独程序的基础上再去和主程序作比较。

更改代码

即使你一点都不知道如何解决问题,更改代码也是一个挺有效的解决方法。

26.写新的单元测试。

27.重构。有问题的代码往往显得有点乱,通过一些简单的重构方法,例如重命名变量或展开嵌套的if / then/ else模块等都可以让代码整洁起来。

28.发现bug。另一个整洁代码的手段是查阅相关代码的“Find Bugs” 报告,我们之所以首先要整洁代码是因为:作为一个能让我们的大脑专注于代码的方法,既简单又划算。

29.重写。转存所有的相关代码,从头开始重写。一个全新的视角也许能让你完全规避这个问题。

30.为一些不必要的代码添加注释——或者至少是你以为是不必要的。然后你会发现可能这些代码流并不像你曾经以为的那样“没有必要”。

31.实验。如果你不能确定底层产品或库是如何工作的,那么一些小实验,特别是围绕边界条件的实验会非常有用。

32.回到干净的状态。如果你在代码中做了各种变动,或者是搞了很多配置设置,那么定期回到一个干净的状态就非常重要。否则,实验结果可能会影响正确答案,这样你就永远也找不到正确的解决方案了。

33.切换技术。

产品

34.升级到更高的版本。也许你正在处理的问题已经被修复了,可以试试先升级到另一个版本。

35.降级到以前的版本。也许问题正是由于与你目前正在使用的其他产品/库不兼容而引起的。

36.打补丁。

37.下载并安装源代码。

文件

38.阅读手册。大多数开发人员可能会认为这是一个低概率的策略,但是,嘿嘿,你永远不知道,也许答案就在文档中。

39.阅读手册的正确版本。

40.手册是否正确?有时候代码已被更新,但手册还没有。

调试器

41.了解键盘上的快捷键。

42.倒退。这是调试器的一个功能,让你的代码退后一步。

43.编写断点代码。

44.异常中断。调试器的一个蛮有用的功能就是可以捕捉到任何地方的特定异常。

45.专业化的调试工具。例如:
  • Plumbr
  • AppDynamics
  • Chronon
  • Wireshark
  • HTTP profilers:Fiddler2、Charles、Live Http Headers

源代码控制

46.对bug缺陷进行编号标记。你有没有碰到过这样的问题:先是用这种方式被修复了,然后几周后又成为了bug被其他人用另一种方法修复了。这样问题貌似就有两个正确答案。解决办法就是对源代码中相关的bug缺陷进行标记,并记录一些关于为何改变以及谁参与决策等更为详细的说明。

47.Blame功能。这个可爱的小工具能告诉你是谁最后更改的代码。

48.Git bisect功能。Git有一个有意思的“bisect”命令,能自动通过你提交的历史进行二进制搜索发现故障。

寻找答案

49.谷歌搜索。

50.论坛帖子。

52.在stack exchange上沟通交流。

53.在stack exchange上提交问题。

其他

54.聘请专家。可能在短时间内成本很高。

55.招实习生。聘请专家的相反方法就是聘请新手。有时候初学者饱满的热情能让他们从不同的角度来解决问题。

56.改变要求。如果你不能修复缺陷,那么可以改变要求。通过解释各种成本需要,也许能让客户改变他们的初衷。

57.更改上/下游系统。

58.循序渐进地学习技术。

59.通过断点检查配置。更改关键配置值,并确保已经断点,这样能够让我们无所顾忌地设置配置。

60.系统化。有时候我们需要将三四件事情组合在一起,那么可以将已经试过的组合记录下来,如果需要的话一定要尝试各种的组合。
  • 大小: 96.5 KB
来自: 极客网
4
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Java程序设计基础:设计解决问题的策略.pptx

    基本程序设计--设计解决问题的策略 本讲主题 1 理解什么是程序 2 了解程序设计的基本步骤 3 掌握设计解决问题的策略 程序一词来自生活,通常指完成某些事物的一种既定方式和过程; 什么是程序 在日常生活中,可以将...

  • 程序员面试HR常问问题(含答案)

    程序员HR面试常见问题及答案,每道都是认真筛选出的高频面试题,助力大家能找到满意的工作! 下载链接:全部面试题及答案PDF 1、请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、...

  • 程序员面试常见的10个问题,非常实用的面试技巧,收藏一下

    今天给大家分享10道面试常见问题的回答套路,相信一定对你有所帮助! Q1:请你先自我介绍下 回答技巧: 回答尽量简短,控制在1-2分钟内,先简单的介绍一下自己,说下自己有什么优点,然后介绍下自己过去的一些...

  • 程序员初入职场,5个正确的成长策略

    很多程序员刚进入工作领域的时候,可能会觉得自己写的每一行代码都那么笨重、低效,而且无法顺利适应程序员的职场生活…… 其实,每一份工作都不是完全舒适没有压力的,因此,工作中更要考虑如何提升自己的工作效率...

  • 给大龄程序员的4种竞争力策略

    28、30、35、40,年龄每增大一点,性价比的忧虑就多一分,如何才能更从容面对职场各种状况呢,参考这4种策略:1)成为精通者和专家;2)向抽象和人靠近;3)修炼顶层可迁移能力;4)构建五维竞争力。

  • 解决问题的策略

    像程序员一样思考 我们所说的“问题”其实包含了约束条件,约束条件就是与这个...解决问题的一个重要原则:如果没有意识到所有看可能的动作,很可能无法解决问题。我们可以把这些动作称为操作。通过列举所有可...

  • 一个初级程序员学习新技术的策略

    于是学习新技术成了重点解决的问题。其实IT行业推陈出新的速度是很快的,学习新技术并不是初级程序员独有的问题,但是他们的处境是更为困难的,缺乏经验和指导,如何迈出第一步,如何筛选信息,如何深入学习都是摆在...

  • 程序员,这12个问题让经理比你痛苦多了

    你面前的技术(项目)经理可能比你痛苦多了,信不信,你看看他们面临的这12个问题就明白了……

  • 有哪些让程序员受益终生的建议

    从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由...

  • 程序员最关心的十个问题,我帮你问了ChatGPT

    我搜集筛选出了程序员最关心的十个问题。并将这些问题询问了 ChatGPT,整理成了这篇文章。一起来看看 ChatGPT 的答案吧~Q1:AI 是否有可能取代程序员?AI 技术还没有发展到可以完全取代程序员的地步。尽管 AI 可以...

  • 程序员的使命:成为更好的问题解决者

    全文共3034字,预计学习时长8分钟 图源:unsplash ...仅仅重复做着解决问题的单调工作对提高个人的学习和水平没有益处。一开始时,我只专注于快速解决一个问题,然后赶快转到下一个。久而久之,这种做...

  • 一流程序员和普通程序员,解决问题的差别在哪?

    不是每一位程序员都有机会经历千亿交易额的世界级场景,但是我们可以通过阿里新书《尽在双11:阿里巴巴技术演进与超越》,感受业界一流程序员和普通程序员解决问题的区别。为什么这...

  • 如何成为一个优秀的程序员?

    目录1 靠谱的程序员2 解决问题的能力2.1 快速的定位2.2 深入分析2.3 取舍解决3 团队协作能力3.1 第一种模式:润滑剂模式3.2 第二种模式:全责模式3.3 第三种模式:混合模式4 自我驱动能力 1 靠谱的程序员 复盘一下近几...

  • 程序员必知的40个算法

    点击上方蓝色字体,关注程序员zhenguo你好,我是zhenguo在讲述程序员必知的40个算法前,我想拿出相当一段篇幅阐述怎样学习算法,以及算法学习切记不能怎么样做。对于每一位程序员或许都...

  • 当我问了ChatGPT 10个程序员最关心的问题,没想到…

    因此,我们面向工程师征集共创,并筛选出了程序员最关心的十个问题。并将这些问题询问了 ChatGPT,整理成了这篇文章。一起来看看 ChatGPT 的答案吧~Q1:AI 是否有可能取代程序员?AI 技术还没有发展到可以完全取代...

  • python入门-30.寻找列表中只出现一次的数字-寻找单身狗.py

    python入门-30.寻找列表中只出现一次的数字——寻找单身狗.py

  • 布尔教育linux优化笔记

    linux优化笔记,配套视频:https://www.bilibili.com/list/474327672?sid=4496133&spm_id_from=333.999.0.0&desc=1

  • 知识付费系统-直播+讲师入驻+课程售卖+商城系统-v2.1.9版本搭建以及资源分享下载

    知识付费系统-直播+讲师入驻+课程售卖+商城系统-v2.1.9版本搭建以及资源分享下载,CRMEB知识付费分销与直播营销系统是由西安众邦科技自主开发的一款在线教育平台,该系统不仅拥有独立的知识产权,还采用了先进的ThinkPhp5.0框架和Vue前端技术栈,集成了在线直播教学及课程分销等多种功能,旨在为用户提供全方位的学习体验,默认解压密码youyacaocom

  • 美妆神域-JAVA-基于springBoot美妆神域设计与实现

    美妆神域-JAVA-基于springBoot美妆神域设计与实现

Global site tag (gtag.js) - Google Analytics