BAB 04

04 - AI untuk Code Review dan Refactoring

Estimasi Waktu: 35-45 menit Prasyarat: 01-ai-assisted-coding.md


Apa Itu Materi Ini?

Materi ini membahas penggunaan AI untuk code review dan refactoring. AI bisa menjadi β€œreviewer pertama” yang cepat sebelum code masuk ke human review, dan bisa membantu mengidentifikasi kode yang perlu di-refactor beserta strategi perbaikannya.


Tujuan Pembelajaran

Setelah mempelajari materi ini, kamu akan mampu:


1. AI sebagai Reviewer Pertama

Posisi AI dalam Code Review Process

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          CODE REVIEW PROCESS DENGAN AI                   β”‚
β”‚                                                         β”‚
β”‚  Developer writes code                                  β”‚
β”‚       β”‚                                                 β”‚
β”‚       β–Ό                                                 β”‚
β”‚  AI REVIEW (cepat, comprehensive)                       β”‚
β”‚  - Security issues                                      β”‚
β”‚  - Best practices                                       β”‚
β”‚  - Potential bugs                                       β”‚
β”‚  - Performance                                          β”‚
β”‚       β”‚                                                 β”‚
β”‚       β–Ό                                                 β”‚
β”‚  Developer fixes AI findings                            β”‚
β”‚       β”‚                                                 β”‚
β”‚       β–Ό                                                 β”‚
β”‚  HUMAN REVIEW (context, design, business logic)         β”‚
β”‚  - Architecture decisions                               β”‚
β”‚  - Business logic correctness                           β”‚
β”‚  - Team conventions                                     β”‚
β”‚       β”‚                                                 β”‚
β”‚       β–Ό                                                 β”‚
β”‚  MERGE                                                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2. Template Prompt untuk Code Review

Template: Comprehensive Review

Review kode berikut secara menyeluruh:

