ในบล็อก dev เดียวที่ฉันอ่านโดย Joel-On-Software-Founder-of-SO คนนั้นฉันอ่านมานานแล้วว่า OO ไม่ได้นำไปสู่การเพิ่มผลผลิต การจัดการหน่วยความจำอัตโนมัติทำได้ เย็น. ใครสามารถปฏิเสธข้อมูลได้
ฉันยังเชื่อว่า OO นั้นไม่ใช่ OO การเขียนโปรแกรมด้วยฟังก์ชันคือการเขียนโปรแกรมทุกอย่างแบบอินไลน์
(และฉันควรรู้เมื่อฉันเริ่มต้นด้วย GWBasic) เมื่อคุณ refactor โค้ดเพื่อใช้ฟังก์ชัน
variable2654
จะกลายเป็น
variable3
เมธอดที่คุณใช้อยู่หรือยังดีกว่ามันมีชื่อที่คุณสามารถเข้าใจได้
และถ้าฟังก์ชันนั้นสั้น ,ก็เรียกว่า
value
และที่เพียงพอสำหรับความเข้าใจอย่างเต็มรูปแบบ
เมื่อรหัสที่ไม่มีฟังก์ชันกลายเป็นรหัสด้วยวิธีการคุณจะสามารถลบรหัสได้
เมื่อคุณ refactor รหัสอย่างแท้จริง OO, b
, c
, q
และZ
กลายเป็นthis
, this
, และthis
this
และเนื่องจากฉันไม่เชื่อในการใช้this
คีย์เวิร์ดคุณจึงต้องลบไมล์ของรหัส this
ที่จริงคุณจะได้รับที่จะทำแม้ว่าคุณจะใช้
ฉันไม่คิดว่า OO เป็นอุปมาตามธรรมชาติ
ฉันไม่คิดว่าภาษาเป็นคำอุปมาตามธรรมชาติเช่นกันและฉันคิดว่า "กลิ่น" ของฟาวเลอร์ดีกว่าการพูดว่า "รหัสนี้มีรสชาติไม่ดี" ที่กล่าวว่าฉันคิดว่า OO ไม่ได้เกี่ยวกับการเปรียบเปรยตามธรรมชาติและคนที่คิดว่า
วัตถุเพิ่งโผล่มาที่คุณนั้นโดยพื้นฐานแล้วไม่มีประเด็น
คุณกำหนดจักรวาลวัตถุและจักรวาลของวัตถุที่ดีกว่าส่งผลให้โค้ดสั้นลงเข้าใจง่ายทำงานได้ดีขึ้นหรือทั้งหมดนี้ (และเกณฑ์บางอย่างที่ฉันลืม) ฉันคิดว่าคนที่ใช้วัตถุธรรมชาติของลูกค้า / โดเมนเป็นวัตถุในการเขียนโปรแกรมกำลังขาดพลังในการกำหนดจักรวาลใหม่
ตัวอย่างเช่นเมื่อคุณทำระบบการจองสายการบินสิ่งที่คุณเรียกว่าการจองอาจไม่ตรงกับการจองทางกฎหมาย / ธุรกิจเลย
แนวคิดพื้นฐานบางอย่างเป็นเครื่องมือที่ยอดเยี่ยมจริงๆ
ฉันคิดว่าคนส่วนใหญ่พูดเกินจริงกับสิ่งนั้น "เมื่อคุณมีค้อนพวกเขาก็เป็นตะปูทั้งหมด" ฉันคิดว่าอีกด้านหนึ่งของเหรียญ / กระจกก็เหมือนจริง: เมื่อคุณมีแกดเจ็ตเช่นความหลากหลาย / การถ่ายทอดทางพันธุกรรมคุณจะเริ่มพบการใช้งานที่เหมาะกับเช่นถุงมือ / ถุงเท้า / คอนแทคเลนส์ เครื่องมือของ OO มีประสิทธิภาพมาก ฉันคิดว่าการสืบทอดครั้งเดียวเป็นสิ่งจำเป็นอย่างยิ่งสำหรับคนที่จะไม่ถูกพาไป
ซอฟต์แวร์มรดกหลายรายการของฉันเองที่
ไม่สามารถทนได้
OOP คืออะไร?
ฉันคิดว่ามันเป็นวิธีที่ยอดเยี่ยมในการจัดการฐานรหัสขนาดใหญ่อย่างแน่นอน ฉันคิดว่ามันช่วยให้คุณจัดระเบียบและจัดระเบียบโค้ดของคุณใหม่และให้ภาษาสำหรับทำสิ่งนั้น (นอกเหนือจากภาษาโปรแกรมที่คุณใช้งานอยู่) และโมดูลาร์โค้ดด้วยวิธีที่เป็นธรรมชาติและเข้าใจง่าย
OOP ถูกกำหนดให้เกิดความเข้าใจผิดโดยนักพัฒนาซอฟต์แวร์ส่วนใหญ่
นี่เป็นเพราะมันเป็นกระบวนการเปิดหูเปิดตาเหมือนชีวิต: คุณเข้าใจ OO มากขึ้นเรื่อย ๆ ด้วยประสบการณ์และเริ่มหลีกเลี่ยงรูปแบบบางอย่างและจ้างคนอื่นเมื่อคุณฉลาดขึ้น หนึ่งในตัวอย่างที่ดีที่สุดคือคุณหยุดใช้การสืบทอดสำหรับคลาสที่คุณไม่ได้ควบคุมและเลือกใช้รูปแบบ
Facadeแทน
เกี่ยวกับมินิเรียงความ / คำถามของคุณ
ฉันอยากจะบอกว่าคุณพูดถูก การนำกลับมาใช้ใหม่เป็นความฝันส่วนใหญ่ นี่คือคำพูดจาก Anders Hejilsberg เกี่ยวกับหัวข้อนั้น (ยอดเยี่ยม) จากที่นี่ :
หากคุณขอให้โปรแกรมเมอร์เริ่มต้นเขียนการควบคุมปฏิทินพวกเขามักจะคิดกับตัวเองว่า "โอ้ฉันจะเขียนตัวควบคุมปฏิทินที่ดีที่สุดในโลก! มันจะเป็นแบบหลายรูปแบบเมื่อเทียบกับประเภทของปฏิทินมันจะมีผู้แสดงผล และแมงกะพรุนและนี่นั่นและอื่น ๆ " พวกเขาต้องจัดส่งแอปพลิเคชันปฏิทินภายในสองเดือน พวกเขาวางโครงสร้างพื้นฐานทั้งหมดนี้ไว้ในการควบคุมจากนั้นใช้เวลาสองวันในการเขียนแอปพลิเคชันปฏิทินเส็งเคร็งไว้ด้านบน พวกเขาจะคิดว่า "ในแอปพลิเคชันเวอร์ชันถัดไปฉันจะทำมากกว่านี้"
เมื่อพวกเขาเริ่มคิดว่าพวกเขาจะนำการออกแบบเชิงนามธรรมอื่น ๆ ทั้งหมดไปใช้อย่างไรปรากฎว่าการออกแบบของพวกเขาผิดอย่างสิ้นเชิง และตอนนี้พวกเขาวาดภาพตัวเองจนเข้ามุมแล้วพวกเขาก็ต้องโยนของทั้งหมดออกไป ฉันได้เห็นสิ่งนั้นซ้ำแล้วซ้ำเล่า ฉันเชื่อมั่นในความเรียบง่าย เว้นแต่คุณจะแก้ปัญหาทั่วไปจริง ๆ อย่าพยายามวางกรอบสำหรับการแก้ปัญหาเฉพาะเพราะคุณไม่รู้ว่ากรอบงานนั้นควรมีลักษณะอย่างไร