![]() |
1
7
丢弃许多行代码通常是重构的一个积极方面。那太好了。但是,从10次开始可能意味着你还没有分析过你的问题和解决方案。可以回溯,有时重新开始,但不是经常这样。您应该以这样的方式安排代码:当您回溯和重构时,您将保留所创建的大部分内容,因为它将以很好的隔离和逻辑块的形式存在。(使用模糊语言,因为没有指定所选语言。) 作者评论:
学习您的技巧,并充分利用设计模式和其他最好的编程哲学,以便为您的代码提供一个定义良好的结构…这是一个你能识别的东西,在路上的几个月甚至几天。 |
![]() |
2
6
如果你开始做一些复杂的事情,一点计划 之前 你开始写作似乎是个好主意。 设计 第一。 |
![]() |
3
4
完全正常。不管我有多大的计划,我经常会有一个“啊哈!”当手碰到键盘的时候。 就像经常说的“我到底在想什么?”时刻。 一切都很好。您正在生成更好的代码。 |
![]() |
4
2
然而,这里的所有建议都是有效的,请记住,在程序生命周期中有一个“足够好”的时刻。很容易陷入一个永不结束重构的陷阱,因为您看到“是的,这可以做得更好!”好吧,面对现实——除非你的程序只有几行代码,否则总会有更好的方法。 我相信有一些快乐的程序员不会因此而受苦,但至少我需要不断提醒自己,有一条线被称为“足够好”。 如果你在为别人编写代码,那就更为正确了——没有人会注意到你做了一些“更好”的事情,但最重要的是“它能很好地工作吗?”. 另外,一个非常好的实践至少是在重写之前让它工作。然后,您可以返回到以前的有效解决方案。 (12年来,我一直在重写我正在写的一个游戏,而我离游戏的结局还差得很远…) |
![]() |
5
1
在一个复杂的问题上,这是很常见的。如果你不是完全在暗中捅刀子,那么先勾画出我们的想法真的很有帮助,但是你又把“重试”从代码转移到了纸上。 如果它能帮助你找到一个好的解决方案,那怎么可能是错误的呢? |
![]() |
6
1
这取决于我对问题空间的了解程度。如果这是一个熟悉的领域,那么如果它需要10次迭代,我会很担心。如果这是一个不熟悉的领域,那么它可能需要10次迭代,但至少其中一些迭代会在被丢弃之前被简化为原型——或者尝试原型。 |
![]() |
7
1
如果您在每次迭代中都学到了一些东西,那么可能没有问题。最后期限和类似的烦人的事情可能会让你的生活变得更困难。:) 当我处理一个新问题时,我喜欢在实际函数处理程序的注释中对其进行伪代码,作为为我的TDD生成存根的一部分。然后将代码添加到我在函数体注释中所做的每个步骤中。 这有助于我集中精力解决我正在解决的问题,而不是过早地迷失在细节中。 |
![]() |
8
1
你能做的最大的改变就是 规划你的代码 第一。在纸上。 你的计划不需要非常深入(尽管有时也很好)。只需简单地勾画出一个你想要你的程序做什么的大致想法。记下关键功能点。 “我要它做这个,这个和这个” . 一旦你有了这个,就画出一个粗略的设计。类、方法、函数、对象。给它一点形式。对设计的各个部分做一个粗略的功能分配。 根据项目的性质,我可能会采用这样的粗略设计,并将其转化为更详细的设计。如果这是一个小项目,也许不是。但不管计划的复杂性如何, 花在设计上的时间 将用更好的代码和更少的编码时间奖励您。如果有明显的错误需要重构程序的大部分,那么它们在初始设计中应该很明显,您可以对其进行调整。你不会因为一个明显的错误而浪费数百行代码。 |
![]() |
9
1
编译器是非常复杂的应用程序,你不能一次完成一个优化编译器的编写——不管你起初有多考虑。通常,您尝试从一开始就让某个东西正常工作,然后返回模块化,并添加诸如优化之类的新功能。这个过程意味着大量的重构和彻底替换整个部分。这也是学习过程的一部分-因为没有人能了解和记住一切! (作为mosa项目的一部分,我还在开发.NET编译器——www.mosa-projet.org。) |
![]() |
10
1
在纸上解决你的问题。…别急着打字。 |
![]() |
11
1
有两种情况。(1)我已经能够自信地提前计划并孤立我的抽象。(2)我没有。 对于(1),一种有效的技术是放入某些类或函数的虚拟版本,以驱动代码的其余部分。(或者相反,编写所说的类和函数,并用测试脚本驱动它们。)这只允许您处理每个过程中复杂性的一部分。 尽管每个人都说人们应该提前计划,但通常情况下计划并不是这样做的,从而导致情况(2)。在这里,请注意在一次代码迭代中管理您试图完成的工作。一旦你发现你的大脑无法处理你正在做的所有事情,在下一次编译和测试之前,缩小你对你想要实现的目标的野心。允许您的代码有缺陷,但在第一次通过时很容易编写,然后通过重构进行开发。这比反复擦拭石板提高了效率。 例如,我陷入混乱的一种方法是在我真正了解代码的形状之前,过早地嗅出普通代码并重构为子例程。从那以后,我就开始允许自己在第一次传递时复制代码,然后返回并将其分解为子例程。它起了巨大的作用。 |
![]() |
12
1
它被称为重构伙伴,这很好,你只需要限制它,这样你就不会浪费你所有的时间重构你拥有的代码,而不是写新的代码。 必须重构的一些原因是:
|
![]() |
13
0
考虑用你使用的任何语言(或任何语言)学习一些框架。 我认为学习框架使我的代码提高了一百万倍。通过学习框架(更重要的是它们是如何工作的),我不仅学到了设计模式,还学到了如何实际地实现它们。 考虑一下Rails、Cakephp或Django(假设您使用的是脚本语言;我不知道任何桌面语言框架)。对不起!)然后看看它们是如何组合在一起的。 |
![]() |
Seymour · R-使用函数更好地组织程序工作流和过程 7 年前 |
|
Nils Kuhnhenn · 失明如何影响你的编码风格?[已关闭] 7 年前 |
![]() |
staad · 多个孤立分支或独立存储库-git 7 年前 |
![]() |
Mahmoud · 如何在EZPublish中配置工作流? 8 年前 |
![]() |
Tom Hanson · MS CRM:检查子工作流的状态 8 年前 |
![]() |
fbarriga · NetSuite工作流 9 年前 |