Skip to content

Refactoring and Code QualityActivities & Teaching Strategies

Students learn refactoring best when they see messy code firsthand and discuss how to improve it. Active learning lets them analyze real examples, practice incremental changes, and recognize why clean code matters for maintenance and teamwork. This hands-on approach builds both technical skills and professional judgment.

11th GradeComputer Science4 activities20 min35 min

Learning Objectives

  1. 1Analyze common code smells in a given code snippet and identify specific areas needing refactoring.
  2. 2Evaluate the impact of refactoring on code readability and maintainability using qualitative and quantitative metrics.
  3. 3Justify proposed refactoring strategies by referencing established software design principles.
  4. 4Compare the 'before' and 'after' versions of refactored code to demonstrate improved structure without altered functionality.
  5. 5Create a refactored version of a small program that addresses identified code smells.

Want a complete lesson plan with these objectives? Generate a Mission

30 min·Small Groups

Gallery Walk: Code Smell Identification

Post five code samples around the room, each demonstrating a different code smell (long method, duplicate code, magic numbers, deeply nested logic, poor naming). Student groups rotate and annotate each sample with the smell they identify and a suggested fix. Debrief as a class to build a shared catalog of smells.

Prepare & details

Explain the purpose and benefits of code refactoring.

Facilitation Tip: During the Gallery Walk, circulate with a checklist of common smells so students practice looking for concrete patterns, not just general opinions.

Setup: Wall space or tables arranged around room perimeter

Materials: Large paper/poster boards, Markers, Sticky notes for feedback

UnderstandApplyAnalyzeCreateRelationship SkillsSocial Awareness
35 min·Pairs

Pair Programming: Live Refactor

Partners take turns being the 'driver' and 'navigator' while refactoring a provided messy function. The navigator identifies smells and suggests changes; the driver implements them. After 10 minutes they swap roles. Both write a brief reflection on what changed and why it's better.

Prepare & details

Analyze common 'code smells' that indicate a need for refactoring.

Facilitation Tip: For the Pair Programming Live Refactor, set a strict 5-minute timer for each tiny change to reinforce incremental progress and small tests.

Setup: Presentation area at front, or multiple teaching stations

Materials: Topic assignment cards, Lesson planning template, Peer feedback form, Visual aid supplies

UnderstandApplyAnalyzeCreateSelf-ManagementRelationship Skills
25 min·Individual

Before/After Code Review

Show students a before-and-after refactoring pair and ask them to write three specific observations about what improved. Then have them apply the same thinking to their own code from a previous project. Volunteers share one refactoring they made and explain the reasoning.

Prepare & details

Justify refactoring decisions based on principles of code readability and maintainability.

Facilitation Tip: In the Before/After Code Review, require students to write a one-sentence summary of what changed and why, to focus their observations on impact rather than just surface edits.

Setup: Presentation area at front, or multiple teaching stations

Materials: Topic assignment cards, Lesson planning template, Peer feedback form, Visual aid supplies

UnderstandApplyAnalyzeCreateSelf-ManagementRelationship Skills
20 min·Whole Class

Refactoring Debate: Is It Worth It?

Present a scenario: a working but messy 200-line function that needs a small feature added. Half the class argues for adding the feature directly; the other half argues for refactoring first. Groups build their case, present it, and the class votes. Discuss how context (deadline, team size, codebase age) affects the right answer.

Prepare & details

Explain the purpose and benefits of code refactoring.

Facilitation Tip: In the Refactoring Debate, assign roles in advance so students prepare arguments for or against refactoring under time pressure.

Setup: Presentation area at front, or multiple teaching stations

Materials: Topic assignment cards, Lesson planning template, Peer feedback form, Visual aid supplies

UnderstandApplyAnalyzeCreateSelf-ManagementRelationship Skills

Teaching This Topic

Teach refactoring as a daily habit, not a one-time project. Use real student code or anonymized classroom examples to keep discussions relevant and authentic. Emphasize that refactoring is about reducing future costs, not fixing present bugs. Model curiosity: ask students to explain what they see and why it matters, then guide them toward cleaner solutions through targeted prompts rather than direct fixes.

What to Expect

By the end of these activities, students should confidently identify code smells, apply small refactoring steps, and explain how improved code structure benefits future work. They should also weigh trade-offs between refactoring and immediate delivery, showing informed decision-making.

These activities are a starting point. A full mission is the experience.

  • Complete facilitation script with teacher dialogue
  • Printable student materials, ready for class
  • Differentiation strategies for every learner
Generate a Mission

Watch Out for These Misconceptions

Common MisconceptionDuring the Gallery Walk: Code Smell Identification, students may claim refactoring means rewriting everything.

What to Teach Instead

Use the Gallery Walk’s examples to point out that each smell has a small, focused fix—like renaming a variable or extracting a method—so students see refactoring as a series of targeted improvements rather than a complete rewrite.

Common MisconceptionDuring the Pair Programming: Live Refactor, students may skip tests and change behavior while refactoring.

What to Teach Instead

Require pairs to write and run a quick test after every small change, using the activity’s shared testing environment to confirm behavior stays the same before moving on.

Common MisconceptionDuring the Refactoring Debate: Is It Worth It?, students may argue that if code works, refactoring is unnecessary.

What to Teach Instead

Use the debate’s discussion prompts to have students calculate the cost of future bugs or onboarding time caused by unreadable code, tying refactoring directly to maintainability and team efficiency.

Assessment Ideas

Quick Check

After the Gallery Walk: Code Smell Identification, present a new code snippet with 2-3 smells. Ask students to identify each smell and write one sentence explaining why it increases maintenance cost or bug risk.

Peer Assessment

After the Pair Programming: Live Refactor, have students exchange their refactored code and use a rubric to assess whether readability improved and behavior was preserved, citing specific lines as evidence.

Discussion Prompt

During the Refactoring Debate: Is It Worth It?, facilitate a whole-class discussion where students compare their decisions about refactoring under deadline pressure, using the factors they considered in their debate roles.

Extensions & Scaffolding

  • Challenge: Give students a complex function with multiple smells and ask them to refactor it into three smaller, cohesive functions with tests.
  • Scaffolding: Provide a template with pre-labeled smells and suggested refactorings to reduce cognitive load during the Gallery Walk.
  • Deeper exploration: Have students research and present on one advanced refactoring pattern, such as Extract Class or Replace Conditional with Polymorphism.

Key Vocabulary

RefactoringThe process of restructuring existing computer code without changing its external behavior. It aims to improve non-functional attributes of the software.
Code SmellA surface indication in the source code that usually corresponds to a deeper problem in the system. Examples include long methods or duplicate code.
MaintainabilityThe ease with which software can be understood, modified, and tested. Refactoring aims to increase maintainability.
ReadabilityThe ease with which human readers can comprehend the purpose, control flow, and operation of source code. Refactoring often improves readability.
Technical DebtThe implied cost of rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer. Refactoring helps pay down technical debt.

Ready to teach Refactoring and Code Quality?

Generate a full mission with everything you need

Generate a Mission