Notes & software courses · Free to learn
Aph's Blog
On this page

คุณภาพ, เอกสาร & CI

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

ทำให้โปรเจกต์ดูเป็นมืออาชีพ: README ที่ดี, linter/formatter และ CI ที่รันเทสต์อัตโนมัติ

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

README ที่ดี

README คือหน้าแรกที่คนเห็น ต้องบอก: โปรเจกต์คืออะไร, ติดตั้งยังไง, รันยังไง, ใช้ยังไง

# Task API
REST API จัดการ task ส่วนตัว พร้อมระบบ login

## ติดตั้ง
    python -m venv .venv && source .venv/bin/activate
    pip install -r requirements.txt

## รัน
    uvicorn src.app.main:app --reload
    เปิด http://localhost:8000/docs

## เทสต์
    pytest

## เทคโนโลยี
FastAPI, SQLite, pytest

Linter & Formatter (ruff/black)

เครื่องมือจัดรูปและตรวจสไตล์โค้ดอัตโนมัติ ทำให้โค้ดสม่ำเสมอทั้งทีมโดยไม่ต้องเถียงกันเรื่องรูปแบบ

bash
pip install ruff
ruff check .        # ตรวจปัญหา/สไตล์
ruff format .       # จัดรูปอัตโนมัติ
# (black เป็น formatter ยอดนิยมอีกตัว)

CI ด้วย GitHub Actions

CI (Continuous Integration) รันเทสต์อัตโนมัติทุกครั้งที่ push/เปิด PR — มั่นใจว่าโค้ดไม่พังก่อน merge สร้างไฟล์ใน .github/workflows/

yaml
# .github/workflows/test.yml
name: tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: pytest
CI สีเขียว = มั่นใจก่อน merge

เมื่อตั้ง CI แล้ว ทุก push จะรันเทสต์ให้อัตโนมัติบน GitHub ถ้าแดง (เทสต์พัง) จะเห็นทันทีก่อน merge — นี่คือสิ่งที่ทำให้ทีมกล้าแก้โค้ดร่วมกันโดยไม่กลัวพัง (รวมบท 5, 6 เข้ากับ git บท 5)

สรุปหัวข้อนี้

  • README บอก: คืออะไร / ติดตั้ง / รัน / ใช้ / เทคโนโลยี
  • ruff/black ตรวจ+จัดรูปโค้ดอัตโนมัติให้สม่ำเสมอ
  • CI (GitHub Actions) รันเทสต์อัตโนมัติทุก push/PR
  • CI เขียว = มั่นใจว่าโค้ดไม่พังก่อน merge
แบบฝึกหัด

1) เขียน README ให้โปรเจกต์ครบ 4 ส่วน (คืออะไร/ติดตั้ง/รัน/เทสต์) 2) ติดตั้ง ruff แล้ว format โค้ด 3) สร้าง GitHub Actions workflow รัน pytest 4) push แล้วดูว่า CI รันเทสต์ให้บน GitHub