Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สรุปการแบ่งปันเรื่อง การเริ่มต้นพัฒนาระบบงานด้วยภาษา Go

$
0
0

พอดีได้มีโอกาสไปแบ่งปันความรู้เรื่อง การเริ่มต้นพัฒนาระบบงานด้วยภาษา Go ให้กับน้อง ๆ ที่เข้ามาฝึกฝนในค่าย The SCK SEAL Team นิดหน่อย ซึ่งใช้เวลาในการแนะนำและแบ่งปันไปประมาณ 1-2 ชั่วโมง ประกอบไปเรื่องพื้นฐานดังนี้

1. ว่าด้วยเรื่องของ go env

เป้าหมายเพื่อให้เข้าใจเกี่ยวกับ environment ต่าง ๆ ของภาษา Go ทั้ง GOROOT, GOPATH, GOOS และ GOARCH เพื่อให้นำไปใช้ได้อย่างถูกต้อง ไม่งง ยกตัวอย่างเช่น
  • GOROOT สำหรับกำหนด path ของ Go compiler ง่าย ๆ คือ บ้านของ Go
  • GOPATH สำหรับกำหนด path ของ project หรือระบบงานของเรานั่นเอง
สิ่งที่น่าสนใจมาก ๆ คือ GOPATH เพราะว่าที่เจอมานั้น ผู้เริ่มต้นใหม่ ๆ จะใช้ GOPATH ที่เป็นค่า default คืออยู่ใน folder <user folder>/go ทำให้ทุก ๆ project ไปอยู่ใน folder นี้หมด ซึ่งไม่ถูกต้อง ดังนั้นสิ่งที่ควรทำคือ ในแต่ละ project ควรมี GOPATH แยกกันไป

2. มาลองทำความเข้าใจกับ GOPATH เพิ่มขึ้น

ด้วยการลองใช้ go get เพื่อ download library ต่าง ๆ มาใช้งาน คำถามคือ go get ทำอะไรบ้าง ? เป็นสิ่งที่คนใช้งานจำเป็นจะต้องรู้ ลองไปตามดูนะครับ ผลที่เกิดขึ้นคือ
  • ทำการ download library ไปยัง GOPATH/src
  • ทำการ compile/install library ไปยัง GOPATH/pkg

3. เมื่อเข้าใจก็มาถึง project structure

ก็ควรมีโครงสร้างง่าย ๆ คือ GOPATH/src นั่นเอง ส่วน folder pkg และ bin ก็เอาไว้เก็บผลลัพธ์ต่าง ๆ คือ
  • pkg เอาไว้เก็บผลจากการ install library จาก package ต่าง ๆ
  • bin เอาไว้เก็บ binary จากการ build ระบบงาน
แนะนำให้เริ่มจากที่นี่ How to Write Go Code จากนั้นพูดถึงเรื่องของ โครงสร้าง package ของระบบงาน ควรแยกออกไปตาม feature/domain ของงาน จากนั้นให้แยก package ย่อย ๆ ตามความเหมาะสม เช่น package calendar อาจจะมี package ย่อยตามหน้าที่การทำงาน
  • ​controller
  • service
  • repository
แต่พยายามไม่ให้มีการเรียกข้าม package เพื่อลดความซับซ้อนของระบบงาน

4. ชุดคำสั่งที่ต้องใช้งานกันเลย

สิ่งที่ทีมควรสรุปร่วมกันคือ workflow การทำงานนั่นเอง ว่าจะเป็นอย่างไร ซึ่งทุก ๆ คนควรทำงานเหมือนกัน ทั้งการเขียน code ทั้งการเขียน test ทั้งการ build -> test -> run ยกตัวอย่างเช่น ชุดคำสั่งต่าง ๆ ควรใช้เหมือนกัน หรืออาจจะสรุปออกมาเป็น shell script ไว้เลย โดยชุดคำสั่งที่ควรต้องมี เช่น
  • ​go fmt สำหรับจัด format ของ code
  • go test สำหรับการทดสอบ
  • go tool cover สำหรับการสร้างรายงานของ code coverage
  • go install สำหรับการ compile library/package ต่าง ๆ ซึ่งไปเก็บไว้ใน folder pkg
  • go build สำหรับการสร้าง binary ซึ่งให้กำหนดไปไว้ที่ folder bin
เพียงเท่านี้ก็น่าจะพอเริ่มงานกันได้ เริ่มที่ว่ายากแล้ว ที่เหลือยากกว่าเยอะนะ แต่ก่อนอื่นไปเล่น Go Tour ก่อนนะ แนะนำให้ศึกษาเพิ่มเติมคือ

Viewing all articles
Browse latest Browse all 1997

Trending Articles