We may earn an affiliate commission when you visit our partners.
Course Discontinued We've found some alternatives for you:

Top Active Alternatives

Defensive Coding in C# is no longer accepting new enrollments. We've matched the highest-rated active courses in this subject:

Course image
Deborah Kurata
This course is no longer available. Find something similar by browsing:
Defensive Coding Clean Code Maintainable Code Testable Code Legacy Code

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Introduces learners to modern software development best practices in front-end coding including deployment, maintenance, testing, and production support
Taught by Deborah Kurata, who is a recognized software developer with experience in the field
Covers industry-standard topics and techniques related to writing code
Provides practical guidance for software developers working in fast-paced environments with changing requirements
Requires that learners come in with some background knowledge of coding before taking the course

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Career center

Learners who complete Defensive Coding in C# will develop knowledge and skills that may be useful to these careers:
Software Engineer
A Software Engineer designs, develops, and maintains software systems. This course will help build a foundation in defensive coding practices, which are essential for writing clean, maintainable, and testable code. By learning how to write code that is robust and resilient to errors, Software Engineers can help ensure that their systems are reliable and secure.
Software Architect
A Software Architect designs and oversees the construction of software systems. This course will help build a foundation in defensive coding practices, which are essential for writing clean, maintainable, and testable code. By learning how to write code that is robust and resilient to errors, Software Architects can help ensure that their systems are reliable and secure.
Computer Programmer
A Computer Programmer writes and maintains code for software systems. This course will help build a foundation in defensive coding practices, which are essential for writing clean, maintainable, and testable code. By learning how to write code that is robust and resilient to errors, Computer Programmers can help ensure that their systems are reliable and secure.
Quality Assurance Analyst
A Quality Assurance Analyst tests software systems for errors and defects. This course will help build a foundation in defensive coding practices, which are essential for writing clean, maintainable, and testable code. By learning how to write code that is robust and resilient to errors, Quality Assurance Analysts can help ensure that software systems are reliable and secure.
Software Development Manager
A Software Development Manager oversees the development of software systems. This course will help build a foundation in defensive coding practices, which are essential for writing clean, maintainable, and testable code. By learning how to write code that is robust and resilient to errors, Software Development Managers can help ensure that their teams are producing high-quality software.
Technical Lead
A Technical Lead leads a team of software engineers in the development of software systems. This course will help build a foundation in defensive coding practices, which are essential for writing clean, maintainable, and testable code. By learning how to write code that is robust and resilient to errors, Technical Leads can help ensure that their teams are producing high-quality software.
Data Scientist
A Data Scientist uses data to solve business problems. This course may be useful for Data Scientists who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help Data Scientists ensure that their code is reliable and secure, which is important for ensuring the accuracy and integrity of their data analysis.
Database Administrator
A Database Administrator manages and maintains databases. This course may be useful for Database Administrators who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help Database Administrators ensure that their code is reliable and secure, which is important for ensuring the integrity of the data in their databases.
Systems Analyst
A Systems Analyst designs and implements software systems. This course may be useful for Systems Analysts who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help Systems Analysts ensure that their code is reliable and secure, which is important for ensuring the reliability and security of the systems they design and implement.
Web Developer
A Web Developer designs and develops websites. This course may be useful for Web Developers who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help Web Developers ensure that their code is reliable and secure, which is important for ensuring the security and reliability of the websites they develop.
Mobile Developer
A Mobile Developer designs and develops mobile applications. This course may be useful for Mobile Developers who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help Mobile Developers ensure that their code is reliable and secure, which is important for ensuring the security and reliability of the mobile applications they develop.
Embedded Software Engineer
An Embedded Software Engineer designs and develops software for embedded systems. This course may be useful for Embedded Software Engineers who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help Embedded Software Engineers ensure that their code is reliable and secure, which is important for ensuring the safety and reliability of the embedded systems they develop.
Game Developer
A Game Developer designs and develops video games. This course may be useful for Game Developers who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help Game Developers ensure that their code is reliable and secure, which is important for ensuring the stability and performance of the video games they develop.
Artificial Intelligence Engineer
An Artificial Intelligence Engineer designs and develops artificial intelligence systems. This course may be useful for Artificial Intelligence Engineers who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help Artificial Intelligence Engineers ensure that their code is reliable and secure, which is important for ensuring the safety and reliability of the artificial intelligence systems they develop.
DevOps Engineer
A DevOps Engineer develops and maintains the software development lifecycle. This course may be useful for DevOps Engineers who want to learn how to write clean, maintainable, and testable code. Defensive coding practices can help DevOps Engineers ensure that their code is reliable and secure, which is important for ensuring the reliability and security of the software development lifecycle.

