• Home
  • RSS Feed
  • Log in


IntelliJ 8: Introduce Parameter Refactoring
Posted by Erik Pragt late at night: November 6th, 2008

IntelliJ 8 provides 7 new refactorings. One new powerful refactoring is the Introduce Parameter Object. The name speaks for itself: it introduces a parameter object! But what does it really do? The refactoring promotes good encapsulation. It encapsulates fields by introducing a new object for them.

For example, you might encounter or write the following piece of code:

public class Parser {
    public void parse(String firstName, String lastName) {
       // firstName and lastName handling here
    }

    public void testParser() {
        new Parser().parse("erik", "pragt");
    }
}

The method call consists of two Strings, but a better approach might be to encapsulate those fields into a new class, for example ‘Name’. This refactoring does exactly that. Just select the ‘parse’ method, go to Refactor -> Introduce Parameter Object, which will look like:

public class Name {
    private final String firstName;
    private final String lastName;

    public Name(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
}

public class Parser {
    public void parse(Name name) {
      // name handling here
    }

    public void testParser() {
        new Parser().parse(new Name("erik", "pragt"));
    }
}

After refactoring, you’re code will look like this, which is a much better typed version of the previous one!

Share

Tags: IntelliJ, intellij 8, refactoring
Filed under Java | 7 Comments »



7 Responses to “IntelliJ 8: Introduce Parameter Refactoring”



    Vikas Hazrati Says:
    Posted at: November 7, 2008 at 12:46 am

    Eclipse has it :)

    Select the parameters, Alt+Shft+T –> Introduce Parameter Object

    Reply


    Erik Pragt Says:
    Posted at: November 7, 2008 at 8:58 am

    Oh!!! Just wait for the next blog!!

    Reply


    raveman Says:
    Posted at: November 7, 2008 at 9:44 am

    I bet IntelliJ had that feature first :P lol

    Reply


    Erik Pragt Says:
    Posted at: November 7, 2008 at 10:17 am

    Well, ehhmm,…this is a *new* refactoring… But I guess it’s good that IntelliJ finally borrows something back! ;)

    Reply


    florin Says:
    Posted at: November 7, 2008 at 6:16 pm

    And then you have to introduce another “Parameter Object” to the Name class that will take two parameters:

    @Constructor
    public Person(PersonParameters parameters) {
    this.firstName = parameters.getFirstName();
    this.lastName = parameters.getLastName();
    }

    with resulting code:
    parser = new Parser(new Name(parameters));

    etc…

    is @Re-curse a reserved annotation or a keyword to be filtered?

    I love it.

    Reply


    Aziz Kadhi Says:
    Posted at: November 7, 2008 at 9:39 pm

    Which version are you using? I am using 8.0M1 and I don’t seem to be able to find it.

    Thanks

    Reply


    Aziz Kadhi Says:
    Posted at: November 7, 2008 at 9:42 pm

    Never mind. I have just learned that the final 8.0 release is out.

    Reply


Leave a Reply

Click here to cancel reply.


Xebia Sites

  • Xebia Corporate
  • Xebia France
  • Xebia India
  • Xebia Sweden

Categories

  • Java (311)
  • Agile (181)
  • General (136)
  • Scrum (67)
  • Architecture (64)
  • Testing (59)
  • Performance (46)
  • Middleware (56)
    • Deployment (38)
  • Xebia Labs (39)
  • SOA (31)
  • Podcast (31)
  • Project Management (28)
  • Tools (26)
  • Uncategorized (20)
  • lean architecture (20)
  • Quality Assurance (17)
  • Articles (13)
  • Requirements Management (13)
  • Virtualization (19)

Tag Cloud

    ACT Spring Ajax XML Scrum Moving to India agile architectuur Frameworks Grails Flex lean architecture SOA TDD lean architectuur Oracle Eclipse Agile Groovy Hibernate Architecture Scala JPA Xebia Java Javascript product owner Concurrency Control Lean Maven JPA implementation patterns

Archives

  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
Avatars by Sterling Adventures