Catalog
github/java-refactoring-extract-method

github

java-refactoring-extract-method

Refactoring using Extract Methods in Java Language

v1.0Latest
New~857Updated Jun 26, 2026

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

Files1
1 files · 1.0 KB

Select a file to preview

Overall Score

68/100

Grade

C

Adequate

Safety

82

Quality

65

Clarity

72

Completeness

52

Summary

A code analysis and refactoring skill that teaches an agent how to apply the Extract Method refactoring pattern to Java code. The skill provides two detailed before/after examples, defines clear complexity thresholds (LOC > 15, NOM > 10, CC > 10), and instructs the agent to identify methods exceeding these limits, extract cohesive code blocks into new methods, and return fully compilable Java 17 code.

Detected Capabilities

code analysiscode transformationjava parsingcomplexity measurementcode output generation

Trigger Keywords

Phrases that MCP clients use to match this skill to user intent.

extract method refactoringjava complexity reductionreduce cyclomatic complexityimprove code readabilitymethod cohesionrefactor legacy java

Use Cases

  • Refactor complex Java methods for readability
  • Extract code blocks into reusable methods
  • Improve method cohesion and reduce coupling
  • Analyze and reduce cyclomatic complexity in Java
  • Enhance Java code testability through method extraction
  • Apply refactoring patterns to legacy Java code

Quality Notes

  • Clear, concrete examples show before/after patterns with real Java code
  • Explicit complexity thresholds (LOC, NOM, CC) guide the agent's analysis
  • Well-defined output format: single compilable Java code block
  • Strong emphasis on preserving functionality ('do not remove any functionality')
  • Instructions for intermediate analysis steps (identify, extract, output) are methodical
  • Missing example of the complete refactoring workflow with code input → analysis → output
  • No guidance on edge cases (e.g., what if method is just under threshold, private vs public extraction)
  • No mention of naming strategies for extracted methods beyond 'descriptive'
  • Skill terminates abruptly with 'Now, assess all methods...' but provides no actual code to refactor
Model: claude-haiku-4-5-20251001Analyzed: Jun 26, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Use github/java-refactoring-extract-method in your dev environment

Command Palette

Search for a command to run...