ousterhout-build-deep

โดย Rob Zappยังไม่มีการติดตั้งยังไม่มีการถูกใจอัปเดตเมื่อ 21 กันยายน 2569หมวดหมู่: วิศวกรรม

ทำอะไรได้บ้าง

ใช้ในขณะที่เขียนหรือแก้ไขโค้ด ก่อนที่จะเรียกงานว่าเสร็จสมบูรณ์ เมื่อใดก็ตามที่การเปลี่ยนแปลงเพิ่มชื่อที่ส่งออกหรือนำเข้าได้ สร้างโมดูล คลาส คอมโพเนนต์ ตัวช่วย ฮุก เซอร์วิส หรือห่อหุ้ม หรือรวมโค้ดที่ซ้ำกันไว้ตรงกลาง รายการตรวจสอบสำหรับผู้เขียนในการสร้างโมดูลเชิงลึก: ตั้งชื่อการตัดสินใจที่ขอบเขตซ่อนอยู่ ผ่านการทดสอบความลึกและความไม่เปลี่ยนแปลง แก้ไขปัญหาแทนการย้ายที่ หลีกเลี่ยงการแบ่งแยกโดยใช้ขนาดเพียงอย่างเดียว และจบด้วยบันทึกการออกแบบสั้นๆ คู่มือที่กระชับสำหรับ ousterhout-quality-program ซึ่งยังคงเป็นเลนส์ตรวจสอบแบบเต็มรูปแบบ

การติดตั้งจะเปิดรายการนี้ในแอปเดสก์ท็อป AgentsRoom ของคุณ หากยังไม่ได้ติดตั้งแอป ระบบจะพาคุณไปยังหน้าดาวน์โหลด

SKILL.md

---
name: ousterhout-build-deep
description: ใช้ในขณะที่เขียนหรือแก้ไขโค้ด ก่อนที่จะเรียกงานว่าเสร็จสมบูรณ์ เมื่อใดก็ตามที่การเปลี่ยนแปลงเพิ่มชื่อที่ส่งออกหรือนำเข้าได้ สร้างโมดูล คลาส คอมโพเนนต์ ตัวช่วย ฮุก เซอร์วิส หรือห่อหุ้ม หรือรวมโค้ดที่ซ้ำกันไว้ตรงกลาง รายการตรวจสอบสำหรับผู้เขียนในการสร้างโมดูลเชิงลึก: ตั้งชื่อการตัดสินใจที่ขอบเขตซ่อนอยู่ ผ่านการทดสอบความลึกและความไม่เปลี่ยนแปลง แก้ไขปัญหาแทนการย้ายที่ หลีกเลี่ยงการแบ่งแยกโดยใช้ขนาดเพียงอย่างเดียว และจบด้วยบันทึกการออกแบบสั้นๆ คู่มือที่กระชับสำหรับ ousterhout-quality-program ซึ่งยังคงเป็นเลนส์ตรวจสอบแบบเต็มรูปแบบ
---

# Build it deep (Ousterhout, author-time)

คุณกำลังเขียนโค้ด ไม่ใช่ตรวจสอบโค้ด ให้รันโค้ดนี้กับการเปลี่ยนแปลงของคุณเองก่อน
ที่จะบอกว่างานเสร็จสมบูรณ์

## 1. Gate

การเปลี่ยนแปลงนี้เพิ่มชื่อที่ส่งออก/นำเข้าได้ สร้างโมดูล คลาส
คอมโพเนนต์ ตัวช่วย hook บริการ หรือ wrapper หรือรวมโค้ดที่ซ้ำกันไว้กลางหรือไม่?
ถ้าไม่ ให้ข้ามทักษะนี้ไป การเปลี่ยนชื่อ codemods การแก้ไข config/data และการแก้ไขบรรทัดเดียว
ได้รับการยกเว้น

## 2. ก่อนเขียนขอบเขต

- หาวิธีที่ repo นี้แก้ปัญหารูปแบบนี้อยู่แล้วและทำตาม
  เว้นแต่คุณจะบอกได้ว่าทำไมไม่ทำตาม อ่านเอกสารและประเภทของ dependency ปัจจุบัน:
  API ที่จำจากความทรงจำเป็นแค่คำกล่าวอ้าง ไม่ใช่แหล่งข้อมูล
- เขียนคอมเมนต์อินเทอร์เฟซก่อน: สิ่งที่มันสัญญา สิ่งที่มันซ่อน ถ้าคุณ
  ไม่สามารถตั้งชื่อการตัดสินใจที่ซ่อนได้ (รูปแบบ นโยบาย กฎ หรือ
  ตัวเลือก schema) ขอบเขตนั้นไม่ควรมีอยู่ ฝังไว้ในบรรทัดเดียว
