DEV Community

Discussion on: What programming best practice do you disagree with?

Collapse
 
madani_sina profile image
Sina Madani

Getters and setters for every field, or even just getters for immutable ones. When inheritance is intended I understand the rationale but for serializable data classes, publically accessible fields should be made public.

Most of the time a final field with a getter can be made public, the only reason not to is to avoid using generics (by taking advantage of covariant return types)

Collapse
 
jckuhl profile image
Jonathan Kuhl

I've never fully understood getters and setters. If I have a field that has both a getter and a setter like so:

class Person {
   private String name;

   public String getName() {
     return this.name;
   }

   public void setName(String name) {
     this.name = name;
   }
}

Why not just make the field public? What's the point in making getters and setters and not just dealing with the field directly? I asked one instructor about this and he just said "it's better encapsulation" but I don't see it.

Collapse
 
rossdrew profile image
Ross

It allows you to validate and know when fields are accessed.

Thread Thread
 
michaeldober profile image
Michael Ober

Getters and Setters allow you to validate and normalize input. If this validation isn't needed then consider a public field.