Contact
Line : comsiam
Contact
Line : comsiam

Google Gemini สามารถช่วยอ่าน Source Code แล้วอธิบายว่าโค้ดทำงานอย่างไร Function แต่ละตัวมีหน้าที่อะไร ข้อมูลไหลผ่านระบบแบบไหน รวมถึงช่วยค้นหา Bug, Dependency และส่วนของโปรเจกต์ที่เกี่ยวข้องกันได้ เหมาะทั้งกับคนเริ่มเขียนโปรแกรมและ Developer ที่ต้องรับช่วง Codebase ของผู้อื่น
ผู้ใช้สามารถให้ Gemini อ่านโค้ดได้หลายวิธี ตั้งแต่ วาง Code ลงใน Prompt, อัปโหลดไฟล์ Source Code, Import Code Folder ไปจนถึง Import GitHub Repository หากต้องการผลลัพธ์ที่ดี ไม่ควรถามเพียงว่า “โค้ดนี้คืออะไร” แต่ควรระบุระดับความรู้และสิ่งที่ต้องการให้ Gemini อธิบายให้ชัดเจน
ได้ Gemini สามารถใช้ Source Code เป็น Context แล้วตอบคำถามเกี่ยวกับ Codebase ได้
ตัวอย่างงานที่สามารถใช้ Gemini ช่วยได้ เช่น
ข้อดีคือสามารถถามต่อในรูปแบบภาษาธรรมชาติได้ เช่น
“ทำไม Function นี้ต้องใช้ async?”
หรือ
“ค่าของ userId มาจากไฟล์ไหน?”
ทำให้ไม่จำเป็นต้องเข้าใจทุกส่วนของโปรเจกต์ก่อนเริ่มถาม
หาก Code มีเพียงไม่กี่บรรทัด วิธีง่ายที่สุดคือ Copy แล้ววางลงใน Prompt
ตัวอย่าง Python
def calculate_total(price, quantity):
return price * quantity
total = calculate_total(250, 3)
print(total)
จากนั้นถาม
“อธิบาย Code Python นี้ทีละบรรทัดสำหรับคนที่เพิ่งเริ่มเขียนโปรแกรม”
Gemini สามารถอธิบายประมาณว่า
def ใช้สร้าง Functionprice และ quantity คือ Parameterreturn ส่งค่าผลลัพธ์กลับcalculate_total(250, 3) เรียก Function750เหมาะกับ
หากโปรเจกต์มีหลายไฟล์ ควรใช้การ Upload Code หรือ Import Codebase แทน
หากโค้ดยาวเกินกว่าจะ Copy ลง Prompt สามารถเพิ่มไฟล์เข้า Gemini ได้
ขั้นตอนทั่วไปคือ
เปิด Gemini Web App และเข้าสู่ระบบบัญชี Google
เลือกเพิ่มไฟล์บริเวณช่อง Prompt
อัปโหลดไฟล์ที่ต้องการให้ Gemini วิเคราะห์
ตัวอย่างเช่น
app.py
index.js
server.js
config.php
database.sql
style.css
index.html
ตัวอย่าง
“อ่าน Source Code ในไฟล์นี้ทั้งหมด แล้วอธิบายว่าโปรแกรมทำงานอย่างไร โดยเริ่มจากภาพรวมก่อน จากนั้นอธิบาย Function สำคัญทีละตัว”
วิธีนี้เหมาะกับ Code ที่อยู่ในไฟล์เดียวหรือไม่กี่ไฟล์
สำหรับ Project ที่มีหลายไฟล์ Gemini Web App ปัจจุบันมี Import code สำหรับนำ Code Folder เข้ามาเป็น Context
เส้นทางโดยทั่วไปคือ
Add files → More uploads → Import code → Upload folder
จากนั้นเลือกโฟลเดอร์ Project
ตัวอย่าง
my-app/
├── src/
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ └── services/
├── tests/
├── package.json
└── README.md
เมื่อ Import แล้วสามารถถาม
“อธิบาย Architecture ของ Project นี้ก่อน แล้วแสดง Entry Point, Module หลัก และความสัมพันธ์ของ Directory ต่าง ๆ”
ฟีเจอร์นี้มีประโยชน์มากกว่าการอัปโหลดทีละไฟล์ เพราะ Gemini สามารถใช้ Context จากหลายไฟล์เพื่อเชื่อมโยงการทำงานของระบบ
ถ้า Code อยู่บน GitHub สามารถ Import Repository เข้า Gemini Web App ได้เช่นกัน
โดยเลือก
Add files → More uploads → Import code
จากนั้นใส่ Repository URL หรือ Branch URL
เมื่อ Repository ถูก Import แล้ว สามารถถามเกี่ยวกับ
ได้โดยตรง
ตัวอย่าง Prompt
“อ่าน Repository นี้ก่อน แล้วอธิบายว่าโปรเจกต์นี้สร้างขึ้นเพื่ออะไร ใช้ Framework อะไร และ Request หลักเดินทางผ่านไฟล์ใดบ้าง”
Repository ที่ Import เข้า Gemini จะเป็นสถานะของ Code ในเวลาที่นำเข้า
หาก GitHub มี Commit ใหม่ในภายหลัง ไม่ควรถือว่า Gemini ในแชตเดิมเห็น Code ใหม่โดยอัตโนมัติ
แทนที่จะใช้เพียง
“อธิบาย Code นี้”
ลองใช้ Prompt ที่กำหนดโครงสร้างชัดเจน เช่น
“อ่าน Code ที่แนบมาทั้งหมด แล้วอธิบายตามลำดับดังนี้:
อธิบายเป็นภาษาไทยสำหรับคนที่มีพื้นฐาน Programming ระดับเริ่มต้น และหากไม่สามารถยืนยันอะไรจาก Code ได้ให้ระบุว่าไม่แน่ใจแทนการเดา”
Prompt แบบนี้ให้คำตอบเป็นระบบกว่าการถามแบบกว้าง
Gemini สามารถปรับระดับคำอธิบายตามพื้นฐานของผู้ใช้ได้
ตัวอย่าง Prompt
“อธิบาย Code นี้เหมือนกำลังสอนคนที่เพิ่งเริ่มเรียน Python โดยหลีกเลี่ยงศัพท์เทคนิคที่ไม่จำเป็น และถ้าต้องใช้ศัพท์เทคนิคให้อธิบายความหมายด้วย”
หรือ
“ฉันเข้าใจ HTML และ CSS แต่ยังไม่เก่ง JavaScript ช่วยอธิบาย JavaScript ชุดนี้โดยเปรียบเทียบกับสิ่งที่คนเขียนเว็บน่าจะเข้าใจ”
การระบุระดับความรู้ช่วยให้คำอธิบายไม่ยากหรือง่ายเกินไป
ถ้ามีพื้นฐานอยู่แล้ว ไม่จำเป็นต้องให้อธิบายทุกบรรทัด
สามารถสั่ง
“อธิบาย Code นี้ในระดับ Senior Developer โดยเน้น Architecture, Control Flow, State Management, Dependency, Side Effect และ Design Decision ไม่ต้องอธิบาย Syntax พื้นฐาน”
ทำให้คำตอบเน้นสิ่งที่มีประโยชน์ต่อ Developer มากขึ้น
หากกำลังเรียน Programming สามารถใช้ Line-by-Line Explanation
ตัวอย่าง
const users = data.filter(user => user.active);
Prompt
“อธิบายบรรทัดนี้ทีละส่วน ตั้งแต่ const, filter, Arrow Function และเงื่อนไข user.active พร้อมยกตัวอย่างข้อมูลก่อนและหลังประมวลผล”
Gemini จะช่วยแยก Syntax ออกเป็นส่วนเล็ก ๆ ทำให้เข้าใจง่ายขึ้น
การให้อธิบายทุกบรรทัดของโปรเจกต์ใหญ่จะสร้างข้อมูลจำนวนมากและอาจไม่ช่วยให้เข้าใจภาพรวม
ควรเริ่มจาก Architecture แล้วเจาะเฉพาะ Function ที่สำคัญ
ใช้ Prompt
“อธิบาย Function นี้โดยแสดง:
ตัวอย่าง
def discount(price, percent):
return price - (price * percent / 100)
สามารถถามต่อได้ว่า
“ถ้า price = 1000 และ percent = 20 ให้ Trace ค่าแต่ละขั้นตอน”
ทำให้เห็น Logic ชัดขึ้น
ระบบจริงมักมีการเรียก Code ต่อกันหลายระดับ
เช่น
login()
↓
validateUser()
↓
findUser()
↓
queryDatabase()
สามารถสั่ง
“Trace Function login() ตั้งแต่เริ่มต้นจนถึง Database พร้อมอธิบายค่าที่ถูกส่งจาก Function หนึ่งไปอีก Function หนึ่ง”
วิธีนี้เหมาะกับ Codebase ที่มีหลาย Layer
ถ้าต้องการเข้าใจว่าข้อมูลเดินทางอย่างไร ใช้ Prompt
“Trace Data Flow ตั้งแต่ผู้ใช้ Submit Form จนข้อมูลถูกบันทึกลง Database พร้อมระบุไฟล์ Function และข้อมูลที่ถูกเปลี่ยนในแต่ละขั้น”
ตัวอย่าง Flow อาจเป็น
Browser
↓
POST /register
↓
Route
↓
Controller
↓
Validation
↓
Service
↓
Model
↓
Database
การเห็น Flow ช่วยให้เข้าใจระบบได้เร็วกว่าอ่านไฟล์แบบแยกส่วน
หากเป็น Backend API ใช้ Prompt
“อธิบาย API Endpoint นี้ตั้งแต่ Request เข้ามาจน Response ถูกส่งกลับ โดยระบุ HTTP Method, Parameter, Validation, Business Logic, Database Query และ Response Status”
ตัวอย่าง
app.get('/users/:id', async (req, res) => {
const user = await findUser(req.params.id);
res.json(user);
});
ถามต่อได้ว่า
“ถ้าไม่พบ User จะเกิดอะไรขึ้น และ Code นี้ควรจัดการ Error อย่างไร”
ช่วยทั้งเรียนรู้และ Review Logic ไปพร้อมกัน
สามารถวาง Query แล้วถามได้โดยตรง
ตัวอย่าง
SELECT category, SUM(revenue) AS total_revenue
FROM sales
GROUP BY category
ORDER BY total_revenue DESC;
Prompt
“อธิบาย SQL นี้ตามลำดับการทำงาน พร้อมยกตัวอย่างข้อมูลก่อน Query และผลลัพธ์หลัง Query”
Gemini สามารถช่วยอธิบาย
ได้เป็นขั้นตอน
สำหรับ Frontend สามารถถาม
“อธิบายว่า HTML และ CSS ชุดนี้ทำงานร่วมกันอย่างไร และ Selector แต่ละตัวมีผลกับ Element ใด”
หรือ
“ค้นหา CSS ที่ทำให้ Element นี้อยู่กึ่งกลาง และอธิบาย Mechanism”
เหมาะสำหรับเรียนรู้ Code ที่ Copy มาจาก Theme หรือ Template
JavaScript มักซับซ้อนเรื่อง
สามารถถามเฉพาะ Concept ได้ เช่น
“อธิบายว่า async/await ถูกใช้ตรงไหนใน Code นี้ และเหตุใด Function จึงต้องเป็น async”
หรือ
“Trace Event ตั้งแต่ผู้ใช้กด Button จนข้อมูลแสดงบนหน้าเว็บ”
สำหรับ Python สามารถถามได้ตั้งแต่ Syntax ไปจนถึง Library
Prompt
“อธิบาย Script Python นี้โดยแบ่งเป็น Import, Data Loading, Processing, Function และ Output”
หากมี pandas
“อธิบายว่า DataFrame ถูกเปลี่ยนแปลงอย่างไรในแต่ละบรรทัด และแสดงตัวอย่างข้อมูลก่อนกับหลัง”
เหมาะสำหรับเรียนรู้ Data Analysis Code ที่ผู้อื่นเขียน
Prompt
“อธิบาย PHP Code นี้ตั้งแต่ Request เข้ามาจน Query Database และ Render Output พร้อมระบุจุดที่ต้องระวังเรื่อง Input Validation”
สำหรับ WordPress สามารถถาม
“อธิบาย Hook และ Function ใน Code นี้ และบอกว่า Code ทำงานในช่วงใดของ WordPress Lifecycle”
ช่วยให้เข้าใจ Plugin หรือ Theme Code ได้ง่ายขึ้น
สำหรับ Object-Oriented Programming ใช้ Prompt
“อธิบาย Class นี้โดยแบ่งเป็น Property, Constructor, Method, Inheritance และ Dependency พร้อมยกตัวอย่างการสร้าง Object และการเรียก Method”
หากมีหลาย Class ให้ถาม
“สร้างแผนภาพข้อความแสดงความสัมพันธ์ของ Class เหล่านี้”
ตัวอย่าง
UserController
↓
UserService
↓
UserRepository
↓
Database
หากไม่รู้ว่า Package ใดมีหน้าที่อะไร ใช้ Prompt
“ตรวจ Dependency ของ Project นี้แล้วสร้างตารางชื่อ Package, หน้าที่ และส่วนของ Codebase ที่ใช้งาน Package นั้น”
เช่นโปรเจกต์ Node.js สามารถให้ Gemini ดู package.json
หรือ Python ดู
requirements.txt
pyproject.toml
แต่ข้อมูล Version และ API ของ Library สามารถเปลี่ยนได้ หากกำลังจะนำคำแนะนำไปเขียน Code จริง ควรตรวจ Documentation ปัจจุบันเพิ่มเติม
ถ้ามี Error อย่าส่ง Code อย่างเดียว
ควรส่ง
ตัวอย่าง Prompt
“โปรแกรมเกิด Error นี้:
TypeError: Cannot read properties of undefined
อ่าน Code ที่แนบมาแล้วอธิบายก่อนว่า Error หมายถึงอะไร จากนั้น Trace ว่าค่าที่เป็น undefined มาจากที่ใด โดยยังไม่ต้องแก้ Code”
การหาต้นเหตุให้ชัดก่อนแก้ช่วยลดการสร้าง Patch แบบเดาสุ่ม
ใช้ Prompt
“Review Code นี้และแสดง Bug หรือ Logic Issue ที่เป็นไปได้ แต่ยังไม่ต้องเขียน Code ใหม่”
ให้แยกเป็น
มีหลักฐานจาก Code ชัดเจน
ต้องใช้ Runtime Data เพิ่ม
เช่น Log, Input หรือ Database
วิธีนี้เหมาะกับ Code Review มากกว่าการให้ AI Rewrite ทุกอย่าง
บางครั้งวิธีที่ดีที่สุดในการเข้าใจ Function คือดู Test Case
Prompt
“สร้างตัวอย่าง Test Case สำหรับ Function นี้ โดยแสดง Input และ Expected Output แต่ยังไม่ต้องเขียน Unit Test Code”
เช่น
| Input | Expected |
|---|---|
| 100, 10% | 90 |
| 500, 20% | 400 |
ทำให้เห็น Behavior ของ Function ชัดเจน
หาก Code ซับซ้อนมาก สามารถขอให้แปลงเป็น Pseudocode
ตัวอย่าง
“แปลง Function นี้เป็น Pseudocode ภาษาไทยโดยไม่ใส่ Syntax ของ Programming Language”
ตัวอย่างผล
รับข้อมูลผู้ใช้
ตรวจสอบข้อมูล
ถ้าข้อมูลไม่ถูกต้อง
ส่ง Error
ถ้าข้อมูลถูกต้อง
บันทึก Database
ส่งผลสำเร็จกลับ
เหมาะสำหรับทำความเข้าใจ Logic ก่อนสนใจ Syntax
อีกวิธีคือถาม
“สมมติว่า Function นี้ได้รับ Input ตัวอย่างดังต่อไปนี้ ให้จำลองการทำงานทีละขั้นและแสดงค่าของตัวแปรหลังแต่ละขั้น”
เรียกว่า Trace Execution
เหมาะกับ
หากได้รับ Project ของผู้อื่น อย่าเริ่มอ่านแบบสุ่ม
Workflow ที่แนะนำคือ
ถามภาพรวมก่อน
หาไฟล์เริ่มต้น
Trace Use Case หลัก
เรียนทีละ Module
ดู Model และ Database
ดู API หรือ Service ภายนอก
ดู Expected Behavior
ดูว่าระบบจัดการข้อผิดพลาดอย่างไร
สำหรับ Developer ที่ใช้ Gemini กับงานบน comsiam วิธีนี้มีประสิทธิภาพกว่าการให้ AI อธิบายไฟล์หลายพันบรรทัดเรียงจากบนลงล่าง
สามารถใช้คำสั่งนี้
“ฉันเพิ่งเข้ามาทำงานกับ Codebase นี้และยังไม่รู้ Architecture
สร้าง Learning Path ให้ฉันโดย:
ทำให้การศึกษา Codebase มีลำดับชัดเจนขึ้น
สามารถถาม
“อธิบายว่า Authentication และ Authorization ใน Codebase นี้ทำงานอย่างไร พร้อมระบุไฟล์ที่เกี่ยวข้อง”
หรือ
“ตรวจว่า Input จากผู้ใช้ถูก Validate ตรงไหนก่อนเข้าสู่ Database”
แต่ Security Review จาก AI ไม่ควรเป็นการตรวจเพียงอย่างเดียว
ระบบจริงควรมี
ร่วมด้วย
สามารถสั่ง
“เพิ่ม Comment เฉพาะส่วนที่ Logic ซับซ้อน โดยไม่ Comment บรรทัดที่อ่านเข้าใจได้อยู่แล้ว”
ดีกว่า
“Comment ทุกบรรทัด”
เพราะ Comment มากเกินไปทำให้ Code อ่านยาก
ตัวอย่างที่ดี
// Retry once because the upstream API occasionally returns 502.
ควรอธิบาย เหตุผล มากกว่าเพียงบอกว่า Code ทำอะไร
Prompt
“สร้าง Documentation สำหรับ Function นี้ โดยระบุ Purpose, Parameter, Return Value, Exceptions และ Example”
หรือสำหรับ Project
“สร้าง Developer Documentation จาก Codebase นี้ โดยใช้เฉพาะสิ่งที่ยืนยันได้จาก Source”
เหมาะกับ Project ที่ Documentation ขาดหรือไม่อัปเดต
สำหรับ Gemini Apps ปัจจุบัน Google มี Import Code โดยตรง
รองรับประมาณ
รองรับประมาณ
แม้ระบบรองรับไฟล์จำนวนมาก แต่ไม่ควรถือว่าการใส่ Code มากที่สุดจะทำให้คำตอบดีที่สุดเสมอไป
หากต้องแก้ปัญหาเฉพาะ Feature การเลือก Context ที่เกี่ยวข้องยังช่วยให้การวิเคราะห์มีจุดโฟกัสมากขึ้น
ไม่ควรถือว่าถูกต้อง 100%
Gemini สามารถ
ดังนั้นควรใช้คำอธิบายเป็น เครื่องช่วยทำความเข้าใจ แล้วตรวจ Code จริงประกอบ
ควรระบุว่าเป็น Python, PHP, JavaScript หรือภาษาใด หากไม่ชัดเจน
Framework ต่าง Version อาจทำงานต่างกัน
“อธิบายโปรเจกต์นี้ทั้งหมด”
อาจได้คำตอบกว้างและไม่ลึก
ควรอธิบาย Root Cause ก่อนสร้าง Patch
AI ต้องเดาสาเหตุจาก Code มากขึ้น
ควรตรวจกับ Source จริง
ทุกการเปลี่ยนแปลงควรผ่านการทดสอบ
Source Code อาจมีข้อมูลสำคัญ เช่น
.env
API_KEY
DATABASE_PASSWORD
ACCESS_TOKEN
PRIVATE_KEY
CLIENT_SECRET
ก่อนอัปโหลดควรตรวจและลบข้อมูลที่ไม่จำเป็น
ตัวอย่างที่ไม่ควรส่ง
API_KEY = "real-secret-key"
ควรเปลี่ยนเป็น
API_KEY = "YOUR_API_KEY"
หรือใช้ Environment Variable
import os
API_KEY = os.getenv("API_KEY")
การลด Secret ก่อนส่ง Source Code เป็นแนวทางที่ควรทำเสมอ ไม่ว่าจะใช้ Gemini หรือ AI Tool ใดก็ตาม
“อธิบายว่า Code นี้มีจุดประสงค์อะไร Input และ Output คืออะไร”
“อธิบาย Code นี้สำหรับคนที่เพิ่งเริ่มเขียนโปรแกรม โดยอธิบายศัพท์เทคนิคทุกคำที่จำเป็น”
“อธิบาย Parameter, Return Value, Side Effect และ Error ของ Function นี้”
“Trace การทำงานตั้งแต่ Function แรกจนถึง Output สุดท้าย”
“อธิบายว่าข้อมูลเดินทางผ่าน Module ใดบ้างตั้งแต่ Input จนบันทึก Database”
“แปลง Logic นี้เป็น Pseudocode ภาษาไทย”
“หา Logic Issue ที่เป็นไปได้โดยยังไม่แก้ Code”
“อธิบาย Architecture และความสัมพันธ์ระหว่าง Module ของ Codebase นี้”
“อธิบาย Library ภายนอกทั้งหมดและส่วนของ Code ที่ใช้งาน Library นั้น”
“กลับไปตรวจ Source Code อีกครั้ง และระบุส่วนของคำอธิบายก่อนหน้าที่เป็นการสันนิษฐานแทนสิ่งที่ยืนยันได้จาก Code”
ได้ สามารถวาง Source Code อัปโหลดไฟล์ Import Code Folder หรือ Import GitHub Repository แล้วถาม Gemini เกี่ยวกับ Code ได้
ได้ สามารถกำหนดให้ตอบภาษาไทย และเลือกได้ว่าจะอธิบายสำหรับมือใหม่หรือ Developer ที่มีประสบการณ์
ได้ Gemini มี Import Code Folder สำหรับโปรเจกต์หลายไฟล์ และรองรับ GitHub Repository สำหรับวิเคราะห์ Codebase จาก Repository
ตามข้อจำกัดปัจจุบัน Code Folder รองรับสูงสุดประมาณ 5,000 ไฟล์ และขนาดรวมประมาณ 100 MB ต่อแชต
สามารถช่วยวิเคราะห์ Bug และ Debug Issue ได้ แต่ไม่ควรถือว่าการวิเคราะห์ถูกต้องทุกกรณี ควรใช้ Error Message, Log และ Test ประกอบ
สามารถเสนอ Code หรือแนวทางแก้ได้ แต่ควรให้ Gemini อธิบายปัญหาและ Root Cause ก่อน จากนั้น Developer ต้อง Review และ Test Code ก่อนใช้งานจริง
วิธีให้ Gemini อ่านและอธิบายโค้ดสามารถทำได้ตั้งแต่การวาง Code สั้น ๆ ลงใน Prompt ไปจนถึงการ Import Code Folder หรือ GitHub Repository สำหรับ Codebase หลายไฟล์
หากต้องการเข้าใจ Code ให้เร็ว ควรเริ่มจาก Purpose → Architecture → Entry Point → Function → Data Flow → Dependency → Error Handling แทนการให้อธิบายทุกบรรทัดตั้งแต่ต้น
สำหรับโปรเจกต์ขนาดใหญ่ Gemini สามารถช่วยค้นหา Function, Trace Flow และเชื่อมโยง Source Code หลายไฟล์ได้ แต่คำอธิบายของ Generative AI ยังสามารถคลาดเคลื่อนได้ จึงต้องตรวจ Source Code, Documentation, Runtime Behavior และ Test จริงประกอบ
แนวทางของ comsiam คือใช้ Gemini เป็นผู้ช่วยทำความเข้าใจ Codebase ก่อน แล้วค่อยใช้ AI ช่วยหา Bug, Refactor หรือสร้าง Code ในขั้นตอนถัดไป วิธีนี้ช่วยลดโอกาสที่ AI จะแก้ Code โดยยังไม่เข้าใจโครงสร้างของระบบ