DEV Community

Pallat Anchaleechamaikorn
Pallat Anchaleechamaikorn

Posted on

เขียน Go ให้เรียบง่าย บางทีก็ยาก

ช่วงนี้ผมกำลังพยายามทำ example repo ให้น้องๆในที่ทำงานดูเป็นตัวอย่าง โดยแนวคิดแรกเลยก็คือ simplify

แต่การจะ simplify สำหรับคนบางกลุ่ม มันจะยากมาก ก.ไก่หลายตัว เพราะมันจะขัดความรู้สึกเขา และเขารู้สึกว่า การทำแบบนั้นมันบาป ผิดศีลทุกข้อที่เคยปฏิบัติมาอย่างเคร่งครัด
ผมรู้ได้ไง ก็เพราะคำถามที่เขาตั้ง หลายๆคน หลายๆครั้ง จะตั้งคำถามคล้ายๆกันเช่น

พี่ครับ แล้ว repository ผมจะเขียนยังไง
พี่ครับ repository ผมจะวางไว้ตรงไหน
พี่ครับ ถ้ามี service 2 ตัวผมจะสร้าง interface ยังไง
พี่ครับ ถ้าผมเขียนแบบนี้แล้ว ชั้นของ adapter ผมจะเอาไปวางไว้ที่ไหน

คำถามพวกนี้มันทำให้ผมรู้สึกถึงความเจ็บปวดของเขาได้จริงๆ ผมไม่รู้จะตอบเขายังไงดีว่า ลูกเอ้ย เราไม่ได้อยู่กับพระเจ้าแล้วนะลูก ตอนนี้เราขายวิญญาณให้ซาตานเป็นที่เรียบร้อยแล้ว และตอนนี้เจ้ากำลังอยู่ในนรกนะงี้

ผมยกตัวอย่าง handler มาให้ดูสักตัวหนึ่ง

func (handler *B2CHandler) Order(c *gin.Context) {
    var req B2C
    if err := c.ShouldBindJSON(&req); err != nil {
        c.JSON(http.StatusBadRequest, app.Response{
            Message: err.Error(),
        })
        return
    }

    if err := handler.payment.MakeOrder(); err != nil {
        c.JSON(http.StatusInternalServerError, app.Response{
            Code:    5001,
            Message: err.Error(),
        })
        return
    }

    c.JSON(http.StatusOK, app.Response{
        Data: Response{},
    })
}
Enter fullscreen mode Exit fullscreen mode

ตัวอย่างนี้เป็นตัวอย่างสมมุตินะครับ มันไม่สมบูรณ์ โดยในนี้มีเรียก payment interface อยู่ตัวหนึ่ง ซึ่งผมเขียนทุกอย่างอยู่ใน pacakge เดียวกัน

ครับ มาถึงตรงนี้ คนที่รู้สึกว่าบาป ก็จะเห็นแล้ว ส่วนคนที่ไม่รู้สึกอะไร เรามากอดคอกัน 555

ความรู้สึกบาปนี้ ผมบอกได้แค่ว่า เราจะต้องวางสิ่งที่ทำให้เรารู้สึกบาปไว้ข้างๆตัวก่อน ไว้เขียน Go จบแล้ว เวลาจะไปเขียนภาษาอื่นค่อยเอามาสวมไว้เหมือนเดิม มันจะพอช่วยเราได้บ้าง อย่าไปเครียด เดี๋ยวมันจะดีเอง

มันจะไม่มีคำที่เราคุ้นๆเช่น service, repository, model และผองเพื่อนอยู่ในนี้เลย ซึ่งผมจะบอกให้ว่า มันทำงานได้นะ ไม่ต้องมีคำพวกนั้นมันก็ทำงานได้ ขอให้มั่นใจในสิ่งที่เขียน ไม่ต้องมีสิ่งศักสิทธิ์เหล่านั้นมันก็อยู่ได้ครับจริงๆ

Top comments (0)