อะไรดีกว่ากัน ระหว่าง Functional Programming กับ Object Oriented

24-เม.ย.-19

คัมภีร์เทพ IT

เชื่อว่าในการเขียน Program ของ Programmer/Developer คงอาจเคยเจอคำถามในลักษณะที่ว่า อะไรดีกว่ากัน หรือ ควรใช้อะไรมากกว่ากัน เป็นต้น แต่ในบทความความนี้ เราจะมาดูกันว่า อะไรดีกว่ากัน ระหว่าง Functional Programming กับ Object Oriented ซึ่งบทความนี้เป็นความคิดเห็นของคุณ Aphinya Dechalert เรามาดูกันว่าเธอคิดเห็นว่าอย่างไรบ้าง

อะไรที่เป็นเรื่องสำคัญของ Functional Programming

Functional Programming เป็น Programming paradigm ที่ทำงานภายใต้แนวคิดและสมมติฐานที่ว่า สิ่งใดที่คุณใส่ลงใน Function จะไม่คาดหวังว่ามันจะเปลี่ยนแปลง มันเกิดจากแนวคิดทางคณิตศาสตร์ที่สมการจะ Return ค่าที่คาดหวังและมีค่าเท่ากับ y เมื่อ x ถูกใส่เข้าไป

Function คือ สมการที่ค่า x ใดๆ ที่เมื่อใส่เข้าไปในสมการ แล้วจะได้ผลลัพธ์ออกมาเป็น y เสมอ - “นิยามการทำงาน” ของ Function

หากมองจากเรื่อง Maintenance, จุดยืนในเรื่อง Logical และ Structural แล้ว Functional Programming จะดีขึ้นเมื่อมันไม่มีประวัติที่ต้องจัดการ มันทำงานได้ดีโดยเฉพาะเมื่อไม่มีขอบเขต หรือขอบเขตเหล่านั้นไม่ได้ถูกกำหนดไว้ล่วงหน้า มันจะทำงานได้ดีในสถานการณ์ที่สถานของมันไม่ได้เป็นปัจจัยและมีเพียงส่วนที่น้อยมากที่ไม่เกี่ยวข้องกับกับ Mutable Data

เมื่อเร็วๆ นี้ Functional Programming ได้รับความนิยมอย่างแพร่หลายผ่าน React แถม Library ก็ทำงานได้ดีภายใต้ Functional Programming Paradigm เนื่องจากมันมีสภาพแวดล้อมที่คุณไม่จำเป็นต้องติดตามสถานะด้วยตนเอง ขอบเขตจะถูกสร้างไว้ล่วงหน้าสำหรับคุณผ่านแนวคิดเรื่อง Components

นี่เป็นสิ่งที่ตรงกันข้ามกับ Angular 2+ ซึ่งจำเป็นต้องมี Class เนื่องจากความคาดหวังว่า Application ที่สร้างขึ้นจะข้ามขอบเขตตรรกะหลายอย่าง อย่างไรก็ตาม React มี Scope ที่ถูกกำหนดไว้ล่วงหน้าด้วยวิธีที่แตกต่างกันอย่างสิ้นเชิงสำหรับวิธีของการคิดเกี่ยวกับการแบ่งแยก Code ออกเป็นส่วนๆ ซึ่งเป็นการสนับสนุนการใช้ Functional Programming Paradigm

ที่ Functional Programming เป็นที่ชื่นชอบของหลายๆ คน ก็เพราะมันง่ายต่อการเลียนแบบ Process ในโลกแห่งความเป็นจริงมากกว่า Object มันเป็นรากฐานทางคณิตศาสตร์ที่ใช้ได้ดีกับสถานการณ์ที่ต้องใช้การคำนวณหรืออะไรก็ตามที่ต้องใช้การประมวลผล และการแปลง(ทางเรขาคณิต) การใช้ OOP ในสถานการณ์เหล่านี้อาจทำให้มากเกินความจำเป็นเล็กน้อยหากมันไม่มีประสิทธิภาพ

อะไรที่เป็นเรื่องสำคัญของแนวคิดเกี่ยวกับ Object-Oriented

