ลาก่อย oop

Prach CM
1 min readJun 26, 2019

--

เป็นบทความที่เขียนขึ้นเพื่อสรุปข้อมูลจากอีกบทความนึงเฉยๆนะครับ โดยผมจะเอามาแค่หัวข้อประเด็นต่างๆ เท่านั้นว่า oop มีปัญหาอะไรบ้าง ส่วนการแก้ไข ใน link หลักจะมีเขียนอยู่ ซึ่งมีหลากหลายวิธี และยาวพอควร ดังนั้นไปตามอ่านกันต่อได้เลยที่ https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53

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

1. Banana Monkey Jungle Problem
คือ ปัญหาที่เวลาเราจะใช้ class ลูก(ลูกลิง) เราต้องเอามาไม่ใช่แค่แม่(แม่ลิง) แต่เป็นป่าทั้งป่า

2. The Fragile Base Class Problem
คือ ปัญหาที่ class ลูกที่ทำงานซ้อนทับกับ class แม่หลายๆ class การไป @override ฟังชั้นบางฟังชั้นใน class อาจทำให้ function ใน class เดียวกันตัวอื่น ทำงานเพี้ยนไป

3. The Hierarchy Problem
คือการที่ oop มันจะมอง class ที่สืบทอด แต่ในบางสถาปัทยกรรมของโปรแกรม เรากลับไม่ได้มองเป็นชั้นๆแบบนั้น และอีกทั้งการวางโครงไว้เป็นชั้นๆ แล้วเราต้องการสลับตำแหน่งให้บางตัวจากลูกกลับมาเป็นแม่ก็ทำได้ยากเหลือเกิน

4. The Reference Problem (Encapsulation)
คือ แม้ว่าหลักการ encapsulation จะดูดีและช่วยป้องกันการเข้าถึงข้อมูล (เข้าได้เฉพาะ setter getter) แต่เอาเข้าจริง ปัญหาการใช้ constructor ก็คือมันรับเป็น object ซึ่งการรับเป็น object นั้นไม่ปลอดภัยอย่างยิ่ง ซึ่งแม้ว่าจะแก้ไขได้ด้วยการ clone ค่า แต่ก็ไม่ใช่ทุก object จะสามารถ clone ได้

5. Polymorphism (ดีนะ แต่ไม่มีก็ได้)
เพราะว่า เราสามารถใช้ Interfaces ก็เพียงพอแล้ว

ส่วนวิธีแก้ในแต่ละปัญหาการใช้งาน ใน link มีเขียนไว้แล้ว ซึ่งสุดท้ายคนเขียนแนะนำให้ใช้การเขียนแบบ Functional Programming ในการแก้ปัญหาทั้งหมดข้างต้น

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Prach CM
Prach CM

Written by Prach CM

Gopher <3 and Blockchain Dev

No responses yet

Write a response