Reading list

We've selected 43 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Defensive Coding in C#.
Foundational text for anyone looking to understand the principles and practices of writing clean code. It provides numerous code examples (primarily in Java) to illustrate good and bad code, making it highly practical. It is widely considered a must-read for developers seeking to improve the readability, maintainability, and testability of their code and is often recommended for both beginners and experienced programmers.
Is essential for understanding how to improve the design of existing codebases without changing their external behavior. It introduces the concept of 'code smells' and provides a catalog of refactorings with step-by-step instructions and examples (updated in the second edition with JavaScript). It crucial resource for developers working with legacy code or aiming to improve the internal quality of their software.
Provides in-depth coverage of defensive programming techniques in Java, including secure coding and threat modeling.
Provides a comprehensive set of coding standards and best practices for C++ development. It covers topics such as naming conventions, code organization, and error handling. Adhering to coding standards is essential for writing maintainable and consistent code.
This academic book explores the principles and practices of sustainable software development, focusing on maintainability and evolution. It provides a comprehensive overview of the challenges and techniques involved in maintaining and evolving software systems over time.
While not solely focused on 'Clean Code,' this book offers a broad range of practical advice for becoming a better developer, including tips on writing maintainable and understandable code. It emphasizes a pragmatic approach to software development, covering topics like taking responsibility for your work, continuous learning, and effective communication within teams. is valuable for developers at all levels and complements the technical aspects of clean code with essential professional practices.
As a follow-up to the classic 'Working Effectively with Legacy Code,' this book by Michael Feathers likely delves into more advanced or alternative techniques for dealing with particularly challenging legacy code situations. It offers further insights from a leading authority on the topic.
Classic guide to test-driven development, written by one of the pioneers of the practice.
The German translation of Kent Beck's book on Test-Driven Development. This allows German-speaking readers to learn the practice of TDD, a crucial skill for safely making changes to and understanding legacy codebases.
Effective unit testing is fundamental to working with legacy code. provides patterns and practices for writing good unit tests, which is essential for gaining confidence when making changes to untested or poorly tested legacy systems. While not solely about legacy code, the focus on practical unit testing makes it highly relevant.
This classic book introduces fundamental object-oriented design patterns that provide proven solutions to recurring design problems. Understanding these patterns is crucial for writing clean, flexible, and maintainable code, especially in object-oriented languages. While published in 1994, the principles remain highly relevant and form a significant part of the foundation for good software design.
Offers a practical approach to refactoring by focusing on small, incremental changes. This aligns well with the strategy of making small, safe modifications to legacy code. It provides clear examples and guidelines for identifying opportunities for refactoring and executing them effectively.
Presents a concise and opinionated perspective on software design, emphasizing the importance of managing complexity. It offers practical advice on creating modules and interfaces that are easy to understand and use, contributing to cleaner code at a higher level of abstraction. It's a relatively recent book that offers fresh insights into software design principles.
Focusing specifically on test code, this book provides a catalog of patterns for designing and refactoring unit tests. As adding and improving tests is crucial for working with legacy code, this book offers in-depth guidance on making test suites more maintainable and effective. It's a valuable resource for developers writing tests for existing systems.
Delves into agile software development practices, including topics like TDD, refactoring, and design patterns, all of which are highly relevant to working with legacy code. While it uses C# examples, the principles are broadly applicable. It helps in understanding how agile methodologies can be applied to improve existing systems.
The latest addition to Robert C. Martin's 'Clean' series, this book delves into the disciplines, standards, and ethics that define a software craftsman. It reinforces the importance of writing clean code as part of a broader commitment to professional excellence. It's a contemporary perspective on the values and practices necessary for high-quality software development.
Focuses on the professionalism and ethics of software development, extending the concepts of clean code to the behavior of a programmer. It discusses topics like estimating, coding, refactoring, and testing from a professional's perspective. It's a valuable read for anyone looking to elevate their approach to software development beyond just technical skills.
Explores heuristics and principles for writing code that is easy for developers to understand and reason about. It focuses on managing cognitive load and designing code that 'fits in your head,' which key aspect of maintainable and clean code. It offers practical advice based on the author's extensive experience.
A seminal work in software engineering, this book introduces the concept of design patterns and provides a catalog of reusable solutions to common software design problems. Understanding design patterns can greatly enhance the maintainability and extensibility of code.
Provides a comprehensive guide to the Java programming language, covering best practices, design patterns, and coding conventions. It valuable resource for Java developers who want to write maintainable and effective code.
この本は、ソフトウェアの保守性を向上するためのリファクタリングの手法について説明しています。リファクタリングは、コードの動作を変えずに構造を改善する技術であり、ソフトウェアの保守性を向上させる上で重要な役割を果たします。
Provides a practical guide to test-driven development, covering topics such as test design, test automation, and continuous integration.
Classic guide to software development, covering topics such as writing testable code, design patterns, and code reviews.
Specifically addresses the challenges and strategies for transforming legacy software systems. It covers various approaches to remediation and evolution, including refactoring, re-architecting, and replacement. It provides a higher-level view of legacy system modernization. While potentially less hands-on than Feathers' book, it's valuable for understanding strategic options.
Provides practical guidance and best practices for writing clean code, with a focus on eliminating complexity. It aims to simplify the coding process and improve code quality through actionable techniques. It's a good resource for developers looking for straightforward advice on improving their coding habits.
Applies the principles of clean code specifically to the Python programming language. It provides Python-specific examples and covers topics relevant to writing clean and maintainable Python code, including refactoring techniques. It's a valuable resource for Python developers looking to improve their code quality.
Explores the concepts and challenges of building systems using microservices. Often, modernizing legacy systems involves breaking them down into smaller services. This book provides guidance on this process, including strategies for decomposition and integration, which are directly applicable when dealing with monolithic legacy applications. The second edition is recently published and covers contemporary topics.
Legacy systems often involve complex and poorly designed databases. addresses the specific challenges of refactoring databases in an evolutionary manner. It provides techniques and strategies for improving database schemas without disrupting existing applications, which is highly relevant when dealing with the database component of legacy systems.
Focuses on modeling complex domains in software. Understanding the domain is often a major challenge with legacy code. DDD principles can provide valuable insights into deciphering the implicit domain logic within a legacy system and help guide refactoring efforts towards a more understandable and maintainable design.
A classic in software engineering, this book offers timeless insights into managing complex software projects. While not directly about legacy code, its discussions on project management, communication, and the challenges of scale are highly relevant when dealing with large, aging systems. It provides essential historical context and enduring principles.
Explores the concept of software craftsmanship, advocating for a higher standard of professionalism and technical excellence in software development. It aligns with the philosophy behind clean code, emphasizing the importance of writing high-quality code as a core tenet of the profession. It provides a broader perspective on the values and practices of a skilled software developer.
Focuses on the practices and principles of continuous delivery, which includes a strong emphasis on automated testing and building a deployment pipeline. While not directly about writing clean code, the practices described in this book, particularly comprehensive testing, contribute significantly to maintaining code quality over time. It's relevant for teams and individuals looking to improve their software delivery process.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Defensive Coding in C#.
Integrating Test-Driven Development into Your Workflow
Most relevant
C# Developers: Learn the Art of Writing Clean Code
Most relevant
Programming Design Patterns For Unity: Write Better Code
Most relevant
Clean Code
Most relevant
Unit Testing Dotnet (.NET) Application with xUnit .net &...
Most relevant
API in C#: The Best Practices of Design and Implementation
Most relevant
Advanced C++ Mocking Using Google Mock 1
Most relevant
Unit Testing Legacy Code in Java SE 8
Most relevant
Domain-Driven Design: Working with Legacy Projects
Most relevant

Pluralsight Buyer Protection & Guarantee

Verified partner policies & purchase protections

Enterprise Technology Platform
Free Trial & Audit

10-Day Free Trial

10-day free trial (up to 200 minutes of content) with access to the Skills video library and skill assessments. Cancel before day 10 to avoid automatic conversion.

Return & Refund Policy

Cancel Anytime (Non-Refundable Once Billed)

Cancel easily online anytime before the 10-day trial expires to prevent billing. Once subscription fees are paid, individual subscriptions are non-refundable (cancellation stops future renewals).

Buyer Protections

Verified Academic & Industry Partner

Skill IQ and Role IQ diagnostic benchmark assessments, hands-on lab environments, and curated learning paths designed by technology leaders.

Key Purchase Protections
10-day free trial on individual Skills plans
Skill IQ assessments to benchmark proficiency
Cancel anytime online before trial ends without fees
Hands-on interactive labs and enterprise-grade tech content
OpenCourser Verified Partner Policy details last reviewed: 2026-10-22
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser