วิธีที่จะกลายเป็นดีในการวิเคราะห์และออกแบบเชิงวัตถุ (OOAD)?


26

การเป็นนักวิเคราะห์และนักออกแบบที่ดีจะเป็นประโยชน์อย่างมากต่อผู้พัฒนา แต่มีอุปสรรคสำหรับเรื่องนี้อย่างแน่นอน ไม่ใช่ทุกคนที่สนใจ OOAD และไม่ใช่ทุกคนที่สนใจรู้เส้นทาง OOAD ที่ดีควรรู้ภาษา OO หลายภาษาหรือไม่ หรือเขา / เธอควรทำโครงการล้มเหลว เราจะเป็น OOAD ที่ดีได้อย่างไร?

คำตอบ:


34

คนที่ไม่สนใจกำลังสร้างอุปสรรคของตัวเอง ฉันไม่ต้องกังวลเกี่ยวกับเรื่องนั้น

สำหรับผู้ที่ไม่ทราบเส้นทางฉันแนะนำ:

  • ฉันพบว่าทุกภาษา OO ที่ฉันเรียนรู้ทำให้ฉันเป็นนักพัฒนา OO ที่ดีขึ้น สามารถนำสิ่งต่าง ๆ จากแต่ละภาษามาสู่คนอื่นได้ตราบใดที่คุณพบชุมชน
  • คุณเรียนรู้เพิ่มเติมจากความล้มเหลวมากกว่าจากความสำเร็จ แต่ลองทำตามเวลาของคุณเอง อย่างมืออาชีพวางใจในผู้ที่มีประสบการณ์มากขึ้นอย่างน้อยบางเวลา - แต่อย่ากลัวที่จะถามว่า "ทำไม"
  • เรียนรู้หลักการทั้งห้าของโซลิดและเข้าใจว่าทำไมจึงมีอยู่ ไม่มีของพวกเขาเป็นกฎ แต่เป็นแนวทางที่ดีเมื่อคุณสูญเสีย
  • การทดสอบพัฒนาขับเคลื่อนทำให้การพัฒนาทักษะการออกแบบ OO ของฉันดีกว่าสิ่งอื่น ๆ
  • คุณจะไม่ดีที่สุดจนกว่าคุณจะได้จากการลงมือเปลี่ยนไปสู่การทำ overengineering และจากนั้นก็พบความสมดุลที่ถูกต้อง
  • ที่จริงแล้วคุณคิดว่าคุณจะไม่ดีเท่าคุณสองปีต่อมา
  • อ่านหนังสือและบล็อกจำนวนมาก แต่ไม่นำข่าวประเสริฐ อุตสาหกรรมนี้ยังไม่พบและอาจไม่เคยพบมาก่อนเป็นเส้นทางที่สมบูรณ์แบบ
  • โดยทั้งหมดเรียนรู้รูปแบบการออกแบบ แต่อย่ามองหาสถานที่ที่จะใช้เพียงแค่ใช้พวกเขาเป็นผู้อำนวยความสะดวกในการติดต่อสื่อสาร

หวังว่าบางอย่างที่ช่วย


1
รายการที่ดี @pdr +1
Saeed Neamati

5
+1 "ยังไม่พบและอาจไม่มีทางเป็นเส้นทางที่สมบูรณ์แบบ"
ocodo

1
+1 "การทดสอบพัฒนาขับเคลื่อนทำให้การพัฒนาทักษะการออกแบบ OO ของฉันดีกว่าสิ่งอื่น ๆ ที่ฉันเคยเรียนรู้มา"
วินไคลน์


ขอบคุณฉันมีคำถามสำหรับ SOLID อภิปราย programmers.stackexchange.com/questions/155852/ …
LCJ

5

ฉันคิดว่าในการที่จะชื่นชมแบบจำลอง OO อย่างเต็มที่คุณต้องมีประสบการณ์ที่ล้มเหลวอย่างน่าสังเวชด้วยเทคนิคการเขียนโปรแกรมที่ไม่ใช่ OO คุณสามารถเข้าใจ OO ทั้งภายในและภายนอก แต่เพื่อชื่นชมและให้ความเคารพมันจะต้องเป็นเครื่องมือใหม่ที่เปล่งประกายซึ่งเข้ามาแทนที่สนิมเก่าที่ไม่ได้ทำงาน

ฉันสอนตัวเองเป็นเวลา 7 ปีก่อนในที่สุดก็เรียนรู้ OO ในระดับวิทยาลัย Java ก่อนหน้านั้นฉันจะสร้างโครงการเหล่านี้ออกมาอย่างต่อเนื่องและพวกเขาจะใหญ่มากจนฉันจะลืมสิ่งที่เกิดขึ้น พวกเขาจะมีขนาดใหญ่ไม่มีการรวบรวมกันและต้องการการบำรุงรักษาจำนวนมากเพื่อทำการเปลี่ยนแปลงเล็กน้อย โดยทั่วไปฉันพบว่าตัวเองยังคงจมอยู่กับรหัสของฉัน

ฉันใช้เวลาสักครู่กว่าจะทำให้สมองของฉันหลุดพ้นจากการออกแบบเชิงเส้นที่ฉันได้นำมาใช้ แต่เมื่อฉันเข้าใจแบบจำลอง OO อย่างสมบูรณ์แล้วมันก็เหมือนกับยูเรก้า! ฉันสามารถเขียนโค้ดโครงการที่ซับซ้อนมากขึ้นได้ด้วยตัวเองและผลผลิตของฉันก็พุ่งทะลุหลังคาหลังจากเรียนรู้แนวคิดต่าง ๆ เช่นการสืบทอด ฉันไม่ต้องเสียเวลาเขียนโค้ดใหม่หรือเริ่มต้นใหม่เพราะทุกอย่างตรงไปตรงมาสมเหตุสมผลและมันใช้งานง่าย

ฉันคิดว่าโปรแกรมเมอร์ทุกคนควรรู้ภาษามากที่สุดเท่าที่จะทำได้ สิ่งนี้จะทำให้พวกเขาเป็นทหารผ่านศึกที่ช่ำชองมากขึ้นไม่ว่าจะเป็น OO หรือไม่ก็ตาม เมื่อคุณเข้าใจ OO แล้วคุณสามารถใช้เทคนิคเหล่านั้นและนำไปใช้ได้ทุกที่ที่ใช้

IMHO หากคุณไม่เข้าใจหรือไม่มีความปรารถนาที่จะเรียนรู้ OO คุณจะมีความพร้อมในสนามรบของชีวิตไม่เพียงพอ บริษัท จำนวนมากขึ้นกำลังใช้ภาษา OO ที่ใหม่กว่า ฉันไม่เห็นเหตุผลใด ๆ ที่ไม่รู้จักรุ่น OO ในวันนี้

ขึ้นอยู่กับว่าบุคคลนั้นเรียนรู้อย่างไรนั้นขึ้นอยู่กับว่าพวกเขาต้องการเรียนรู้รูปแบบอย่างไร ฉันเรียนรู้ได้ดีที่สุดเมื่อมีคนสอนฉันและการไปเรียน Java I และ Java II นั้นสร้างความแตกต่างอย่างมากสำหรับฉัน ฉันอยากจะแนะนำให้เลือกวิชาวิศวกรรมซอฟต์แวร์ในวิทยาลัยหรือเพียงแค่ออนไลน์และมองหาบทเรียน OO หากคุณไม่สามารถเข้าเรียนหลักสูตรวิทยาลัยหรือต้องการเรียนรู้ในเวลาว่าง

เมื่อฉันคิดย้อนกลับไปว่ามันถูกอธิบายให้ฉันฉันพูด; แอปเปิลคือแอปเปิลและออเรนจ์เป็นส้ม ใช่พวกเขาทั้งคู่ตกลงมาจากต้นไม้ แต่พวกเขาเป็นผลไม้สองอย่างที่ต่างกันโดยสิ้นเชิง


1
คุณหมายถึงล้มเหลวอย่างน่าสังเวชด้วยฟังก์ชั่นการเขียนโปรแกรมหรือล้มเหลวอย่างน่าสังเวชด้วยการเขียนโปรแกรมตามขั้นตอน?
Andrew Grimm

ล้มเหลวอย่างน่าสังเวชด้วยฟังก์ชั่นการเขียนโปรแกรม แต่ไม่ล้มเหลวในการเรียนรู้ ฉันหมายถึงความล้มเหลวในการดำเนินการที่ประสบความสำเร็จเนื่องจากข้อ จำกัด ของมัน
Styler

ดังนั้นคุณหมายถึงการเขียนโปรแกรมที่ใช้งานได้จริงไม่ใช่การเขียนโปรแกรมตามขั้นตอนหรือไม่
Andrew Grimm

การเขียนโปรแกรมที่ไม่ใช่ OO
Styler

2
ฉันขอแนะนำให้แก้ไขอย่างแน่นอนเนื่องจากไม่ใช่ OO! = ใช้งานได้ตามจินตนาการ สิ่งต่าง ๆ สามารถเป็นได้ทั้ง
หมอผี

0

มีอุปสรรคอยู่เสมอสำหรับผู้ที่สนใจหรือไม่ แต่บริบทและความรุนแรงอาจแตกต่างกันไป

ไม่จำเป็นที่คุณจะต้องเรียนรู้หลายภาษาสำหรับแนวคิด OO เริ่มด้วยภาษาเดียวที่คุณชอบในช่วงระยะเวลาหนึ่งคุณจะได้รับความแข็งแกร่งในภาษาโพสต์สิ่งนี้เป็นไปได้ในการสำรวจสิ่งที่คุณทำ มีอยู่แล้วและพยายามใช้ภาษาเดียวกันกับภาษาอื่น ความเชี่ยวชาญในภาษาเดียวช่วยในการเปลี่ยนเป็นภาษาใหม่เนื่องจากคุณจะมีเกณฑ์มาตรฐานในการให้คะแนน

โครงการใด ๆ เป็นประสบการณ์การเรียนรู้มากกว่าความสำเร็จสิ่งสำคัญคือคุณปรับเปลี่ยนคุณสมบัติเพื่อการใช้งานที่ดีที่สุดของคุณได้ดีบางครั้งมันก็ดีที่จะอ่านโค้ดอื่น ๆ และหาวิธีและสาเหตุที่ทำ หากคุณสามารถหาที่ปรึกษาได้จะดีมาก รู้เหตุผลเสมอว่าทำไมถึงเลือกสิ่งนี้ทำอย่างอื่นไม่ได้ พยายามทำงานกับตรรกะและรูปแบบการออกแบบของคุณเองและโยนมันให้กับผู้อาวุโส / ที่ปรึกษาของคุณ ด้วยวิธีนี้คุณจะต้องพัฒนาทักษะของคุณบางทีในช่วงเริ่มต้นพวกเขาจะตรงไปที่ถังขยะ แต่หลังจากนั้นคุณได้ลองและเรียนรู้สิ่งที่คุณทำผิด ซ้ำไปซ้ำมาคุณจะดีขึ้นเรื่อย ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.