发布时间:2020年12月16日 - 6分钟阅读
TL;DR:我建立了一个工具,让你实时检查应用状态,并允许你在未来做更多。访问www.detective.dev ,了解如何使用它。
关于调试
来源:互联网上的每一个备忘录网站。
调试有时会很有趣,但大多数时候,它只是很糟糕。功能完成了,工作日结束了,但是,你已经准备好做任何事情,除了坐在电脑前休息。但就在你关闭IDE的时候,你注意到了一件事,一件注定会让你夜不能寐的事:一个bug。
你已经准备好继续进行下一个编码冒险(其他人称之为 "功能"),但你不能。
我希望我不是唯一一个时常有这种感觉的人。
我在Twitter上做了一个调查,结果发现,调试是开发应用的一个相当重要的部分,像这样的场景也不例外。
64票,但它应该包含一些真相
调试主要是猜测问题可能在哪里,然后建立假设并检查这些假设。
这就像用放大镜看问题一样
有时候,你只是没有看到树木的木头。调试时,你只能看到你的应用程序的很小一部分。它可能是你为了调试而打印出来的变量,或者是调试器击中断点的当前帧。所以你一直在用整个世界中很小的一部分来寻找问题,这个效果出奇的好。人们发现bug并随后修复它们--但现在想象一下,当你有能力看到更多的东西时会发生什么?悬浮在森林之上,而不是站在森林之中。
侦探来拯救
Detective允许你一次性检查所有有趣的应用程序状态。有关如何安装的信息,请前往www.detective.dev 。
如何使用它
首先,你必须选择一个你感兴趣的类。这通常是一些持有一些可变(可改变)状态的类。
在这种情况下,MyTestBloc
接下来,选择要使用的具体实例。大多数情况下,你感兴趣的类只存在一次,如果是这样的话,选择它就可以了。有时你可能根本找不到实例,这有几个原因,但要注意的是,Provider默认是懒惰的,也就是说实例在第一次使用之前不会被创建。
然后你就可以开始了 从查看你的类的这个特定实例的状态开始。请注意,你通过使用应用程序所做的更改是如何实时发生的--不需要任何重新加载。
看清大局很好--但我们能做得更多吗?
这个问题问得好!答案是肯定的。答案是肯定的。状态检测只是所有可能性的开始,一个应用程序能够结合进程的运行时信息来访问元信息。以下是我在路线图上的三大功能。
调试函数调用
有时,在调试时,你只是想调用一个函数,发出一个事件或以特定的方式改变状态。通常情况下,这种情况是通过某种UI来实现的,但是这样做可能会有几个问题。
UI还没有建立
先从逻辑入手,然后再构建UI,这一般是一种普遍的做法。但如果没有接口,测试上述逻辑就会变得很困难,所以通常会实现一些占位符--这同样需要时间,可以避免。
UI使用起来很麻烦
有些功能只是需要大量的设置才能进入所需的状态。这可能是通过长表格的点击,改变系统设置,或任何其他设置。
由于使用预设和快捷键,速度更快。
很多程序员由于已经很好地掌握了键盘,所以更喜欢命令行和其他基于文本的输入。那么,为什么要走使用点和点击UI的缓慢路线呢?
类依赖图的可视化
大家都知道 "意大利面条 "代码这个词。什么意思呢,就是代码之间的联系非常紧密。所有的东西都在引用大量的类,维护这样的代码变得越来越困难,因为在脑海中没有全局的情况下,很难对某一具体部分进行推理。
因此,将代码分成非常孤立的小块,从而使其易于阅读和修改是非常重要的。引用是指一个类['Foo'使用了另一个类'Bar'],也就是说['Foo'依赖于'Bar']或者['Foo'引用了'Bar']。如果你查看项目中的所有类,发现有很多循环(['Foo'使用'Bar']和['Bar'使用'Foo']),这可能是一个很好的重构指标。
了解项目结构有时很困难,因为你一次只能看一个类。将其可视化成图结构,可以让你更有效地推理你选择的架构。
状态时间旅行
这个是潜在的最酷的。
在调试应用程序时,需要了解一个非常有趣的事实,那就是状态变化,以及导致状态变化的原因。现在,当状态被改变时,就不能再回头了。这意味着如果你想找出导致上述状态变化的原因,你就不得不重做导致有趣的状态变化之前的动作。
使得这个重做的过程非常耗时,并且需要多次尝试,你成功地花费了比你想要的更多的时间在解决问题上,而不是创造新的东西。
Detective有可能在你与应用互动时记录下有趣的状态,并重播给你,而无需再在应用中做任何事情。
把它看作是Redux web中的时间旅行,但对于Flutter来说。我认为这是非常不言而喻的,这可能会节省很多时间。
将其嵌入到IntelliJ和VSCode中
这个很不言而喻。利用Flutter web的强大功能,Detective可以直接内置到IntelliJ和VSCode中,使用插件,从而减少桌面上的窗口,甚至提高工作效率。
结束语
如果你听起来和我一样期待,一定要在www.detective.dev 。它只需要3个命令就可以安装。
如果你想了解最新的开发信息,请务必加入网站底部的新闻通讯。
最后但并非最不重要的是,让我知道你的想法!
感谢纳什。
通过www.DeepL.com/Translator (免费版)翻译