f5session粘滞_从粘滞,棘手的编码问题中解脱出来的5种方法(4)

f5session粘滞

GIF图片由Giphy提供

当您学习新知识时,您将不知道自己所不知道的。 擅长做某事总有秘诀,学习编码也不例外。 这些秘密是元学习,提供了方法,工具集和思维定式,以实现您成为踢踢式编码器所需要的突破。 我在这里是为了 在Makers Academy的 编码 之旅中 发现的元学习上投入大量精力 ,以便您加快自己的学习速度。

对于本系列的第四篇博客文章,我们将探讨在遇到棘手的编码问题时可以解决的可行方法

“增长是痛苦的。 变化是痛苦的。 但是没有什么比坚持下去痛苦的多了”
NR Narayana Murthy
[1]带来强大的,消除错误的调试方法

如果您读了第一行并认为“我不知道我是否有一个真正的调试过程”; 那我告诉你,你要请客了。

有了编码(可以说是生命), 流程始终是解决特定问题的主要方法。 培养可以将其应用于任何编码问题的健壮调试方法,无论大小,都是消除编码错误的最佳方法。

输入:由Makers Academy开发并由 Mary Rose Cook 与我分享的精美简单的“三步调试过程”

步骤1:从错误消息中拧出所有有用的信息

听起来很简单。 实际上,对于新手和有经验的编码人员而言,这都是一个典型的陷阱。 通常,当我们运行我们的代码(或对我们的代码进行测试)时,我们会尝试直接找到解决方案以尽可能快地解决它,不顾一切地跳过堆栈跟踪和任何错误消息。 相信我,这很容易做到; 我自己做了很多。

当您看到堆栈跟踪(下面的示例)时,请拧出您可以找到的每一个该死的细节,例如:

  • 什么文件
  • 什么线
  • 什么类型的错误? 例如NoMethodError
  • 问题的范围是什么?
  • 错误消息提供哪些详细信息?
Ruby代码的RSpec测试中带有错误消息的堆栈跟踪示例

在现代编码语言中 ,错误消息比以往任何时候都更加有用-确保提取出所有可能的信息。 迫使您认真对待此过程的有用方法是, 在阅读错误时写出您发现的有关错误的信息 ,以确保您精通最有用的位。

第2步:收紧循环并获得可见性

收紧循环。 在这里,您可以使用错误消息中的信息,并查看代码的不同源以查找发生错误的位置。 关键是找到第一行错误的代码 (该行可能与错误消息所提供的确切行不同,也可能与之不同)。

获得可见性。 现在,您已经收紧了循环,大致了解了错误的出处,获得了可见性,例如,查看/打印/检查该空间中的所有变量和编码逻辑。 在存在引用透明性的地方(对已提取的代码逻辑的引用并存在于其他地方),将其分解并找出代码中的变量是什么样。

通过将复杂的代码分成小块,并仔细研究这些方面每个方面的评估,您将对代码在实践中的工作有更好的了解。 继续将您的代码分成多个部分,并获得正在运行的所有元素的可见性 。 您对代码中每个点确切发生的事情的理解将得到改善,并且您将看到编码逻辑出现故障的地方或行为与您的期望有所不同的地方。

步骤3:修正该错误

至此,您已经知道是什么原因导致了堆栈跟踪中的错误,您已经缩小到了知道错误所在的位置,并且确切地知道了代码中的每个元素实际上在做什么。 此过程将揭示您的错误发生的原因。 如果您知道解决方法,请继续进行! 或者,您现在将知道问题发生的位置和原因,但是要修复错误本身,您可能需要研究解决方案。

编码研究本身就是一种技能和过程,我在这里不会解决。 如果该错误仍在引起您的问题,请仔细研究问题,不要忘记退后一步,对问题进行更高级的思考。 提醒自己,编码上下文和逻辑始终是解决问题的关键。 通过随机输入您认为可行的潜在解决方案来修复错误本身可能很诱人。 但是,这不太可能解决问题,即使您解决了问题,您也不知道为什么下次解决类似的错误时它会起作用。

最后提示 :请记住,最棘手的问题通常具有最简单的解决方案。 不要忘记,您的错误修复可能是一个简单的拼写/错字/语法问题。

解决棘手的编码错误:Slimy,但令人满意

除了执行可靠的调试过程外,还可以在工具箱中保留4个简短而又敏锐的元学习:

[2]删除您的代码(等待,什么?!)

仅仅因为您的代码之前(或您认为可以)工作了,并不意味着它仍然可以工作。 您可能会陷入困境,因为满足新的用户要求已改变了代码中所需内容的游戏,并且过时了。 然而,即使不再有意义,我们仍然可以尝试将新功能强制转换为旧代码。 尽管我们所有人都希望构建易于灵活和可扩展的代码,但这种可能性是有限的(特别是在具有多个开发人员的复杂代码库中)。 因此,最好的解决方法是删除DE DAMN CODE。

“在破坏时期,创造一些东西。”
马克西恩·洪·金斯顿

通过删除您的代码,您可以轻松美丽地开始工作,而无需先前代码库的认知负担。 您带来了一个光明的,明亮的“初学者头脑”,将您的代码再次变成了全新的机会,任何新的,酷的想法都可以成为未来。

删除您的代码,否则熊猫会为您删除

幸运的是,与使用砖砌建筑物不同,代码很便宜。 它实际上只花了一点钱,但存储空间却不花任何钱(享受这一方面,让它沉没-屏幕上的代码不是值得的东西,您编写出色的新代码的能力才是值得的)。 习惯于删除代码,然后重新编写。 通过编写的代码可以很容易地获得宝贵的价值,但是,确信自己能够从头开始复制代码是非常宝贵的。 您将无法删除代码并重新启动,但是这很可能是您学到的最强大的功能。