ครั้งหนึ่ง Object-Oriented Programming Paradigms เคยเป็นวิธีที่ไม่สำคัญเมื่อคิดย้อนกลับไปตอนที่มันออกมาครั้งแรกในต้นปี 1970 มันได้รับความนิยมผ่าน Java และ C++ ซึ่งปรับเปลี่ยนและกำหนดแนวคิดของ OOP ให้เป็นสิ่งที่เรารู้ๆ กันในปัจจุบัน

เรื่องหลักๆ ที่ OOP ต้องเจอคือ ความสามารถในการ Encapsulate Data จากสิ่งที่อยู่ภายนอก การ Encapsulation คือความสามารถในการซ่อนตัวแปรภายใน Class จากการเข้าถึงจากภายนอก ซึ่งทำให้มันเหมาะสำหรับเหตุผลด้านความปลอดภัยพร้อมกับการใช้งานที่ รั่วไหล,ไม่ต้องการ หรือไม่ตั้งใจ

เมื่อคุณต้องทำงานข้ามขอบเขตที่แตกต่างกัน OOP เป็นวิธีการที่ยอดเยี่ยมในการรักษาทุกสิ่งที่บรรจุไว้และปลอดภัยจากการใช้งานภายนอกที่ไม่พึงประสงค์ ด้วยเหตุนี้ Back End Languages จึงสนับสนุนและบังคับใช้ Paradigms ดังกล่าวกับ Developers มันช่วยจัดการกับแนวคิดให้เป็น Silos และในทางใดทางหนึ่ง OOP ก็เหมือนรั้วล้อมรอบ Methods และ Modules  ซึ่งจริงๆ แล้วเป็นเพียง Function แต่เพิ่มประโยชน์เข้าไป

Object-Oriented Programmers ชื่นชอบ OOP ก็เพราะมันบังคับให้เป็น Modularity โดยแยก Code ออกเป็นขนาดที่ย่อยๆ และมีความสามารถในการจัดการกับ State ทำให้ Methods กลายเป็นจุดเชื่อมต่อไปยัง State และประมวลผล Instance ของ Object

มีเวลาและสถานที่ที่เหมาะสมสำหรับทุกสิ่ง

ทั้ง Functional Programming และ Object-Oriented Programming มี Paradigms และ Methods ของการ Coding ที่สมเหตุสมผล อย่างไรก็ตาม จะมีตัวใดตัวหนึ่งที่จะเติบโตและทำงานได้ดีกว่าสำหรับ Project ที่ขึ้นตามสภาพแวดล้อมและความต้องการ – แต่คงไม่มี Solution ไหนที่ทำงานได้ดีที่สุดในทุกสถานการณ์

Functional Programming ทำงานได้ดีในงานที่มีความซับซ้อน เพราะ Back Ends จะทำส่วนของ Object เพื่อให้ส่วนของ Front End นำไป Process ต่อโดย Client บน Front End ไม่จำเป็นต้องสนใจกับการเก็บ state ของ Object นั้น นอกจากนี้ Object ที่ได้มาอาจจะเป็นใรรูปแบบของ JSON ซึ่งทำให้ Client ไม่จำเป็นต้องเสียเวลาแปลง Object ที่ได้รับมาจาก Back End ให้อยู่ในรูปแบบที่ client สามารถใช้งานได้อีกด้วย

แนวคิดเกี่ยวกับ Object-Oriented ทำงานได้ดีในส่วนของ Back End เพราะส่วนใหญ่คุณต้องสร้าง Object เพื่อส่งต่อให้กับส่วนอื่นต่อไป โดย Object ที่สร้างนั้นจะต้องทำการ Encapsulation Data บางอย่าง เพื่อให้ส่วนอื่นๆ ที่ได้รับ Object นี้ไป ไม่สามารถเข้าถึงข้อมูลที่เป็นความลับบางอย่างได้ ด้วยเหตุผลทาง Security ดังที่ได้กล่าวไว้ตอนต้น

ที่มา:  https://itnext.io/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด