java-refactoring-extract-method▌
github/awesome-copilot · updated Apr 27, 2026
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
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
javablock. - 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.
Ratings
4.7★★★★★52 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