Framework in Framework

วันนี้ทั้งวันนั่งแก้บั๊ก Application ที่เขียนด้วย Flex แล้วก็รู้สึกหงุดหงิด ไม่ได้หงุดหงิดเพราะคนอื่น หงุดหงิดเพราะตัวเอง และโค้ดต่างๆ ที่เห็นอยู่ตรงหน้าพร้อมทั้งปัญหาที่รอการแก้อยู่ ที่หงุดหงิดเพราะ โค้ดต่างๆ มันช่างมีรูปแบบการเขียนที่แตกต่างกันทั้งชื่อตัวแปร ทั้งการเรียกฟังก์ชั่น การรอเหตุการณ์ต่างๆ มันช่างต่างกันเหลือเกินในโค้ดส่วนต่างๆ วันนี้ตอนเย็นเลยอารมณ์เสียรีบกลับบ้านไปหาไรกิน เพื่อคลายอารมณ์เล็กน้อย แล้วก็มานั่งๆ คิดว่าทำไมมันถึงเป็นอย่างนั้น มันต่างจาก iPhone Application ที่ทำอยู่ตอนนี้ยังไง ก็พบว่า สิ่งที่มันขาดไปคือ Framework ที่กำหนดร่วมกันของคนที่ทำโปรเจคนี้นี่เอง

Framework ทั่วๆไป แล้วก็คือกรอบที่มีไว้เพื่อให้ทุกคนงานต่างๆ ได้เหมือนกันและเป็นละเบียบ คราวนี้พอมาในสาขาคอมพิวเตอร์ มันกลับถูกเอาไปใช้เรียกชื่อกรอบต่างๆ ที่เอา Library มารวมๆ กันจนบางคนก็สับสนว่าจริงๆ แล้ว Framework กับ Library คืออย่างเดียวกันหรือป่าว (รู้สึกจะเจอคำถามนี้ใน Blognone) แถมเวลาใช้มันก็คล้ายๆ เรียก Library ซะด้วย แต่จริงๆ แล้วมันคือวิธีการเรียกใช้ Library ต่างๆ ตามแบบที่กำหนด เพื่อให้ได้ผลลัพธ์ที่ออกมาเหมือนกัน อย่าง Cocoa Framework ที่เห็นชัดๆ เช่นการเอาข้อมูลมาแสดงในตาราง ต้องเขียน method ต่างๆ ตามที่กำหนดไว้ถึงจะแสดงข้อมูลได้ แต่ Framework พวกนี้ก็กว้าง ไม่ได้กำหนดว่าชื่อตัวแปรตั้งยังไง เมธอดตั้งยังไง หรือเวลาสร้างคลาสขึ้นมาใหม่ เมธอดเหล่านี้ควรทำงานยังไง จะได้เหมือนกันแล้วดูเนียนไปทุกส่วน

คราวนี้เนื่องจาก Framework ที่ใช้อยู่มันกว้างซะเหลือเกิน จะใช้แค่ Coding Style มากำหนดมันก็ไม่พอ จะบอกว่าให้ออกแบบทั้งหมดก่อน ว่ามีคลาสอะไรบ้างและเรียกกันยังไง (จริงๆ มันควรทำนะ ^^!) มันก็ได้มาไม่หมด อย่างมากคือได้คลาสหลักๆมา แต่ส่วนที่เชื่อมๆ กันก็จะมีการเรียกใช้ต่างกันอีกมากมาย ดังนั้นเราก็รวมหัวกันมากำหนดคร่าวๆ เลยดีกว่า ว่าเวลาจะเรียกใช้คลาสๆ ต่างๆ ร่วมกันจะมีรูปแบบยังไงบ้าง เรียกผ่านเมธอดชื่อประเภทไหน​(ในเอกสารของ Apple มันจะมี did…, should… ไรพวกนี้พร้อมอธิบายเล็กน้อยว่ามันไว้ทำไร) ตั้งชื่อยังไงไปเลยดีกว่า รวมทั้งเมื่อไหร่จะใช้ enum เมื่อไหร่จะไม่ใช้ อะไรพวกนี้ด้วย ซึ่งพอเขียนรวมๆ กัน โค้ดที่ได้ออกมาก็จะดูและอ่านด้วยกันง่ายกว่า ที่ไม่ได้กำหนดกรอบพวกนี้ขึ้นมาเลย

ตอนนี้กำหนดไปได้ชุดนึง คิดว่าต้องคอยกำหนดร่วมกันเรื่อยๆ แต่ปัญหาคือโปรเจคเก่าที่มีอยู่แล้ว ว่าจะค่อยๆ ปรับยังไง จะคุยกันแล้วกำหนดร่วมกันยังไง ดูไปแล้ว ถ้าทำจะเหนื่อยกันอีกนานพอสมควรเลย เห้อ …

About llun

Just a programmer