Boiling out Boilerplate

Boilerplate

Boilerplate

@interface Foo : NSObject {
  Bar *_bar;
}
@property (retain) Bar *bar;
@end

@implementation Foo
@synthesize bar = _bar;

- (void)dealloc {
  [_bar release];
  [super dealloc];
}
@end

149 chars

Boilerplate

 
public class Foo {

  private Bar bar;

  public Bar getBar() {
    return bar;
  }

  public void setBar(Bar bar) {
    this.bar = bar;
  }
}

98 chars

Boilerplate

 
public class Foo {

  private Bar bar;

  public Bar getBar() {
    return bar;
  }

  public void setBar(Bar bar) {
    this.bar = bar;
  }
}

98 chars

Boilerplate

 
public final class Foo {

  private final Bar bar;

  public Bar getBar() {
    return bar;
  }

  public Foo(Bar bar) {
    this.bar = bar;
  }
}

101 chars

Boilerplate

 
public final class Foo {

  private final Bar bar;

  public Bar getBar() {
    return bar;
  }

  public Foo(Bar bar) {
    this.bar = bar;
  }
}

101 chars

JSR 269

@AutoValue
public abstract class Foo {

  public abstract Bar getBar();

  public static Foo create(Bar bar) {
    return new AutoValue_Foo(bar);
  }
}





119 chars

Boilerplate

 
public final class Foo {

  private final Bar bar;

  public Bar getBar() {
    return bar;
  }

  public Foo(Bar bar) {
    this.bar = bar;
  }
}

101 chars

Lombok

@Value
public class Foo {

  Bar bar;
}









29 chars

Lombok

@Value
public class Foo {

  Bar bar;
}









29 chars

Groovy

 
class Foo {

  Bar bar
}









16 chars

Groovy

@Immutable
class Foo {

  Bar bar
}









26 chars

Talk is cheap,

show me the code!

Thank You && Q || A

Boiling out Boilerplate / DroidCon Turin 2015

By Maciej Górski

Boiling out Boilerplate / DroidCon Turin 2015

  • 2,050