ฉันมักจะได้ยินว่ามันบอกว่าวัตถุไม่ได้ส่งในแง่ของการใช้รหัสซ้ำ คุณเห็นด้วยไหม? หากคุณเชื่อว่าพวกเขาไม่ได้ทำไมไม่?
ฉันมักจะได้ยินว่ามันบอกว่าวัตถุไม่ได้ส่งในแง่ของการใช้รหัสซ้ำ คุณเห็นด้วยไหม? หากคุณเชื่อว่าพวกเขาไม่ได้ทำไมไม่?
คำตอบ:
ไม่ไม่จำเป็น
ออบเจกต์ให้ความหมายที่ดีกว่าการจัดระเบียบโค้ด / ฟังก์ชันการทำงานและอาจจะใช้งานง่าย
ไลบรารีที่ได้รับการออกแบบมาอย่างดีจะมอบสัญญาการใช้รหัสซ้ำไม่ใช่วัตถุต่อหนึ่งรายการ
จริงๆแล้วฉันไม่แน่ใจว่า "การใช้รหัสซ้ำ" เป็นสิ่งที่ทุกคนกำลังทำอยู่ (หรืออย่างน้อยก็ควรเป็นหลัง) ปรัชญาของฉันคือ "ส่วนประกอบซอฟต์แวร์" ซึ่งหมายถึงการบำรุงรักษาที่ดีขึ้นผ่านส่วนต่อประสานที่ดีและหลีกเลี่ยงข้อต่อที่ไม่จำเป็น "การนำโค้ดกลับมาใช้ใหม่" เป็นหนึ่งในสิ่งที่ตกหล่นในบางครั้ง - รหัสที่ซ้ำกันโดยไม่จำเป็นนั้นเป็นสัญญาณว่าคุณได้จัดระเบียบสิ่งต่าง ๆ ในทางที่ผิดและแน่นอนว่ามันเป็นความเจ็บปวดที่ต้องรักษาไว้
เพื่อตอบคำถามอีกเล็กน้อยโดยตรงมีคอลเลกชันของเครื่องมือที่ดีพอที่จะหลีกเลี่ยงการทำซ้ำตัวเอง: การสืบทอดลักษณะการมอบหมายหน้าที่ลำดับขั้นสูง ฯลฯ ของเหล่านั้นผู้คนมักจะสับสนกับ OO โดยรวม - และ พวกเขามีแนวโน้มที่จะใช้มากเกินไปถ้าคุณถามฉัน บางทีนั่นอาจเป็นที่ที่ "OO sucks" กลิ่นอายมาจาก: การค้นหาการสืบทอดอยู่ในที่ที่ไม่มีสิทธิ์ตามธรรมชาติ :)
ไม่ "ออบเจ็กต์" ยังไม่ได้สร้างรหัสให้ใช้งานได้ง่ายขึ้นหรือใช้กันทั่วไปอีก ข้อกังวลเดียวกันที่ป้องกันไม่ให้โค้ดถูกนำกลับมาใช้ในโปรแกรมโมดูลาร์ (การออกแบบการทดสอบและการจัดทำเอกสาร API เอนกประสงค์ต้องการความพยายามล่วงหน้ามากกว่าการเขียนรูทีนแบบครั้งเดียวและแจ็คของการซื้อขายทั้งหมดอาจเป็น ต้นแบบของไม่มี - ตรรกะที่ตั้งใจจะนำมาใช้ใหม่อาจไม่เหมาะสำหรับการใช้งานจริง) นำไปใช้กับโปรแกรม OO ด้วยความกังวลเพิ่มเติมว่ารูปแบบวัตถุที่ออกแบบมาไม่ดีสามารถขัดขวางการใช้ซ้ำได้ รหัส.
OO เป็นสิ่งที่เป็นนามธรรมสำหรับปัญหามากมาย แต่ต้องระวัง hype '80s-'90s: มันไม่ได้แก้ปัญหาพื้นฐานของการค้าของเราได้อย่างน่าอัศจรรย์มากไปกว่ามันทำให้วาฟเฟิลสำหรับคุณในขณะที่คุณหลับ
ฉันไม่ได้คาดหวังว่าวัตถุทั้งหมดจะถูกนำมาใช้ใหม่ แต่เรามีวัตถุจำนวนมากที่เรานำมาใช้ใหม่ในโครงการที่แตกต่างกันมากมาย นอกจากนี้เรายังมีวัตถุที่เพิ่งนำกลับมาใช้ในโครงการหนึ่ง เรามักจะใช้วัตถุทางธุรกิจเดียวกัน (หรือวัตถุการถ่ายโอนข้อมูล) รวมถึงวัตถุทางธุรกิจจากแอปเดสก์ท็อปคลิก - ครั้งเดียวเว็บแอปและแอพโทรศัพท์ทั้งหมดสำหรับโครงการเดียวกัน
คุณเคยได้ยินบ้างไหมว่า OO ไม่สามารถใช้งานซ้ำได้? และอะไรคือเหตุผล บางทีการออกแบบวัตถุของพวกเขาบังคับให้พวกเขาตกอยู่ในสถานการณ์นั้น ...
โปรแกรมเมอร์บางคนจะคัดลอกและวางในภาษาและสไตล์ใด ๆ
โปรแกรมเมอร์ที่ดีจริง ๆ สามารถหลีกเลี่ยงการคัดลอกและวางเกือบทุกภาษา
ฉันพบว่ารูปแบบ OO มีแนวโน้มที่จะสนับสนุนให้ใช้ซ้ำ ฉันเห็นโค้ด Java ที่เขียนในรูปแบบที่ไม่ใช่ OO (ซึ่งข้อมูลถูกแยกออกจากโค้ดเนื่องจากคำว่า ORM) และการใช้ซ้ำนั้นเป็นเรื่องที่น่าสังเวชอย่างแท้จริง - แต่ใน OO โปรแกรมเมอร์คนเดียวกันทำงานได้ดีกว่าในการออกแบบ ( และนำมาใช้ซ้ำ)
นอกจากนี้ในกรณีที่เราใช้รูปแบบที่ไม่ใช่ oo หรือ oo anti-patters เช่น setters / getters, switch statement, คลาสภายในที่ไม่ระบุชื่อ, ฟังก์ชั่นขนาดใหญ่และอย่างที่ฉันเคยเห็นรหัสนำมาใช้ซ้ำลงและสำเร็จรูปมากขึ้น ...
PS ฉันรู้ว่าผู้คนจะมีปัญหากับย่อหน้าก่อนหน้าดังนั้นฉันจะอธิบายเล็กน้อย
Setters และ getters ทำให้เกิดปัญหา OO เนื่องจากอนุญาตให้คุณทำงานกับสมาชิกของวัตถุ (วัตถุควรจัดการกับสมาชิกของ OWN) สิ่งนี้แจกจ่ายรหัสที่ทำงานในชั้นเรียนของคุณในคลาสอื่น ๆ ที่คุณต้องคัดลอกฟังก์ชันการทำงานรอบ setter / getter . สิ่งนี้ใช้กับคุณสมบัติเช่นกัน - เพียงเพราะคุณสมบัติง่ายขึ้นไม่ได้ทำให้ "ดี" ในทุกสถานการณ์
ไม่สามารถนำรหัสในชั้นเรียนภายในที่ไม่ระบุชื่อออกมาได้เลยและผู้คนก็ลืมว่ามีหลายสิ่งหลายอย่าง (เช่นผู้ฟัง) สามารถและควรเป็นคลาสที่เต็มเปี่ยม - ซึ่งใช้กับการปิดเช่นกัน! หากคุณใช้คลาสภายในที่ไม่ระบุชื่อเพื่อใช้บางสิ่งบางอย่างเช่นผู้ฟังคุณมีแนวโน้มที่จะคัดลอกและวางการใช้งานของคุณมากกว่าที่จะแยกรหัสออกเป็นวิธีการหรือเป็นคลาสของตัวเองและเรียกมันแทน การปิดสามารถปรับปรุงการใช้ซ้ำได้ - ขึ้นอยู่กับว่าคุณใช้งานอย่างไร
ในหลายกรณีคุณสมบัติที่มีให้คุณกำหนดวิธีการจัดโครงสร้างรหัสของคุณ OO มีประสิทธิภาพยิ่งขึ้นเมื่อช่วยให้คุณเห็นภาพโค้ดทั้งหมดและวิธีการโต้ตอบของคุณ แต่เป็นคำถามอื่น
วัตถุไม่มีความสามารถในการส่งรหัสที่นำกลับมาใช้มากกว่าอุปกรณ์บันไดหรืออุปกรณ์ออกกำลังกายอื่น ๆ ที่สามารถลดน้ำหนักได้ นักพัฒนาจะต้องมีแรงจูงใจในการใช้เครื่องมืออย่างเหมาะสม
เมื่อทีมซอฟต์แวร์วางค่าที่สูงขึ้นในการใช้รหัสทดสอบซ้ำกว่าที่ทำในการเก็บรายละเอียดทั้งหมดไว้ในหัวของพวกเขาคุณจะเห็นวัตถุและวิธีการที่ละเอียดยิ่งขึ้น
OOP ให้วิธีเพิ่มเติมแก่คุณในการนำรหัสมาใช้ซ้ำ
ไม่มีกระสุนเงิน
ในสิ่งที่คุณใส่เข้าไปและสิ่งที่คุณคาดหวังตอบแทน!
ใช่. การเขียนโปรแกรมเชิงวัตถุที่ดีจะส่งเสริมการแยกความกังวลการมีเพศสัมพันธ์ต่ำการติดต่อกันสูงและการซ่อนข้อมูล สิ่งเหล่านี้ล้วนสำคัญกับการใช้รหัสซ้ำ
ฉันขอยืนยันว่าประโยชน์หลักของ OOP คือการแยกส่วนและปรับเปลี่ยนได้แทนที่จะนำมาใช้ซ้ำ แต่นั่นเป็นคำถามอีกข้อ
วัตถุที่เปิดใช้งานรหัส re-sue แต่เป็นเช่นนี้ไม่ใช่เทคนิคที่มากที่สุดสำหรับการที่ ฉันคิดว่าการใช้โค้ดซ้ำนั้นได้รับการส่งเสริมผ่านเทคนิคที่เกี่ยวข้องกับวัตถุเช่นการสืบทอดการพหุสัณฐานการบรรทุกเกินพิกัดและเทมเพลต
ใช่พวกเขาทำเช่นนั้นความสามารถในการขยาย (สืบทอด) จากซูเปอร์คลาสเคลียร์ช่วยให้มีการนำโค้ดกลับมาใช้ใหม่ฉันไม่แน่ใจว่าใครจะโต้แย้งได้ คุณสามารถขยายชั้นเรียนและแทนที่หนึ่งวิธีในขณะที่ใช้ส่วนที่เหลือจาก super class หากนี่ไม่ใช่การช่วยงานในการใช้รหัสซ้ำฉันไม่ทราบว่าอะไรคือ
หากพวกเขาได้ส่งมอบสัญญาของพวกเขาของการใช้ซ้ำรหัสจนถึง? ใช่ถ้าโปรแกรมที่เขียนด้วย OOP อยู่ในใจใช้รูปแบบการออกแบบอย่างชาญฉลาด มิฉะนั้นส่วนใหญ่ไม่มี แต่เมื่อพิจารณาถึงความนิยมของโปรแกรมที่ไม่สำคัญขนาดใหญ่ที่ระบบ Adobe, Google และเช่นเขียนด้วย C ++ หรือ Java หรือภาษา OOP อื่น ๆ ฉันจะบอกว่า OOP มีทางยาวไปก่อนที่จะสิ้นสุดลง เวลานั้นจะเหมาะกว่าที่จะถามคำถามนี้และสามารถช่วยจัดเตรียมงานดินสำหรับกระบวนทัศน์ใหม่