0Pricing
Vibe Coding · Lesson

Keeping Code Maintainable

Structure so future-you can change it.

Keeping Code Maintainable is a free Vibe Coding lesson on CoddyKit — lesson 3 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Vibe Coding learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Code Is Read More Than It's Written

AI can generate a working app in minutes. But six weeks later, when you ask it to add a feature, messy code makes everything slower — for both you and the AI. Maintainable code is code that future-you (and future-AI) can change without fear.

This lesson is about keeping a vibe-coded project clean enough to grow.

Clear Names Beat Clever Code

The single highest-impact habit: good names. A function called calculateMonthlyTotal tells you what it does; doStuff2 tells you nothing.

AI sometimes picks lazy names. Just ask it to rename for clarity.

// Hard to follow
function d(x, y) { return x - (x * y / 100); }

// Self-explaining
function applyDiscount(price, percentOff) {
  return price - (price * percentOff / 100);
}

console.log(applyDiscount(100, 20));

Small Functions, One Job Each

A function that does five things is hard to understand and risky to change. Break work into small functions that each do one thing. When you change one, you won't accidentally break the others.

AI is happy to refactor when asked.

Refactor this function so each step is its own small, well-named function. Don't change behavior. Here it is:

function checkout(cart) {
  // calculates totals, applies discount, charges card, sends email...
  <paste the big function>
}

Return the refactored version with a short note on what each function does.

Organize Files by Purpose

A single 3000-line file is a nightmare. Group related code into folders: things about users in one place, payments in another, UI in another. You'll find code faster, and so will the AI.

Ask AI to propose a structure before you reorganize.

My project is one big app.js file. Suggest a clean folder structure for a small web app with users, products, and checkout. Show me which functions go in which file, and explain the reasoning. Don't move anything yet — just propose the layout.

Don't Repeat Yourself

When the same logic appears in three places, a bug fix means three edits — and you'll forget one. Pull repeated logic into a single shared function. This is the DRY principle: Don't Repeat Yourself.

AI loves to copy-paste, so this one needs your eye.

// Repeated formatting in many places
const a = '$' + price1.toFixed(2);
const b = '$' + price2.toFixed(2);

// One source of truth
function formatPrice(value) {
  return '$' + value.toFixed(2);
}
console.log(formatPrice(9.5), formatPrice(120));

Comment the Why, Not the What

Good code explains what it does through clear names. Comments should explain why — the reasoning that the code can't show. AI often over-comments the obvious; trim those and keep the meaningful ones.

// Noise: the code already says this
let count = 0; // set count to zero

// Useful: explains a non-obvious decision
// Stripe rounds to cents, so we store integers to avoid float errors
const amountInCents = Math.round(dollars * 100);

A README So You Don't Forget

Three months from now you won't remember how to run your own app. A README file captures the essentials: what the project is, how to install it, how to run it, and what the environment variables mean.

Have AI generate one from your code.

Read my project and write a README.md with: a one-line description, setup steps (install + run commands), required environment variables and what each is for, and how to run the tests. Keep it short and skimmable.

Keep a Consistent Style

Mixed quotes, random indentation, and inconsistent spacing make code harder to read. A formatter like Prettier auto-fixes all of that, and a linter like ESLint flags risky patterns.

You don't configure these by hand — ask AI to set them up.

Set up Prettier and ESLint for this JavaScript project. Add a "format" and a "lint" script to package.json, sensible default configs, and tell me the one command to auto-format the whole codebase.

Refactor in Small, Safe Steps

The biggest maintainability trap is rewriting everything at once and breaking the app. Instead, clean up in small steps — and lean on the tests you wrote earlier to confirm nothing broke after each change.

Tell the AI to go incrementally.

Refactor this module for readability, but do it in small steps. After each change, keep the behavior identical so my existing tests still pass. List the steps you'd take in order before changing anything.

Avoid Magic Numbers

A raw number like 0.07 buried in code is a mystery. Give it a name. Named constants make the code readable and mean you change the value in one place.

// Magic number — what is 0.07?
function withTax(price) { return price * 1.07; }

// Clear and easy to update
const TAX_RATE = 0.07;
function withTax(price) {
  return price * (1 + TAX_RATE);
}
console.log(withTax(100));

Maintainable Code Helps the AI Too

Here's the payoff specific to vibe coding: clean, well-named, well-organized code makes the AI's future answers better. When the AI can understand your structure, its edits are more accurate and it breaks fewer things.

Maintainability isn't just for humans — it's how you keep your AI partner effective as the project grows.

Quick Check

You notice the same price-formatting logic copy-pasted in seven different files. Following good maintainability habits, what should you do?

Recap: Build to Last

Maintainable code is what lets a vibe-coded project keep growing. Your habits: clear names, small single-purpose functions, organized files, DRY shared logic, meaningful comments, a README, consistent formatting via Prettier/ESLint, and small safe refactors backed by tests.

And remember: clean code makes the AI better at helping you next time. Next up: performance and cost — keeping your app fast and your bills sane.

Frequently asked questions

Is the “Keeping Code Maintainable” lesson free?

Yes — the full text of “Keeping Code Maintainable” is free to read here on the web, and the Vibe Coding course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Vibe Coding course, upgrade to CoddyKit PRO.

What will I learn in “Keeping Code Maintainable”?

Structure so future-you can change it. You practise Vibe Coding with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Vibe Coding?

No prior experience is required. Vibe Coding on CoddyKit is structured for beginners through advanced learners; this is — lesson 3 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Keeping Code Maintainable” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Vibe Coding lesson?

Yes. Every Vibe Coding lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Adding Tests with AI
  2. Security Basics for AI Code
  3. Keeping Code Maintainable
  4. Performance and Cost
← Back to Vibe Coding