I think you should chose carefully and be aware of the downsides of each.
If the class you are defining is likely to be sub-classed then take particular care to avoid being uninitialised at a time when the subclass needs you to be complete.
This may be a useful mechanism but it is, in my opinion, unpleasant.
public class A {
private int b;
public A(int b) {
_setB(b);
}
private void _setB(int b) {
this.b = b;
}
public void setB(int b) {
_setB(b);
}
}
I personally would prefer that to something like this though:
public class A {
private int b;
public A(int b) {
this.b = b;
}
public void setB(int b) {
this.b = b;
}
}