[3]假设你和我都做个傻瓜

这是一个棘手的棘手错误的最危险武器:假设。 在编写代码时,我们会一直假设事物的运行方式。 这些假设是心理模型和隐喻,它们简化了我们的编码模型,并使我们能够将其保留在我们的大脑中,以便我们可以以可行的方式进行交互并与之合作。 尽管这可以帮助我们减轻认知负担,但它可能是绝对的消磨,并且可能是造成困扰的主要原因。 所有危险假设中最邪恶的:假设您知道为什么会发生错误。

当您想到有关代码和所卡住的错误的想法时,不知道发生错误的真正原因。 值得庆幸的是,除了意识到假设的可怕力量之外,还有3种实用的方法可以对抗这种自然的思维方式。

假设会导致这种情况-一个只为您打造的活虫地狱:)

(i)每次添加或更改代码行时,都要运行代码和测试。 让您自然而然地使用模型并运行测试。 如果您在更改之间保留的时间过长,您将不知道哪一次更改是您现在在代码中看到的影响。 在开始奔跑之前:知道,真的知道,您认为这个附加元素应该做什么 (甚至大声说出来)。 如果更改一个元素和错误消息。 然后,当您的更改发生更改时,将运行代码的堆栈跟踪,请内部化此更改发生的原因以及这对帮助您避免卡死的含义。

(ii)Git尽早并经常提交您的代码。 这样,您可以轻松地返回模型的先前版本和特定版本,以查看哪些更改导致您陷入困境。 无需假设发生了什么更改,您就可以轻松地查看更改的内容,并返回到发生更改之前的时间。

(iii)如果您真的想超越目标:完全通过未来的实时测试功能消除假设。 换句话说,请设置您的测试基础结构,以便它可以运行您的代码并按您的键入进行实时测试。 我知道,什么!?! 即时,优美的反馈,无需假设您的代码在做什么,因为您可以实时看到正在发生的事情。 解除粘滞的终极工具。 例如:如果您使用的是无处不在的Javascript,那么一个有用的指针可以帮助您实现目标: wallaby.js

[4]首先解粘,然后再重构

当您编写代码时,诱惑可能是在知道它是否确实按照您希望的方式工作之前就开始对其进行重构。 当您陷入困境时,最好是忙于自己重构代码库,而不是尝试解决实际上陷入困境的棘手, 棘手 ,可怕的问题。

抵制这种冲动,只有在知道代码可以正常运行并通过所有测试的情况下,才重构代码( 在此处第1点了解测试驱动开发的世界和红绿重构周期 ) 。

如果您在此之前进行重构,则将进入red-refactor-red-refactor ad-infinitum的暮光区周期。 无效的重构代码可能会使您忙碌,并使您无法解决遇到的问题,但是只有在您开始工作后,它才能从头开始进行重构。

[5]不要陷于精神粘性
粘在粘性上的大脑的视觉表示

永远不要忘记:您的大脑最终将带给这一棘手的问题解决方案。 头脑有一种使粘稠感复杂化的绝妙方法,但是好好对待它可能成为解开粘滞感的关键:意识到被粘住的心理方面,以便您能够尽快取得突破。

(i)不要在问题上停留太久。 在学习编码方法时,尤其是在旅途开始时,不要将一个特定的问题停留在30分钟以上。 您的问题解决过程应包括升级,在那30分钟后,您已经升级并击中了核选项,以使您摆脱困境。 例如:给朋友打电话,与导师交谈,或者如果有的话:查看解决方案并从中学习。 这不是在承认失败,而是要有一个明智的,分层的问题解决流程,并带有适当的升级点,而不是反复尝试尝试陷入困境的方法。

“精神错乱:一遍又一遍地做同样的事情,并期待不同的结果。”
未知

(ii)确保稍事休息:为大脑提供顿悟的空间

陷入困境的一种自然的心理陷阱就是将代码拖走,而对一个错误感到沮丧,以至于将自己从代码中撕下来似乎是非常痛苦的。 休息一下就好比承认失败,放弃自己的问题。

但是,这种不间断地争取胜利的冲动并没有考虑到大脑的实际运作方式。 人脑实现顿悟的方式是通过学习某种东西, 然后从直接问题中获得空间来处理这种学习 。 您为什么认为人们在最奇怪的时间有出色的想法和突破:在健身房,淋浴,散步时?

一个特别棘手的问题所带来的空间可能正是您所需要的,但这是我们要让最后发生的事情。 相信科学:真正的认知突破,让潜意识为您解决问题,就像真正的解决问题的专家。

(iii)享受进步并庆祝胜利

当您努力摆脱顽固的必杀技时,请尽情享受路上的迷你成功。 即使更改错误消息,也要停止并表示祝贺。 通过使用上述工具和技术,您应该有能力摆脱棘手的粘性编码问题。 当您最终摆脱困境时,请确保在心理上奖励自己并稍事休息以庆祝; 你赚了。

寻找更多的编码秘密?

这是该系列文章中的第四篇,重点介绍了我在Makers Academy学习编程时所学到的秘密元学习:方法,工具和思维方式,以取得突破,成为一名踢tools的编码人员。

如果您喜欢此博客文章,并且想阅读更多类似的文章,请单击“关注”,然后单击“ below”下面的“中等鼓掌”按钮,给我一些鼓掌

翻译自: https://hackernoon.com/5-ways-to-unstick-yourself-from-sticky-tricky-coding-problems-4-f65aba51a0ca

f5session粘滞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值