Day#8 Refactor code ให้สั้นได้อีกหรอ?

KakyKad
1 min readMay 31, 2018

--

วันนี้ช่วงเช้าได้เรียนเรื่อง collections ใน go lang ซึ่งจะมี Arrays, Slices, Map หน้าตาจะประมาณนี้

func main() {

var x [5]int // array

var x []int // slice

var x map[string]int // map

}

ในส่วนของการใช้งานก็ลองอ่านจาก blog จากที่นี่

ซึ่งได้ลองเอาโจทย์ FizzBuzz จากเดิมที่เคยเขียนไว้เมื่ออาทิตย์ที่แล้วมา refactor ใหม่ และภาพด้านล่างนี้คือ code ของเดิม ซึ่งเราจะเห็นว่ามันยังมีส่วนที่ duplicated กันอยู่ พวกการใช้ if ทั้งหลาย เราจะลดการใช้สิ่งนี้ จึงเอาเรื่อง colltections เข้ามาใช้ เราเลือกใช้ map กับ slice

Slice จะทำการเก็บ reference ของ Array ดังนั้นถ้ามีการกำหนดค่าไปยังตัวแปรใดๆ มันก็คือการกำหนด reference

Map มันเป็น Data structure แบบ Key-value โดยที่อยากให้ key มีชนิดข้อมูลอะไรก็ได้ ข้อยกเว้น Slice จะนำมาเป็น key ไม่ได้

ซึ่งตอนแรกเกิดปัญหาตรงที่ เรียงลำดับแบบ 3,5,15 ตรง str แล้วเกิด error ที่ test ของ FizzBuzz ที่ต้องหาร 15 ลงตัว มันได้ค่า Fizz ออกมาจึงต้องแก้ปัญหาด้วยการเอา 15 มาขึ้นตัวแรกก่อน ด้านล่างคือ ส่วนที่ refactor code มาใหม่ ดูสิ สั้นลงขึ้นอีกเยอะเลย

ยังไงก็ลองไปหัดเขียนกันดูนะคะ เริ่มจากโจทย์ง่ายๆก่อน เช่น FizzBuzz ดูกันนะ ^^ หรืออยากลองโจทย์ที่ยากกว่านี้ ลองโจทย์นี้กันดูนะ

ทำกันแล้วลองมาแชร์กันดูเนาะ ว่าใช้วิธีอะไรกันบ้าง สามารถคอมเม้นบอกเล่ากันได้เลยนะจ๊ะ :)

--

--

KakyKad
KakyKad

Written by KakyKad

เขียนไปเรื่อย

No responses yet