Introduction to API
  • How to Ask Questions
  • Download Source Code
  • Join .NET Community of Students
  • Outline
  • API's Characteristics
  • Public API VS Private API
  • API Development Principles
  • Conclusion
Names
  • Outline
  • General Principles of Naming
  • Naming Conventions in .NET
  • Conclusion
Designing and Implementing Types and their Members
  • Outline
  • Class VS Structure
  • Abstract Class VS Interface
  • Implementing Abstract Classes
  • Property VS Method
  • Implementing Constructors
  • Creational Patterns VS Constructors
  • Tester-Doer Pattern
  • Conversion VS Casting Operator
  • Implementing Parameters
  • Implementing "Dispose" Pattern
  • Conclusion
Implementation Smells
  • Outline
  • Poor Naming
  • Violating Naming Conventions
  • Variable Declarations on the Top
  • Magic Numbers
  • Too Long Method
  • Poor Conditional Clauses
  • Output Parameters
  • Comments
  • Prefer Positive if-statements
  • Conclusion
Common Architectural Smells
  • Outline
  • Primitives Obsession
  • Hidden Dependencies
  • Violation of Law of Demeter
  • Temporal Coupling
  • Temporal Coupling and Immutability
  • Switch Statements
  • Conclusion
Dealing with Errors
  • Outline
  • What Does an "Error" Mean?
  • Problems with Exceptions
  • Common Misconceptions
  • Exception Handling Strategies
  • CQS Principle
  • Errors and Functional Programming
  • Pipelining by Method Chaining
  • Conclusion on Exceptions Handling
  • BCL Exceptions Types
  • Custom Exception Types
  • Conclusion
Dealing with Nulls
  • Outline
  • Problems with Nulls
  • Null Object Pattern
  • Maybe monad in C#
  • Automating Null Checks
  • Static Analysis
  • Returning IEnumerables
  • Conclusion
  • Final Test
  • BONUS LECTURE