Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Workflow I';在完成之前,我重写了我的代码大约10次。这是错的吗?_Workflow - Fatal编程技术网

Workflow I';在完成之前,我重写了我的代码大约10次。这是错的吗?

Workflow I';在完成之前,我重写了我的代码大约10次。这是错的吗?,workflow,Workflow,当我开始写一些复杂的东西时,我发现在我得到我想要的东西之前,重新开始写大约10次,通常会丢弃数百行代码 我做错了什么,还是其他人有这样的工作流程 编辑:现在,我正在开发一个模块化编译器。我所从事的最后一个项目是java服务器。在此之前,它是一些并发的东西 我做了相当多的计划,在我拥有所有接口之前,我从不开始编码 有鉴于此,重复地把板岩擦干净是正常的吗?在一个复杂的问题上,这是很常见的。如果你不是完全在黑暗中摸索,那么首先勾勒出我们的想法确实很有帮助,但是你只是将“重试”从代码转移到了纸上 如果它

当我开始写一些复杂的东西时,我发现在我得到我想要的东西之前,重新开始写大约10次,通常会丢弃数百行代码

我做错了什么,还是其他人有这样的工作流程

编辑:现在,我正在开发一个模块化编译器。我所从事的最后一个项目是java服务器。在此之前,它是一些并发的东西

我做了相当多的计划,在我拥有所有接口之前,我从不开始编码


有鉴于此,重复地把板岩擦干净是正常的吗?

在一个复杂的问题上,这是很常见的。如果你不是完全在黑暗中摸索,那么首先勾勒出我们的想法确实很有帮助,但是你只是将“重试”从代码转移到了纸上


如果它能帮助你找到一个好的解决方案,那怎么可能是错的呢?

这取决于我对问题空间的了解程度。如果它是熟悉的领域,那么我会担心它是否需要10次迭代。如果它是不熟悉的领域,那么可能需要多达10次迭代,但至少其中一些迭代在被丢弃之前会被简化为原型,或者尝试一个原型。

完全正常。不管我有多早的计划,每当我的手碰到键盘时,我总是会有一个“啊哈”的瞬间

就像经常出现的“我到底在想什么?”的时刻一样


一切都很好。您正在编写更好的代码。

如果您正在开始一些复杂的工作,那么在开始编写之前做一点计划似乎是个好主意


首先设计。

如果您在每次迭代中都学到了一些东西,那么可能就没有问题了。最后期限和诸如此类令人讨厌的事情可能会让你的生活变得更加困难

当我处理一个新问题时,我喜欢在实际函数处理程序中的注释中对其进行伪编码,作为为TDD生成存根的一部分。然后将代码添加到我在函数体注释中的每个步骤中


这有助于我将注意力集中在我正在解决的问题上,而不是过早地迷失在细节中。

丢弃许多代码行通常是重构的一个积极方面。太好了。但是开始十次以上意味着你可能还没有分析你的问题和解决方案。回过头来,有时重新开始是可以的,但不是经常这样。您应该以这样一种方式来布局代码,当您回溯和重构时,您将保留您创建的大部分内容,因为它将以很好的隔离和逻辑块的形式存在。(由于未指定所选语言,因此使用模糊语言。)

根据作者的评论:

通常我重新开始,因为我 被里面发生的事情弄糊涂了 我的密码


研究你的手艺,充分利用设计模式和其他最佳编程理念,为你的代码提供一个定义良好的结构。。。在接下来的几个月甚至几天里,你都会意识到这一点。

你能做的最大的改变就是首先规划你的代码。在纸上

你的计划不一定要非常深入(尽管有时这也很好)。只需大致勾勒出你希望你的程序做什么。记下关键功能点。“我要它做这个,这个和这个”

一旦你做到了,画出一个粗略的设计。类、方法、函数、对象。给它一点形式。对设计的各个部分进行粗略的功能分配


根据项目的性质,我可能会采用这样的粗略设计,并将其转化为更详细的设计。如果这是一个小项目,也许不是。但是,不管预计的复杂性如何,花在设计上的时间将使您获得更好的代码和更少的编码时间。如果您有明显的错误,需要重构程序的大部分,那么这些错误应该在初始设计中很明显,您可以对其进行调整。您不会因为一个明显的错误而浪费数百行代码。

考虑用您正在使用的任何语言(或任何语言)学习一些框架

我认为学习框架让我的代码变得更好了一百万倍。通过学习这些框架(更重要的是它们是如何工作的),我不仅学会了设计模式,还学会了如何现实地实现它们


考虑一下rails、cakephp或django(假设您使用的是脚本语言;我不知道任何桌面语言框架。对不起!)。然后看看它们是如何组合在一起的

这里所有的建议都是有效的,但是请记住,在程序的生命周期中,有一个时刻是“足够好的”。很容易陷入无休止的重构陷阱,仅仅因为你看到“是的,这可以做得更好!”。好吧,面对事实——除非你的程序只有几行,否则总有办法做得更好

我相信有一些快乐的程序员不会因此而痛苦,但至少我需要不断提醒自己,有一句话叫做“足够好”

尤其是当你在为别人编写代码时——没有人会注意到你做了一些“更好”的事情,重要的是“它工作得好吗?”

另外,一个非常好的实践是至少在重写之前让它工作起来。然后,您可以始终返回到以前的工作解决方案


(12年来,我一直在重写我正在编写的一个游戏,而我还远没有接近尾声……

编译器是非常复杂的应用程序,你不可能在一个过程中从头到尾编写一个优化编译器——不管你一开始花了多少心思。通常,您会尝试从开始到结束都让某些东西正常工作,然后返回模块化并添加新功能,如优化。这个过程意味着大量的重构和彻底替换整个部分。这也是学习过程的一部分——没有人知道