World Congress 2026 Europe • Jul 9, 2026 • Session details

Practical tips for keeping your C# code base clean

Dennis Doomen

Is your C# codebase slowly turning into a tangled, distributed monolith? Discover pragmatic habits and architectural tweaks to shed unnecessary complexity and reclaim your code's maintainability.

Pause
Mute Enter Fullscreen
#1 about 3 min

Establishing project guidelines and HTTP logging standards

Documenting source control decisions and defining strict HTTP endpoint behaviors prevents future troubleshooting pain in production environments.

#2 about 2 min

Improving and maintaining AI prompts for code generation

Treating AI prompts as reusable skills and continuously refining them based on manual feedback ensures generated code remains human-maintainable.

#3 about 2 min

Evaluating microservices and managing package dependencies

Merging overly distributed microservices into a modular monolith and structuring packages to minimize ripple effects solves common diamond dependency problems.

#4 about 3 min

Simplifying solution structures and splitting shared projects

Consolidating projects that deploy together and splitting overly generic shared modules reduces unnecessary coupling in large codebases.

#5 about 1 min

Adopting functional folder structures for screaming architecture

Organizing folder structures by functional features rather than technical layers allows developers to instantly grasp the underlying domain architecture.

#6 about 2 min

Making classes internal by default to safely delete code

Restricting access modifiers to internal allows modern IDEs and AI tools to easily identify and confidently remove unused code.

#7 about 2 min

Writing contextual documentation for self-explanatory code limits

Adding functional comments that explain the reasoning and context behind complex logic prevents confusion for future maintainers.

#8 about 3 min

Structuring and shortening test names for readability

Grouping unit tests with nested classes and using concise, fact-based names makes pull requests and expected behavior easier to review.

#9 about 2 min

Localizing dependency injection registrations in functional modules

Grouping dependency injection registrations into extension methods within their respective functional folders prevents the root application container from becoming unmanageable.

#10 about 2 min

Applying the scouting rule and splitting pull requests

Breaking large refactoring efforts into separate commits or pull requests ensures functional changes remain easy to review and approve.

#11 about 2 min

Adopting standard branching strategies and utilizing repository forks

Moving feature branches to personal forks and adhering to established workflows like GitHub Flow keeps the main repository clean and understandable.

#12 about 2 min

Maintaining clean git histories with rebasing and fixup commits

Using interactive rebases and fixup commits avoids cluttered merge histories and enables efficient bug tracking through version control.

#13 about 2 min

Clarifying code review expectations with emoji indicators

Prefixing code review comments with specific emojis clarifies whether feedback is a strict requirement, a suggestion, or a minor nitpick.

Matching moments

1:29 min

Introduction to keeping test code clean

Gil Zilberfeld · LIVE

6:34 min

Defining the core principles of clean code

Gil Zilberfeld · LIVE

5:55 min

Evaluating generated code syntax and maintaining quality control

Phil Nash · Coffee With Developers

53 sec

Tackling code smells during routine peer code reviews

Benjamin Bischoff Benjamin Bischoff · World Congress 2024

2:01 min

Combining refactoring techniques with best programming practices

Kamila Santos · LIVE

1:52 min

Balancing technical debt and clean code practices

Stefan Lingler Stefan Lingler +1 · Coffee With Developers