Context as a Variable: The Architecture Killing Context Rot / Le contexte comme variable : L'architecture contre la dégradation du contexte
🇫🇷 Version Française
Le “Context Rot” (dégradation du contexte) est un défi majeur dans les systèmes complexes où les décisions passées deviennent obscures. En traitant le contexte comme une variable explicite plutôt qu’implicite, nous pouvons créer des systèmes plus résilients et maintenables.
Résumé exécutif et points clés
- Contexte explicite : Sortir le contexte de l’ombre pour le rendre manipulable.
- Dépendances réduites : Réduire le couplage temporel et logique.
- Maintenance facilitée : Un système qui explique ses propres décisions.
Approche technique
L’idée est d’injecter explicitement le contexte via des interfaces plutôt que de compter sur des variables globales ou des états cachés. Voici une représentation simplifiée :
interface ExecutionContext {
traceId: string;
userId: string;
metadata: Map<string, any>;
}
function processRequest(data: any, ctx: ExecutionContext) {
// Le contexte est maintenant une variable passée explicitement
console.log(`Processing for ${ctx.userId}`);
}
🇬🇧 English Version
“Context Rot” occurs when the hidden assumptions and environment data of a system degrade over time, leading to technical debt. By elevating context to a first-class variable, you turn implicit system behavior into an explicit, trackable architecture.
Executive Summary & Key Takeaways
- Explicit Context : Stop relying on implicit environmental assumptions.
- Decoupling : Passing context as an object reduces reliance on side effects.
- Observability : Easier debugging because the state is always passed along.
Technical Deep-Dive
Moving away from static dependencies toward a dependency-injection pattern ensures that every function knows exactly what the environment looks like at the time of execution.
interface ExecutionContext {
traceId: string;
userId: string;
metadata: Map<string, any>;
}
function processRequest(data: any, ctx: ExecutionContext) {
// Context is now an explicit variable passed through the call stack
console.log(`Processing for ${ctx.userId}`);
}
Conclusion & Resources
Treating context as a variable makes your system deterministic and testable. Always favor explicit flow over hidden environmental states to combat architectural decay.