Skip to content

Latest commit

 

History

History
90 lines (51 loc) · 2.11 KB

File metadata and controls

90 lines (51 loc) · 2.11 KB

Refactoring 009 - Protect Public Attributes

Refactoring 009 - Protect Public Attributes

Forget about data structures, DTOs, POJOs, and anemic objects.

TL;DR: Avoid external manipulation

Problems Addressed

  • Encapsulation Violation

  • Anemic Models

Related Code Smells

Code Smell 01 - Anemic Models

Code Smell 40 - DTOs

Steps

  1. Change the visibility of your attributes from public to private.

Sample Code

Before

public class Song {
   String artistName;
   String albumName;
}

After

public class Song {
   // 1- Change the visibility of your attributes from public to private
   private String artistName;
   private String AlbumName;
  
  // We cannot access attributes until we add methods
}

Type

[X] Semi-Automatic

We can change the visibility with an IDE or text editor.

Safety

This is not a safe refactor.

Existing dependencies may break.

Why is the Code Better?

We can change encapsulated code easily.

The code is not repeated.

Limitations

Some languages don't have visibility options.

Tags

  • Anemic

Related Refactorings

Refactoring 001 - Remove Setters

Credits

Image by Couleur on Pixabay


This article is part of the Refactoring Series.

How to Improve Your Code With Easy Refactorings