ousterhout-build-deep

oleh Rob Zapp2 pemasanganBelum ada sukaDiperbarui 5 Oktober 2026Kategori: Rekayasa

Apa fungsinya

Gunakan saat menulis atau mengubah kode, sebelum menandai tugas selesai, kapan pun perubahan menambahkan nama yang diekspor atau dapat diimpor, membuat modul, kelas, komponen, helper, hook, layanan, atau pembungkus, atau memusatkan kode yang berulang. Daftar periksa saat penulisan untuk membangun modul yang mendalam: beri nama keputusan yang disembunyikan oleh batas, jalani tes kedalaman dan invarian, perbaiki masalah daripada memindahkannya, jangan pernah membagi hanya berdasarkan ukuran, dan akhiri dengan catatan desain singkat. Pendamping ringkas untuk ousterhout-quality-program, yang tetap menjadi lensa tinjauan penuh.

Pemasangan membuka entri ini di aplikasi desktop AgentsRoom Anda. Jika aplikasinya belum terpasang, Anda akan diarahkan ke halaman unduhan.

SKILL.md

---
name: ousterhout-build-deep
description: Gunakan saat menulis atau mengubah kode, sebelum menandai tugas selesai, kapan pun perubahan menambahkan nama yang diekspor atau dapat diimpor, membuat modul, kelas, komponen, helper, hook, layanan, atau pembungkus, atau memusatkan kode yang berulang. Daftar periksa saat penulisan untuk membangun modul yang mendalam: beri nama keputusan yang disembunyikan oleh batas, jalani tes kedalaman dan invarian, perbaiki masalah daripada memindahkannya, jangan pernah membagi hanya berdasarkan ukuran, dan akhiri dengan catatan desain singkat. Pendamping ringkas untuk ousterhout-quality-program, yang tetap menjadi lensa tinjauan penuh.
---

# Build it deep (Ousterhout, author-time)

Anda sedang menulis kode, bukan meninjaunya. Jalankan ini pada perubahan Anda sendiri sebelum
menganggap tugas selesai.

## 1. Gerbang

Apakah perubahan menambahkan nama yang diekspor/diimpor, membuat modul, kelas,
komponen, helper, hook, layanan atau pembungkus, atau memusatkan kode yang berulang?
Jika tidak, lewati skill ini. Penggantian nama, codemods, pengeditan konfigurasi/data dan perbaikan satu baris dikecualikan.

## 2. Sebelum Anda menulis batasan

- Temukan bagaimana repo ini sudah menyelesaikan masalah dengan bentuk ini dan ikuti
  kecuali Anda bisa menyatakan alasannya tidak. Baca dokumentasi dan tipe dependensi saat ini:
  API yang diingat dari memori adalah klaim, bukan sumber.
- Tulis komentar antarmuka terlebih dahulu: apa yang dijanjikan, apa yang disembunyikan. Jika
  Anda tidak bisa menamai keputusan tersembunyi (format, kebijakan, aturan, pilihan skema), batasan itu tidak boleh ada. Sisipkan di dalamnya.
- Namai dengan bahasa domain. Jika nama jujur satu-satunya adalah `utils`,
  `helpers` atau `manager`, pemisahannya salah tempat.

## 3. Dua tes

- **Kedalaman.** Antarmuka harus menyembunyikan jauh lebih banyak daripada yang diungkapkan. Sebuah
  pembungkus yang meneruskan argumennya adalah biaya tanpa manfaat; hapus itu.
- **Invarian.** Ekstrak kode bersama hanya ketika melindungi aturan bersama.
  Buktinya adalah perubahan bersama: salinan diperbaiki atau diubah bersama dalam
  sejarah. Yang mirip tapi berubah secara independen tetap diduplikasi.

## 4. Perbaikan harus menghilangkan masalah, bukan memindahkannya

- Enam cast yang dipindahkan ke satu helper cast generik tetap enam cast. Tulis
  pemetaan bertipe yang ditutupi oleh cast tersebut.
- Jangan tambahkan parameter atau flag yang mendorong keputusan ke pemanggil kecuali
  pemanggil benar-benar tahu sesuatu yang Anda tidak tahu. Serap kasus sulit di dalamnya.
- Utamakan semantik di mana kasus error tidak bisa muncul daripada membuat setiap
  pemanggil menanganinya.
- Memindahkan kompleksitas domain penting ke file lain bukanlah penyederhanaan.

## 5. Di bawah tekanan "bersihkan ini" atau "file ini terlalu besar"

Jangan pernah membagi hanya berdasarkan ukuran. Satu modul 400 baris yang menyembunyikan satu keputusan lebih baik
 daripada empat modul 100 baris yang membocorkan sambungan yang sama. Tanyakan keputusan apa yang disembunyikan setiap pemisahan; jika tidak ada, jangan pisah.

## 6. Keamanan

Kode yang ada: kunci perilaku saat ini dengan tes sebelum memperdalamnya. Kode baru: tulis tes yang mendefinisikan perilaku yang diinginkan.

## 7. Laporan

Jika gerbang aktif, akhiri pesan akhir Anda dengan catatan desain 2-4 baris: setiap
batasan yang Anda tambahkan dan keputusan yang disembunyikannya; duplikasi yang Anda tinggalkan dengan sengaja dan alasannya; apa pun yang dangkal yang Anda terima dan alasannya.

Untuk panggilan yang diperdebatkan atau tinjauan penuh, muat `ousterhout-quality-program`.

Tag

desainarsitekturpengkodeanousterhoutauthor-time

Bacaan lanjutan

Insinyur DevOpsPenulisPengembang FrontendTenaga PenjualanPengembang BackendCoach & PelatihArsitek Perangkat LunakPenasihat HukumInsinyur QAKeuangan & AdministrasiPengembang Full-StackDesainer KreatifPengembang MobilePenelitiInsinyur KeamananSDM & Rekrutmen
Manajer ProyekPenerjemahAhli GitAnalis DataSpesialis SEOAkuntanSpesialis LokalisasiKomunikasi & HumasPemikir KreatifOperasional & LogistikSpesialis PemasaranLayanan PelangganAsisten proyekStaf PengadaanManajer KomunitasAsisten Pribadi

Unduh AgentsRoom

Jalankan semua agen AI Anda, di semua proyek Anda, dari satu jendela.

Unduh AgentsRoomGratis

Aplikasi pendamping: pantau agen Anda saat bepergian

Gunakan Claude, Codex, Antigravity CLI, atau penyedia AI lainnya.

Dapatkan ekstensi
Chrome Web Store

Kirim bug dan permintaan langsung ke backlog publik Anda.

Agen yang dibaca seperti percakapan

Setiap agen punya peran, wajah, dan utas yang Anda baca seperti aplikasi pesan.

Tampilan percakapan

Tampilan percakapan AgentsRoom: pekerjaan agen AI coding ditampilkan sebagai utas obrolan
Beberapa proyek
Multi-penyedia
Beberapa agen
Status langsung
File diff & commit
Pendamping mobile
Pratinjau langsung
Tim agen
Otomatisasi browser
Dev berbasis backlog
Pustaka prompt
Pustaka skill
Lihat semua fitur