在重构教学时很好的例子?

时间:2009-07-27 19:23:58

标签: refactoring

我正在为一些同事运行重构代码dojo,他们询问重构和模式是如何组合在一起的,我需要一个示例代码库。任何人都知道一个好的起点,不是可怕的,他们无法做出代码的正面或反面,但可以改写他们的方式有用的东西?

9 个答案:

答案 0 :(得分:17)

我实际上建议重构一些你和你的同事的代码。

总有一些地方可以重构现有的代码库,熟悉现有的代码将有助于让它感觉更像是一个有用的东西而不像练习。如果可能的话,在公司的代码中找一些用作示例的内容。

答案 1 :(得分:10)

以下是一些代码,包括原始代码和重构代码,因此您可以准备kata,或者只是在执行重构后比较结果:

  1. 我的书既有较短的例子又有较长的例子,实际上是一本很长的例子。代码可免费下载。
    VB Code Examples
    C# Code Examples

  2. 来自nice example

  3. Refactoring Workbook
  4. 互联网上有很多像Tic-Tac-Toe或Snake等简单游戏的例子,它们有很多气味,但很简单,可以从重构开始。

    < / LI>

答案 2 :(得分:3)

Martin Fowler的第一章“重构”是重构的一个很好的起点。当我在学校的一位老师使用这个例子时,我理解了大部分概念。

答案 3 :(得分:1)

你的同事的一般知识水平是什么?

基本的代码重复应该很容易包围。两段(几乎)相同的代码,可以重构为可重用的方法,类,等等。使用您自己的代码库中的(过去)示例会很好。

答案 4 :(得分:1)

答案 5 :(得分:0)

我建议您为特定需求开发一个简单的示例项目。

然后再添加一个需求并对现有类进行更改。您继续这样做,并向他们展示如何在代码设计不当时难以进行每次更改。这将使他们轻松实现,因为这就是那些人们在日常工作中所做的事情。让他们意识到,如果从一开始就没有遵循模式和原则,他们最终会如何最终陷入混乱。

当他们意识到这一点,那么你从头开始或重构现有的混乱代码。现在添加一个要求并让他们意识到很容易在重构的代码中做出改变,所以你只需要测试一个几节课。一个改变不会影响其他人等等。

您可以使用计算机,键盘和打印机类作为示例。添加要求,例如,您将希望计算机从鼠标读取,然后还有一个要求可能就像您的计算机希望将其保存在硬盘而不是打印。最后你的重构代码应该是,你的计算机类应该依赖于抽象输入设备类和输出设备类。你的键盘类应继承自Inputdevice类。

答案 6 :(得分:0)

  • 当代码执行设计正确的功能时,重构是非功能性的要求,但是难以调试,需要更多的维护工作和一些性能瓶颈。重构是为了易于维护,提高可读性并提高效率。

因此,我们需要关注标准,使代码更易读,易于维护。

  • 很明显,拥有非常大的方法/功能可能很难理解。
  • 在调试时,类依赖于其他数百个类最糟糕的东西。
  • 代码应该像阅读某些工作流程一样可读。

您还可以使用声纳等工具来帮助您识别关键标准,例如“Cyclomatic Complexity”

http://www.sonarsource.org/managing-cyclomatic-complexity-to-increase-maintainability/

你要求他们自己编写代码并检查工具如何重构。 除此之外,您可以在eclipse中编写代码,并且有可用的选项可以为您重构... enter image description here

答案 7 :(得分:0)

有点过时(2003),但是IBM在http://www.ibm.com/developerworks/library/os-ecref/

有几个重构示例(在Eclipse中工作[ed?])

答案 8 :(得分:0)

我很喜欢Refactoring Guru个例子。 在那里你也可以找到设计模式的例子。