java-refactoring-extract-method

github/awesome-copilot · updated Apr 27, 2026

$npx skills add https://github.com/github/awesome-copilot --skill java-refactoring-extract-method
0 commentsdiscussion
summary

Java method extraction refactoring for improved readability and maintainability.

  • Identifies methods exceeding complexity thresholds (LOC > 15, statements > 10, cyclomatic complexity > 10) and extracts logical code blocks into focused helper methods
  • Produces fully compilable Java 17 code with descriptive method names and single-line documentation comments
  • Preserves all original functionality while reducing cognitive load and improving testability through smaller, single-responsibility
skill.md

Refactoring Java Methods with Extract Method

Role

You are an expert in refactoring Java methods.

Below are 2 examples (with titles code before and code after refactoring) that represents Extract Method.

Code Before Refactoring 1:

public FactLineBuilder setC_BPartner_ID_IfValid(final int bpartnerId) {
	assertNotBuild();
	if (bpartnerId > 0) {
		setC_BPartner_ID(bpartnerId);
	}
	return this;
}

Code After Refactoring 1:

public FactLineBuilder bpartnerIdIfNotNull(final BPartnerId bpartnerId) {
	if (bpartnerId != null) {
		return bpartnerId(bpartnerId);
	} else {
		return this;
	}
}
public FactLineBuilder setC_BPartner_ID_IfValid(final int bpartnerRepoId) {
	return bpartnerIdIfNotNull(BPartnerId.ofRepoIdOrNull(bpartnerRepoId));
}

Code Before Refactoring 2:

public DefaultExpander add(RelationshipType type, Direction direction) {
     Direction existingDirection = directions.get(type.name());
     final RelationshipType[] newTypes;
     if (existingDirection != null) {
          if (existingDirection == direction) {
               return this;
          }
          newTypes = types;
     } else {
          newTypes = new RelationshipType[types.length + 1];
          System.arraycopy(types, 0, newTypes, 0, types.length);
          newTypes[types.length] = type;
     }
     Map<String, Direction> newDirections = new HashMap<String, Direction>(directions);
     newDirections.put(type.name(), direction);
     return new DefaultExpander(newTypes, newDirections);
}

Code After Refactoring 2:

public DefaultExpander add(RelationshipType type, Direction direction) {
     Direction existingDirection = directions.get(type.name());
     final RelationshipType[] newTypes;
     if (existingDirection != null) {
          if (existingDirection == direction) {
               return this;
          }
          newTypes = types;
     } else {
          newTypes = new RelationshipType[types.length + 1];
          System.arraycopy(types, 0, newTypes, 0, types.length);
          newTypes[types.length] = type;
     }
     Map<String, Direction> newDirections = new HashMap<String, Direction>(directions);
     newDirections.put(type.name(), direction);
     return (DefaultExpander) newExpander(newTypes, newDirections);
}
protected RelationshipExpander newExpander(RelationshipType[] types,
          Map<String, Direction> directions) {
     return new DefaultExpander(types, directions);
}

Task

Apply Extract Method to improve readability, testability, maintainability, reusability, modularity, cohesion, low coupling, and consistency.

Always return a complete and compilable method (Java 17).

Perform intermediate steps internally:

  • First, analyze each method and identify those exceeding thresholds:
    • LOC (Lines of Code) > 15
    • NOM (Number of Statements) > 10
    • CC (Cyclomatic Complexity) > 10
  • For each qualifying method, identify code blocks that can be extracted into separate methods.
  • Extract at least one new method with a descriptive name.
  • Output only the refactored code inside a single java block.
  • Do not remove any functionality from the original method.
  • Include a one-line comment above each new method describing its purpose.

Code to be Refactored:

Now, assess all methods with high complexity and refactor them using Extract Method

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.752 reviews
  • Hiroshi Tandon· Dec 16, 2024

    We added java-refactoring-extract-method from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Omar Kapoor· Dec 16, 2024

    Solid pick for teams standardizing on skills: java-refactoring-extract-method is focused, and the summary matches what you get after install.

  • Maya Ghosh· Nov 7, 2024

    java-refactoring-extract-method has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Sakura Gupta· Oct 26, 2024

    java-refactoring-extract-method fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Sakshi Patil· Sep 25, 2024

    java-refactoring-extract-method reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Nia Lopez· Sep 25, 2024

    java-refactoring-extract-method has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • William Menon· Sep 17, 2024

    Registry listing for java-refactoring-extract-method matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Hana Tandon· Sep 13, 2024

    We added java-refactoring-extract-method from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Ren Perez· Sep 13, 2024

    java-refactoring-extract-method reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Carlos Zhang· Sep 5, 2024

    Useful defaults in java-refactoring-extract-method — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

showing 1-10 of 52

1 / 6