- ตั้งชื่อด้วยภาษาของโดเมน ถ้าชื่อที่ตรงที่สุดคือ `utils`,
  `helpers` หรือ `manager` แสดงว่าการตัดแบ่งผิดที่

## 3. สองการทดสอบ

- **ความลึก.** อินเทอร์เฟซต้องซ่อนมากกว่าที่เปิดเผยอย่างมีนัยสำคัญ
  wrapper ที่ส่งต่ออาร์กิวเมนต์ของมันเป็นภาระโดยไม่มีประโยชน์; ให้ลบทิ้ง
- **ความคงที่.** ดึงโค้ดที่ใช้ร่วมกันออกมาเฉพาะเมื่อมันปกป้องกฎที่ใช้ร่วมกัน
  หลักฐานคือการเปลี่ยนแปลงร่วมกัน: สำเนาถูกแก้ไขหรือเปลี่ยนพร้อมกันใน
  ประวัติ ลักษณะที่คล้ายกันแต่เปลี่ยนแปลงแยกกันจะยังคงซ้ำกัน

## 4. การแก้ไขต้องลบปัญหา ไม่ใช่ย้ายที่

- การแปลงหกครั้งที่ย้ายมาอยู่ใน helper แปลงแบบ generic หนึ่งตัวก็ยังเป็น
  การแปลงหกครั้ง เขียน mapper ที่มี type ที่การแปลงเหล่านั้นเคยปกปิดไว้
- อย่าเพิ่มพารามิเตอร์หรือแฟลกที่ผลักดันการตัดสินใจไปยังผู้เรียก
  เว้นแต่ผู้เรียกรู้บางอย่างที่คุณไม่รู้ ดูดซับกรณียากไว้ข้างใน
- ชอบความหมายที่กรณีผิดพลาดไม่เกิดขึ้น แทนที่จะทำให้ผู้เรียกทุกคน
  ต้องจัดการมัน
- การย้ายความซับซ้อนสำคัญของโดเมนไปยังไฟล์อื่นไม่ใช่การทำให้เรียบง่าย

## 5. ภายใต้แรงกดดัน "ทำความสะอาดนี้" หรือ "ไฟล์นี้ใหญ่เกินไป"

อย่าแยกเพียงเพราะขนาด โมดูล 400 บรรทัดที่ซ่อนการตัดสินใจหนึ่งอย่าง
ดีกว่าโมดูล 100 บรรทัดสี่โมดูลที่รั่วไหลการเชื่อมต่อเดียวกัน ถามว่าการแยก
แต่ละครั้งซ่อนการตัดสินใจอะไรไว้ ถ้าไม่มี อย่าแยก

## 6. ความปลอดภัย

โค้ดที่มีอยู่: ยืนยันพฤติกรรมปัจจุบันด้วยการทดสอบก่อนทำให้ลึกขึ้น
โค้ดใหม่: เขียนการทดสอบที่กำหนดพฤติกรรมที่ตั้งใจไว้

## 7. รายงาน

ถ้า gate ทำงาน ให้จบข้อความสุดท้ายของคุณด้วยบันทึกการออกแบบ 2-4 บรรทัด:
ขอบเขตที่คุณเพิ่มและการตัดสินใจที่มันซ่อน; การทำซ้ำที่คุณตั้งใจปล่อยไว้และเหตุผล;
สิ่งที่ตื้นที่คุณยอมรับและเหตุผล

สำหรับการตัดสินใจที่มีข้อโต้แย้งหรือการตรวจสอบเต็มรูปแบบ ให้โหลด `ousterhout-quality-program`.

แท็ก

การออกแบบสถาปัตยกรรมการเขียนโค้ดousterhoutเวลาผู้เขียน

เจาะลึกเพิ่มเติม

ดาวน์โหลด AgentsRoom

รันเอเจนต์ AI ทั้งหมดของคุณในทุกโปรเจกต์ จากหน้าต่างเดียว

ฟรีดาวน์โหลด AgentsRoom

แอปคู่หู: ตรวจสอบเอเจนต์ของคุณได้ทุกที่

นำของคุณเอง: Claude, Codex, Antigravity CLI, หรือผู้ให้บริการ AI อื่น ๆ

รับส่วนขยาย
Chrome Web Store

ส่งข้อบกพร่องและคำขอไปยังแบ็คล็อกสาธารณะของคุณโดยตรง

หลายโปรเจกต์
ผู้ให้บริการหลายราย
หลาย agents
สถานะสด
ไฟล์ diff & commit
คู่หูมือถือ
ตัวอย่างสด
ทีมเอเจนต์
การทำงานอัตโนมัติในเบราว์เซอร์
การพัฒนาที่ขับเคลื่อนด้วย backlog
ห้องสมุดคำสั่ง
ห้องสมุดทักษะ
ดูฟีเจอร์ทั้งหมด