Duck Typing

Table of Contents

1. Overview

  • Definition: Duck typing is a concept in programming where an object's suitability is determined by the presence of certain methods and properties rather than the actual type of the object itself.
  • Origin: The term derives from the saying "If it looks like a duck and quacks like a duck, it must be a duck." It emphasizes behavior (methods and attributes) over explicit class definitions.
  • Languages: Commonly used in dynamically typed languages such as Python, Ruby, and JavaScript, where type checking occurs at runtime.
  • Advantages:
    • Flexibility: Allows for greater code reusability and polymorphism.
    • Simplified Code: Reduces the need for explicit type declarations and interfaces.
  • Disadvantages:
    • Runtime Errors: Can lead to runtime errors if an object does not meet the anticipated structure.
    • Documentation Challenge: May obscure the expected interface of objects, making it harder to understand the code.
  • Comparison to Static Typing:
    • In static typing, types are checked at compile-time, providing earlier detection of type-related errors but reduced flexibility.
    • In contrast, duck typing favors runtime evaluation, prioritizing flexibility at the cost of potentially increased errors.

1.0.1. Misc

  • Polymorphism: Duck typing facilitates polymorphism, allowing different types of objects to be processed through the same interface.
  • Design Patterns: Certain design patterns, such as Strategy and Adapter, may benefit from duck typing by allowing different object types to interact seamlessly.
Tags::plt:cs: