Claude Agent Skill · by Github

Java Refactoring Extract Method

Claude Code's java-refactoring-extract-method skill guides developers through applying the Extract Method refactoring pattern to Java code, helping them break d

Install
Terminal · npx
$npx skills add https://github.com/github/awesome-copilot --skill java-refactoring-extract-method
Works with Paperclip

How Java Refactoring Extract Method fits into a Paperclip company.

Java Refactoring Extract Method drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.

S
SaaS FactoryPaired

Pre-configured AI company — 18 agents, 18 skills, one-time purchase.

$27$59
Explore pack
Source file
SKILL.md104 lines
Expand
---name: java-refactoring-extract-methoddescription: 'Refactoring using Extract Methods in Java Language'--- # 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:```javapublic FactLineBuilder setC_BPartner_ID_IfValid(final int bpartnerId) {	assertNotBuild();	if (bpartnerId > 0) {		setC_BPartner_ID(bpartnerId);	}	return this;}``` ## Code After Refactoring 1:```javapublic 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:```javapublic 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:```javapublic 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**