当我遇到问题时:
我在Google上搜索代码段.
我考虑隔离问题,以便我可以更好地向其他人解释它以获得答案.
您使用哪些搜索技术来找到问题的解决方案?
我开始在Stack Overflow中提问.
您还有哪些其他技巧或方法可以更快地解决问题?
去做其他事情.不完全是.我发现将问题排除在我的脑海后面会有所帮助.我不能指望我想到了一个很好的解决方案,以东西的次数我已经工作时,我正在别的东西,或看电视,或进食上.看来你的大脑仍然在后台研究这个问题.
如果这无法解决您的问题,请尝试与某人交谈.你会感到惊讶的是,其他人可以经常为你的问题提供解决方案.
那就是:
谷歌
谷歌
谷歌
堆栈溢出
谷歌
谷歌
也许是一本书,如果我有一本书.
说真的,我在20世纪80年代开始(业余爱好)编程,甚至在90年代中期你必须了解事情,并拥有一个技术库.然后谷歌出现了谷歌比查找更容易(书签!)API文档(谷歌"java stringbuilder"将让我在那里比导航更快)更不用说实际的书(电子或纸张).
你试图解决的大多数问题都已经解决过了.多次.
其余的调试归结为分解,可能是单元测试(与分解有关)并验证您的假设.
通过"分解",我的意思是您的解决方案的结构可以使小块可以单独测试并易于理解.如果你有7000线方法,你(可能)做错了.
了解您所做的假设也是关键所以您可以验证它们.例如,当我开始使用PHP时,我写了一段代码,如下所示:
$fields = $_SESSION["fields"]; // $fields is an associative array $fields["blah"] = "foo";
我正在试图弄清楚它为什么不起作用(我下次查询$ _SESSION时数组没有更新).我来自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";
关于调试和编写健壮代码的最后一件事就是了解解决方案的界限.我的意思是,如果你正在实现一个链表,那么边界条件将围绕列表为空时.