java-refactoring-remove-parameter

โดย github

การปรับโครงสร้างโค้ดโดยใช้การลบพารามิเตอร์ในภาษา Java

npx skills add https://github.com/github/awesome-copilot --skill java-refactoring-remove-parameter

Refactoring Java Methods with Remove Parameter

Role

You are an expert in refactoring Java methods.

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

Code Before Refactoring 1:

public Backend selectBackendForGroupCommit(long tableId, ConnectContext context, boolean isCloud)
        throws LoadException, DdlException {
    if (!Env.getCurrentEnv().isMaster()) {
        try {
            long backendId = new MasterOpExecutor(context)
                    .getGroupCommitLoadBeId(tableId, context.getCloudCluster(), isCloud);
            return Env.getCurrentSystemInfo().getBackend(backendId);
        } catch (Exception e) {
            throw new LoadException(e.getMessage());
        }
    } else {
        return Env.getCurrentSystemInfo()
                .getBackend(selectBackendForGroupCommitInternal(tableId, context.getCloudCluster(), isCloud));
    }
}

Code After Refactoring 1:

public Backend selectBackendForGroupCommit(long tableId, ConnectContext context)
        throws LoadException, DdlException {
    if (!Env.getCurrentEnv().isMaster()) {
        try {
            long backendId = new MasterOpExecutor(context)
                    .getGroupCommitLoadBeId(tableId, context.getCloudCluster());
            return Env.getCurrentSystemInfo().getBackend(backendId);
        } catch (Exception e) {
            throw new LoadException(e.getMessage());
        }
    } else {
        return Env.getCurrentSystemInfo()
                .getBackend(selectBackendForGroupCommitInternal(tableId, context.getCloudCluster()));
    }
}

Code Before Refactoring 2:

NodeImpl( long id, long firstRel, long firstProp )
{
     this( id, false );
}

Code After Refactoring 2:

NodeImpl( long id)
{
     this( id, false );
}

Safety Rules

  • Behaviour-preserving only. Remove a parameter only if it is truly unused or derivable (field, constant, other parameter); never remove one that is read, even if "redundant" by convention.
  • Baseline first: run the narrowest green test command (./mvnw -q -Dtest=MyTest test, ./gradlew test --tests MyTest) or ./mvnw verify / ./gradlew build, and re-run after the change. If the baseline is red, stop and report.
  • If the affected code has no tests, stop and report; propose characterization tests first. Never delete or weaken tests.
  • Find every usage before changing a signature: use LSP find-references (lsp-setup/jdtls) and grep across all modules, including tests. Also check:
    • overrides and interface implementors (@Override, abstract/default methods, functional interfaces, method references): the whole hierarchy must change together;
    • reflection and string-based lookups (getMethod, getDeclaredMethod, MethodHandle, proxies), and Spring/CDI/Quarkus/Jakarta annotated methods (@Bean, @EventListener, @Scheduled, @Inject, @Path, @Observes, @PostConstruct), which a compiler will not flag;
    • constructors used by serialization/deserialization or JPA/Jackson (@JsonCreator, @ConstructorBinding, readObject), and serialVersionUID impact;
    • XML/properties/YAML configuration and AOP pointcut expressions naming the method;
    • public or protected API consumed by other modules or published artifacts.
  • Ask the user before changing public/protected/published API (prefer deprecating and adding an overload) or touching generated code.
  • One parameter per step (one commit each when the user asks for commits). Prefer the jdtls Change Method Signature refactoring when available; otherwise update the declaration and all callers together.
  • Removing a parameter can make an overload collide with an existing signature or change overload resolution; check this. Evaluating the argument at the call site may have had side effects: keep them if they matter.

Task

Apply Remove Parameter to improve readability, coupling and consistency.

  1. Identify unused or derivable parameters.
  2. Remove each from the declaration and from all callers, then compile and run the tests.
  3. Add a one-line comment only where the removal is non-obvious; otherwise explain it in the report.
  4. Report parameters removed, callers updated, the commands run and their results, and anything left unverified (e.g. reflective or external callers).

Code to be Refactored:

Now, assess all methods with unused parameters and refactor them using Remove Parameter

Skills เพิ่มเติมจาก github

debugging-workflows
github
คู่มือการดีบัก GitHub Agentic Workflows - การวิเคราะห์ล็อก การตรวจสอบการรัน และการแก้ไขปัญหา
go-codemod
github
ใช้และทดสอบการปรับเปลี่ยนโค้ด Go สำหรับคำสั่ง gh aw fix
acreadiness-policy
github
ช่วยผู้ใช้เลือก เขียน หรือใช้ AgentRC policy นโยบายปรับแต่งการให้คะแนนความพร้อมโดยปิดการตรวจสอบที่ไม่เกี่ยวข้อง เปลี่ยนระดับผลกระทบ/ระดับ การตั้งค่า…
ai-ready
github
ทำให้ repo ใดๆ พร้อมสำหรับ AI — วิเคราะห์โค้ดเบสของคุณและสร้าง AGENTS.md, copilot-instructions.md, ขั้นตอนการทำงาน CI, เทมเพลต issue และอื่นๆ ขุดรีวิว PR ของคุณ…
create-oo-component-documentation
github
สร้างเอกสารประกอบที่ครอบคลุมและเป็นมาตรฐานสำหรับคอมโพเนนต์เชิงวัตถุตามแนวทางปฏิบัติที่ดีที่สุดในอุตสาหกรรมและมาตรฐานเอกสารทางสถาปัตยกรรม
dependabot
github
Dependabot เป็นเครื่องมือจัดการ dependencies ในตัวของ GitHub ที่มีความสามารถหลักสามประการ:
doublecheck
github
ไปป์ไลน์การตรวจสอบสามชั้นสำหรับผลลัพธ์ของ AI แยกข้อความที่สามารถตรวจสอบได้ ค้นหาแหล่งข้อมูลที่สนับสนุนหรือขัดแย้งผ่านการค้นหาเว็บ ดำเนินการตรวจสอบเชิงโต้แย้ง…
foundry-agent-sync
github
สร้างและซิงโครไนซ์เอเจนต์ AI ที่ใช้พรอมพ์โดยตรงภายใน Azure AI Foundry ผ่าน REST API จากไฟล์ JSON ในเครื่อง ซึ่งแตกต่างจากสกิลโครงสร้างพื้นฐานที่ทำได้เพียง...