Modular Code with Examples in C# - Ian Cooper - NDC London 2026

Modular Code with Examples in C# - Ian Cooper - NDC London 2026

🎙 Ian Cooper 👥 227K 📅 February 26, 2026 ⏱ 67 min 👁 9K 📄 expert opinion 🧭 2026-08-13
Available in: English (current) Français

Keywords

modularityC#assembliesinformation hidingcoupling

Summary

Ian Cooper’s talk at NDC London 2026 addresses the practical implementation of modular code in C#. He begins by citing Glenford Myers’ observation that while modularity’s benefits are widely praised, guidance on achieving it is scarce. Cooper defines modules as responsibility assignments with hidden implementation details, emphasizing information hiding, reduced coupling, and black-box design. He contrasts deep modules (narrow interface, rich implementation) with shallow ones, advocating for deep modules. In C#, he argues that methods and classes are modules, but assemblies are the primary mechanism for modularity, as they enforce visibility boundaries (public, internal, private). He warns against using namespaces or folder structures for modularity and against overusing ‘public’ or ‘InternalsVisibleTo’ for testing. He stresses that tests should target the module’s public interface, not its internals, and that refactoring changes implementation details without altering the public contract. He also clarifies that modules are not layers; layers are dependency rules. The talk includes examples from a role-playing game automation project, illustrating modular slicing, and touches on architectural styles like CQRS, ports & adapters, and vertical slices, concluding with modular monoliths and macroservices.

181 words

Critical Evaluation

Value of the Information & Strength of the Argument

The talk provides valuable, actionable guidance on modularity, a topic often discussed abstractly. Cooper grounds his arguments in classic software engineering literature (Parnas, Myers, Ousterhout) and practical C# examples. He clearly explains concepts like information hiding, coupling, and deep vs. shallow modules, and demonstrates how to apply them in C# using assemblies and access modifiers. The argumentation is coherent and persuasive, though it relies on anecdotal experience rather than empirical evidence. The emphasis on testing the module’s public interface and avoiding coupling to implementation details is a strong, practical point. The discussion of modules vs. layers clarifies a common misconception. Overall, the talk offers substantial value for developers seeking to improve code maintainability.

Scientific Rigor, Source Quality, Title Accuracy

The talk references established sources: Glenford Myers (1978), David Parnas, and John Ousterhout’s ‘A Philosophy of Software Design’. These are credible and relevant. However, no specific URLs or citations are provided in the talk itself; the description only includes conference links. The title accurately reflects the content, focusing on modular code with C# examples. The talk is a practitioner’s perspective rather than a rigorous academic review, but it aligns with well-known principles. No comments were provided for analysis.

206 words

Title / Content Match

The title accurately reflects the content: the talk focuses on modular code with C# examples.

Quality & Reliability

8/10

The talk is based on established software engineering principles (Parnas, Myers, Ousterhout) and practical C# examples. The speaker is an experienced practitioner. However, it is an opinion/experience-based talk without formal citations or empirical data.

Key Moments

Cited Sources

  • NDC Conferences — Conference organizer and talk source
  • NDC London — Conference where the talk was recorded

Concurring Sources

Contribution & Novelties

The talk provides a practical, C#-specific approach to modularity, bridging classic principles with modern development practices. It offers concrete advice on using assemblies, access modifiers, and testing strategies to achieve information hiding and reduce coupling. The emphasis on testing the module’s public interface rather than internals is a valuable reminder for TDD practitioners. The talk also clarifies the distinction between modules and layers, a common source of confusion.

Pour aller plus loin :

125 words

Radar Profile

The radar profile shows high scores in information quantity, quality, and reliability, with a slightly lower technical level, indicating a talk that is informative and credible but not overly technical. The balance suggests a practical, experience-based presentation suitable for a broad developer audience.

Reliability 8/10