Will that “one-time” script still make sense when you need it next week? Maintainability means making code easier to understand, change, and correct later. It matters even for small scripts: unclear names and leftover comments slow down their original writer, while inconsistent practices accumulate across a team. section 1.1.2 section 1.1
Before calling code finished, ask:
- Are variable, function, and file names clear and consistent? Are related files organized as the project grows? section 1.1.2 section 1.1.1
- Are comments current, with commented-out code removed? Misleading comments can be worse than none. section 1.1.2
- Is repeated code a candidate for refactoring? A shared portion gives you one place to change and test. section 1.1.2 section 13.3.3
- Does each component use a data model suited to its needs? An ill-fitting model can make a project hard to maintain. section 4.5.4
Make a class’s state visible
If a task gets `status` only when `complete()` runs, reading `task.status` beforehand raises `AttributeError`. Initialize it in `__init__` instead, alongside the other attributes: ```python class Task: def __init__(self, title): self.title = title self.status = "created" self.tags = [] def complete(self): self.status = "completed" ``` Now a reader can scan `__init__` to see what every new task has, and `status` is available before completion. section 8.1.3
Prefer choices that make errors easy to locate. A named function appears by name in a traceback; an assigned lambda appears only as `<lambda>`. For a simple sorting key, pass an existing function directly—`sorted(integers, key=abs)`—rather than wrapping it in a lambda. In tests, move repeated setup into `unittest.TestCase.setUp` so test methods can share it without duplicating the preparation. section 7.1.3 section 13.3.3
Maintainability is a habit, not a final cleanup pass. Keep checking readability as you work, use version control to manage changes, and organize even a small app’s interface and supporting data models so the project remains navigable. section 1.1.1 section 1.1.2 section 14.4.10






