Follow the Don't Repeat Yourself (DRY) principle when designing class hierarchies. Extract common functionality into base classes and avoid duplicating state or methods in subclasses. When extending a class, delegate to parent implementations rather than redefining functionality.
Follow the Don’t Repeat Yourself (DRY) principle when designing class hierarchies. Extract common functionality into base classes and avoid duplicating state or methods in subclasses. When extending a class, delegate to parent implementations rather than redefining functionality.
Examples of issues to avoid:
// AVOID: Duplicating state in subclass
public class TransformAuto extends Transform {
@Nullable
private CameraPosition cameraPosition; // Duplicate of parent state
@UiThread
public CameraPosition getCameraPosition() {
if (cameraPosition == null) {
cameraPosition = invalidateCameraPosition();
}
return cameraPosition;
}
}
// BETTER: Delegate to parent
public class TransformAuto extends Transform {
// No duplicate cameraPosition variable
@UiThread
public CameraPosition getCameraPosition() {
return super.getCameraPosition(); // Delegate to parent
}
}
For similar implementations across different technologies (e.g., GL and Vulkan renderers), extract shared code into common base classes. This improves maintainability and prevents bugs from inconsistent implementations.
Enter the URL of a public GitHub repository