RailsConf 2024 - What's in a Name: From Variables to Domain-Driven Design by Karynn Ikeda

Explore the semiotics of naming in Rails development, uncovering how language and domain-driven design can lead to better code organization, maintainability, and scalability.

Key takeaways
  • Names act as signs communicating to the machine and fellow programmers, but can be misinterpreted, leading to bugs.
  • Domain-driven design starts with language and understanding how names function.
  • Signs can contain signs, and relationships between higher-level signs (like classes) matter just as much as lower-level signs.
  • The relationship between the signifier (the name) and the signified (what it represents) is crucial.
  • Renaming can be expensive and introduce semantic debt.
  • We can leverage our understanding of language to design systems that are easily read and self-explaining.
  • Semiotics is the study of signs and their use and interpretation.
  • Domain-driven design refers to designing systems that mirror the real world in some way.
  • Naming conventions can help with semantic coupling and organization.
  • We should group code by function, and classes encapsulate variable and method names.
  • Compound words in English and Ruby’s convention of using underscores instead of camelCase can provide insights into how we organize our code.
  • Domain-driven design helps us understand how to create a framework for talking about systems.
  • Technical debt can arise when we don’t consider the semantic interactions between different parts of a system.
  • Metaphors can be useful in software development, but we should be cautious when using them.
  • Semantics and domain-driven design can help us create more holistic systems.
  • Domain-driven design is not just about modeling the real world, but also about understanding the relationships between different parts of a system.
  • Technical debt can arise when we don’t consider the semantic interactions between different parts of a system.
  • Domain-driven design can help us create more maintainable and scalable systems.