```[bahasa]
[paste kode]

Review dari aspek berikut:

  1. BUGS & CORRECTNESS

    • Logic errors
    • Off-by-one errors
    • Null/undefined handling
    • Race conditions (jika async)
    • Resource leaks
  2. SECURITY

    • Input validation
    • SQL injection
    • XSS vulnerabilities
    • Authentication/Authorization issues
    • Sensitive data exposure
  3. PERFORMANCE

    • Unnecessary loops
    • Memory leaks
    • Inefficient algorithms
    • Missing caching opportunities
  4. MAINTAINABILITY

    • Readability
    • Naming conventions
    • Function length
    • Complexity (cyclomatic)
    • DRY violations
  5. BEST PRACTICES

    • Language/framework specific
    • Error handling patterns
    • Logging practices

Untuk setiap issue:


### Template: Security-Focused Review

Review kode ini SECARA KHUSUS untuk security vulnerabilities:

[kode]

Framework: [misal: Express.js, Django, Spring Boot]

Periksa OWASP Top 10:

  1. Injection (SQL, NoSQL, Command)
  2. Broken Authentication
  3. Sensitive Data Exposure
  4. XML External Entities
  5. Broken Access Control
  6. Security Misconfiguration
  7. Cross-Site Scripting (XSS)
  8. Insecure Deserialization
  9. Using Components with Known Vulnerabilities
  10. Insufficient Logging & Monitoring

Untuk setiap vulnerability yang ditemukan:


### Template: Performance Review

Analisis performa kode berikut:

[kode]

Context:

Analisis:

  1. Big O complexity untuk setiap operasi
  2. Bottleneck identification
  3. Memory usage patterns
  4. Database query efficiency
  5. Caching opportunities

Berikan:


---

## 3. Refactoring dengan AI

### Kapan Perlu Refactoring?

TANDA KODE PERLU REFACTORING: β”œβ”€β”€ Fungsi terlalu panjang (> 20-30 baris) β”œβ”€β”€ Duplikasi kode (copy-paste di banyak tempat) β”œβ”€β”€ Nama yang tidak deskriptif β”œβ”€β”€ Komentar yang menjelaskan WHAT, bukan WHY β”œβ”€β”€ Nested conditionals yang dalam (> 3 level) β”œβ”€β”€ God class/function (melakukan terlalu banyak hal) β”œβ”€β”€ Magic numbers tanpa konstanta └── Tight coupling antar komponen


### Template: Refactoring Request

Refactor kode berikut untuk meningkatkan readability dan maintainability:

[kode asli]

Tujuan refactoring:

Constraints:

Berikan:

  1. Kode yang sudah di-refactor
  2. Penjelasan setiap perubahan dan mengapa
  3. Perbandingan sebelum/sesudah untuk bagian kunci

### Template: Design Pattern Application

Kode berikut menggunakan pendekatan prosedural yang sulit di-maintain:

[kode]

Identifikasi design pattern yang cocok dan refactor:

  1. Identifikasi masalah structural
  2. Rekomendasikan design pattern yang sesuai
  3. Implement pattern-nya
  4. Jelaskan benefit dari pattern yang dipilih
  5. Tunjukkan bagaimana pattern ini memudahkan extension di masa depan

---

## 4. Teknik Refactoring dengan AI

### Teknik 1: Step-by-Step Refactoring

Jangan minta AI refactor semua sekaligus. Lakukan bertahap:

Prompt 1: β€œIdentifikasi 3 masalah terbesar di kode ini dan urutkan berdasarkan dampak.”

Prompt 2: β€œRefactor masalah pertama saja. Jelaskan perubahan dan pastikan behavior tidak berubah.”

Prompt 3: β€œSekarang refactor masalah kedua. Pastikan tidak mengganggu perbaikan pertama.”

dst.


### Teknik 2: Comparison Review

β€œSaya ingin membandingkan dua pendekatan untuk masalah yang sama:

Pendekatan A: [kode A]

Pendekatan B: [kode B]

Bandingkan dari:

Rekomendasikan mana yang lebih baik dan mengapa.”


### Teknik 3: Legacy Code Modernization

Kode berikut adalah legacy code yang perlu di-modernisasi:

[kode lama]

Target: [misal: migrasi dari JavaScript ke TypeScript, atau dari callback ke async/await, atau dari class component ke hooks]

Rencanakan migrasi:

  1. Identifikasi semua area yang perlu berubah
  2. Buat migration plan langkah demi langkah
  3. Untuk setiap langkah, berikan kode sebelum dan sesudah
  4. Identifikasi risiko di setiap langkah
  5. Berikan strategy untuk testing di setiap tahap migrasi

---

## 5. Keterbatasan AI dalam Code Review

### AI Tidak Bisa:
- Memahami business context penuh
- Menilai apakah kode memenuhi requirement bisnis
- Memahami konvensi tim yang tidak tertulis
- Menjalankan kode dan melihat performa nyata
- Memahami dependencies di seluruh codebase
- Menilai UX impact dari perubahan kode

### Best Practice: AI + Human Review

AI REVIEW: HUMAN REVIEW:

AI cepat tapi superficial Human lambat tapi contextual ↓ ↓ └─────────── COMPLEMENTARY β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


---

## Latihan (~15 menit)

### Pilihan A: Review Kode Sendiri
Ambil kode yang pernah kamu tulis dan gunakan template Comprehensive Review. Evaluasi temuan AI - ada yang valid? Ada yang terlewat?

### Pilihan B: Refactoring Challenge
Cari kode yang perlu di-refactor (bisa dari internet atau projectmu). Gunakan AI untuk merencanakan dan mengeksekusi refactoring bertahap.

### Pilihan C: Security Audit
Ambil kode yang menangani user input dan gunakan template Security-Focused Review. Implement perbaikan yang direkomendasikan.

---

## Poin-Poin Utama

1. **AI adalah reviewer pertama** yang cepat dan comprehensive, bukan pengganti human review
2. **Review dari banyak aspek**: bugs, security, performance, maintainability, best practices
3. **Refactoring bertahap** lebih aman daripada big-bang refactor
4. **Selalu pastikan behavior tidak berubah** setelah refactoring
5. **Security review** sangat penting - AI bisa menemukan vulnerabilities yang terlewat
6. **AI + Human review** adalah kombinasi terbaik - masing-masing melengkapi kekurangan
7. **Kamu tetap bertanggung jawab** atas kode yang di-commit

---

## Informasi Materi

- **Lisensi:** CC BY-NC-SA 4.0