Refactoring 009 - Protect Public Attributes

Maxi Contieri - Oct 25 '22 - - Dev Community

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

TL;DR: Avoid external manipulation

Problems Addressed

  • Encapsulation Violation

  • Anemic Models

Related Code Smells

Steps

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

Sample Code

Before

public class Song {
   String artistName;
   String AlbumName;
}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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 code is better?

We can change encapsulated code easily.

The code is not repeated.

Limitations

Some languages don't have visibility options.

Tags

  • Anemic

Related Refactorings

Credits

Image by Couleur on Pixabay


This article is part of the Refactoring Series.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .