Debugging 陷入编程困境时应遵循的技巧
当我遇到问题时:Debugging 陷入编程困境时应遵循的技巧,debugging,Debugging,当我遇到问题时: 我在谷歌上搜索代码片段 我着眼于隔离问题,以便更好地向其他人解释,以便获得答案 您使用什么搜索技术来找到问题的解决方案 我开始在堆栈溢出中提问 为了更快地解决问题,您还采用了哪些其他技术或方法?还有: 谷歌 谷歌 谷歌 堆栈溢出 谷歌 谷歌 如果我有一本书,也许会有一本 说真的,我在20世纪80年代开始(爱好)编程,甚至到了90年代中期,你必须知道一些事情,并且拥有一个技术库。然后谷歌出现了,用谷歌搜索一些东西比查找(书签!)API文档要容易得多(谷歌“java str
- 我在谷歌上搜索代码片段
- 我着眼于隔离问题,以便更好地向其他人解释,以便获得答案
- 谷歌
- 谷歌
- 谷歌
- 堆栈溢出
- 谷歌
- 谷歌
- 如果我有一本书,也许会有一本
$fields = $_SESSION["fields"]; // $fields is an associative array
$fields["blah"] = "foo";
我挠头想弄明白它为什么不起作用(下次查询$\u会话时数组没有更新)。我来自Java背景,您可以这样做:
Map fields = (Map)httpSession.get("fields");
fields.put("blah", "foo");
这肯定会奏效。但是PHP会复制数组。工作解决方案是使用参考:
$fields =& $_SESSION["fields"]; // $fields is an associative array
$fields["blah"] = "foo";
或者简单地说:
$_SESSION["fields"]["blah"] = "foo";
关于调试和编写健壮代码,我要说的最后一件事是了解解决方案的边界。我的意思是,如果你正在实现一个链表,那么当链表为空时,边界条件将围绕着链表旋转。多年来,我最好的朋友就是跳上我的自行车回家。这些年来,仅仅是远离键盘就解决了我的许多问题。去做点别的吧。不,真的。我发现把问题放在脑后会有帮助。当我在做别的事情,或者看电视,或者吃饭的时候,我已经数不清有多少次我想到了一个很好的解决方案。你的大脑似乎还在后台处理这个问题
如果这不能解决你的问题,试着和别人谈谈。你会惊讶地发现,经常有人能为你的问题提供解决方案,而这些解决方案如此简单,以至于你无法想象。如果问题一直持续到一天结束,我会尝试有意识地把问题锁起来,以便在睡觉前解决 我意识到这听起来有点离谱,但根据我的经验,我醒来时至少会有一种解决问题的替代方法,如果不是完整的解决方案的话。我们的想法不是强调它,而是积极地决定一夜之间解决它。这样你就可以安心睡觉了
我认为吃得好、有规律的锻炼和良好的睡眠是解决问题的重要因素。别忘了通常我会花几个小时左右的时间来尝试解决问题,尝试不同的方法,把问题写在纸上,做图表。如果这些都不起作用,我通常会使用以下选项
通常,最好的办法是做一点编程以外的事情来清醒一下头脑。请参见示例-我是在与一个特别棘手的错误作斗争时这样做的,当我回到问题上来时,我在大约一分钟内解决了它。向同事解释这个问题,或者写下来描述它。这会让你从不同的角度以不同的方式思考。为了更准确地描述问题的背景,你会退后一步,从更高的层次来看待问题,你可能会发现你忽略了一些真正重要的东西
有时,你甚至会在结束描述之前找到解释。通常我会在睡觉前尝试解决它。。有时我在纸上写下代码正在做什么,然后把它分成几部分;我试图知道程序在运行时变量是如何变化的。首先尝试解决一个小得多的问题,看看你是如何处理的。 一旦你这样做了,更大的问题就不会那么可怕了。去厕所。 你移动,你的大脑就会得到氧气。 你放松,所以你专注于其他事情
为创新撒尿!:) 问问自己:解决这个棘手的问题对你的工作真的很重要吗
在你的应用程序中(或者不管是什么大问题),是否有一个类似但更简单的问题,你可以解决,以完成大致相同的事情。通常,我会拿笔和纸,尝试解决问题的细节。如果这没有帮助,谷歌。如果做不到这一点,我会暂时做些别的事情,或者在线询问。到目前为止,你一直在为我工作。你被卡住的事实可能是一种“代码气味”。表明他们的som设计或方法有问题