Time 如何处理短编码会话?

Time 如何处理短编码会话?,time,Time,我正在做一些宠物项目,通常我会在22:30或23:00左右坐在我的个人电脑旁编码。但由于我24:00左右睡觉,所以我不会开始编码,也不会以阅读文章、玩游戏等结束 我觉得我不可能在一个小时内写出像样的代码,因为这个项目相当大,我不想随意或粗心地修改它。尽管我使用TDD,但大多数时候我所做的事情都不是直接的,这需要大量的测试才能正确 你对这类问题的态度是什么?当你有足够的时间时,你是只是稍后才开始编写代码,还是有一种不同的方法允许你只编写30分钟的代码,然后再继续编写?我的第一个想法是“使用单元测试

我正在做一些宠物项目,通常我会在22:30或23:00左右坐在我的个人电脑旁编码。但由于我24:00左右睡觉,所以我不会开始编码,也不会以阅读文章、玩游戏等结束

我觉得我不可能在一个小时内写出像样的代码,因为这个项目相当大,我不想随意或粗心地修改它。尽管我使用TDD,但大多数时候我所做的事情都不是直接的,这需要大量的测试才能正确

你对这类问题的态度是什么?当你有足够的时间时,你是只是稍后才开始编写代码,还是有一种不同的方法允许你只编写30分钟的代码,然后再继续编写?

我的第一个想法是“使用单元测试”,但后来我了解到你已经在使用它了。但我仍然认为这是你计划的解决方案


尽量使您的测试尽可能小,并使用“每单元测试1断言”规则创建小型原子测试。您应该能够在30分钟的会话中修复这些小测试中的几个。

在有时间之前,我通常不会编写很多代码。原因是,对我来说,获得有效的注意力需要集中,而正确地集中注意力需要一点时间。也就是说,30分钟的插槽对于

  • 编写更多的测试:没有什么比尝试获得100%的代码覆盖率更重要的了,而且这并不是一个很大的浪费,因为您正在投资
  • 研究:我花很多时间阅读博客,寻找我可以使用的框架或工具。花30分钟寻找一个框架来完成你所需要的80%的功能,要比花几个小时去编写代码要好得多。另一个因素是,如果您实现了该框架,并且发现它不适合您,那么您在需求方面会受到更好的教育,这意味着您的开发将更加顺利

    • 在如此短的时间内开发是很困难的,但你仍然可以从中获得一些东西。单元测试就是其中之一。写下类的接口是另一个问题。虽然编写真正的东西需要花费更多的时间,但这些任务基本上是不需要动脑筋的,它们只是打字练习


      因此,我的建议是:专注于不需要思考和专注的小任务,这些小任务可以在你拥有的时间内完成。

      我从来没有做过,宠物项目通常太有趣了,我会工作到深夜或整个周末


      我建议你重新考虑你的优先事项——如果你所有的时间都是在晚上晚一个小时,那么最好是把时间花在游戏、文章等上,或者只是闲逛。当你有更多的时间时,比如说一个懒散的星期天,一次花掉所有的时间,真正体会到完成宠物项目应该给予的东西的感觉。

      以下是一些你可以尝试的事情:

      • 不要坐在电脑旁边。取而代之的是,拿一大张纸去一个安静的地方。想想你想要完成什么。写下接口思想,详细实现。在继续之前,列出你需要解决的问题
      • 休息一周,然后开始编码。在30分钟内,进入流量与流量时间之比实在太糟糕了
      • 记录你所做的事情,而不是编码。观察你的情绪状态
      • 早点睡觉,尽量在早上很早的时候进行宠物编码训练

      一个小窍门(我在工作中使用的)是在某个中间停止编码,有明显的大红色编译错误等待。< /P> 下次你开始工作时,这个错误实际上会帮助你记住你到底在做什么


      当你在处理小问题时,大局就明朗了,然后你可以继续设计。

      以下是我在工作之外处理个人项目的方法:

      • 1) 我试图通过在纸上规划我的项目来给自己一张好的地图。我绘制所有对象、数据结构和/或SQL表,并确定这些组件之间需要哪些基本功能和交互。如果解决方案显而易见,我可能会在这个阶段编写一些实际代码,但通常不会
      • 2) 一旦大局确定,我会优先考虑最基本和最关键的因素。我还试图找出哪些部分比其他部分更容易写
      • 3) 在确定优先顺序后,我首先开始处理最简单和最关键的部分,然后逐步处理更复杂和不太重要的部分。将每项任务分解成更小的部分往往会有所帮助。例如,我可能会先设计一个数据库表,然后第二天创建一个数据接口类来控制与该表的交互
      • 4) 单元测试真的让我有成就感,即使30分钟的努力只会产生几行高质量的代码
      • 5) 保留更改日志,即使它不是很详细。我发现,如果我在一段较长的时间内多次在短时间内完成一个大项目,那么我的变更日志是非常宝贵的

      这些步骤对我帮助最大。最后,我能够确定项目的一些小问题,这些问题通常可以在30-60分钟内完成。当然,随着项目的发展,我通常不得不重新评估一些东西,当我发现我在计划阶段遗漏了一些东西时,我会回到开始的时候。有时候,我需要走得更远一点,给自己一个有截止日期的时间表,并确保我用个人奖励来庆祝里程碑。如果你有熬夜到凌晨的倾向,这是我一直在努力解决的问题,我也建议给自己一个编码宵禁。我还试图确保我的“编码计算机”上没有很多干扰,比如游戏

      总还有一个bug。如果没有,还有一个更简洁的特性可以添加,这将添加更多的bug。这就是为什么我认为