Skip to content

Latest commit

 

History

History
27 lines (14 loc) · 2.43 KB

5.object-and-data-structure.md

File metadata and controls

27 lines (14 loc) · 2.43 KB

Object and Data Structures

Description:

In this learning session, I explored the concepts of objects and data structures within the context of clean coding techniques. Here are the key points I learned:

Data Abstraction:

I understood the importance of data abstraction, which involves encapsulating data and providing methods to interact with that data. By abstracting data, we can hide implementation details and expose only the necessary behavior, promoting information hiding and modularity.

Data/Object Anti-symmetry:

I learned about the principle of data/object anti-symmetry. Data structures tend to expose their internal data and provide no or minimal behavior, while objects encapsulate data and provide methods for interaction. The choice between data structures and objects depends on the specific needs of the system and the level of abstraction required.

Law of Demeter:

I explored the Law of Demeter, which guides how objects should interact with other objects. The law suggests that objects should only communicate with their immediate neighbors and avoid invoking methods on objects obtained through other objects (known as train wrecks). This principle promotes loose coupling, encapsulation, and maintainability.

Train Wrecks, Hybrids, and Hiding Structure:

I learned about the dangers of using train wrecks, which involve chaining multiple method calls on different objects in a single line of code. Train wrecks can lead to fragile code and tight coupling between objects. I also learned about the concept of hybrids, which combine the characteristics of data structures and objects, potentially violating the principles of clean coding. Additionally, I understood the importance of hiding internal structure to maintain abstraction and prevent dependencies on the implementation details of data structures.

DTO (Data Transfer Object) and Active Record:

I gained knowledge about DTOs, which are objects used to transfer data between different layers or components of a system. DTOs focus on the data and typically provide no behavior. I also learned about the Active Record pattern, where an object encapsulates both data and behavior for a particular entity, often used in database systems.

By understanding the concepts of objects and data structures, as well as the principles such as the Law of Demeter, I gained insights into designing code that promotes abstraction, encapsulation, modularity, and maintainability.