ฉันจะพยายามให้คำตอบกับการใช้งานดังกล่าวหลังจากได้เห็นและทำงานเกี่ยวกับเรื่องนี้ในโครงการของฉันเช่นกัน
อ่านรหัสได้
ก่อนอื่นให้พิจารณาว่าการอ่านรหัสมีความสำคัญและการปฏิบัตินี้ตรงกันข้ามกับที่ doSomething(Employee e)
มีคนอ่านชิ้นส่วนของรหัสและขอเพียงแค่บอกว่ามันมีฟังก์ชั่น สิ่งนี้ไม่สามารถอ่านได้อีกต่อไปเนื่องจากมี 10 Employee
คลาสที่แตกต่างกันที่มีอยู่ในแพ็คเกจที่แตกต่างกันคุณจะต้องทำการประกาศการนำเข้าก่อนเพื่อค้นหาว่าข้อมูลของคุณคืออะไร
อย่างไรก็ตามนี่คือมุมมองระดับสูงและบ่อยครั้งที่เรามีการสุ่มชื่อที่ดูเหมือนว่าไม่มีใครสนใจหรือพบเพราะความหมายสามารถได้มาจากรหัสที่เหลือและแพ็คเกจที่คุณอยู่ดังนั้นเราจึงอาจโต้แย้ง ภายในนั้นไม่มีปัญหาเพราะแน่นอนถ้าคุณเห็นEmployee
ในhr
แพ็คเกจคุณต้องรู้ว่าเรากำลังพูดถึงมุมมอง HR ของพนักงาน
สิ่งต่าง ๆ แตกสลายทันทีที่คุณออกจากแพ็คเกจเหล่านี้ เมื่อคุณทำงานในโมดูล / แพ็คเกจ / อื่น ๆ ที่แตกต่างกันและจำเป็นต้องทำงานกับพนักงานคุณกำลังเสียสละความสามารถในการอ่านหากคุณไม่ได้มีคุณสมบัติครบถ้วนประเภท นอกจากนี้การมี 10 Employee
คลาสที่แตกต่างกันหมายความว่าการเติมข้อมูลอัตโนมัติของ IDE จะไม่ทำงานอีกต่อไปและคุณต้องเลือกจากประเภทพนักงานด้วยตนเอง
การทำสำเนารหัส
เนื่องจากลักษณะที่แท้จริงของแต่ละคลาสที่เกี่ยวข้องกับรหัสของคุณถูกผูกไว้ให้แย่ลงเนื่องจากการทำซ้ำจำนวนมาก ในกรณีส่วนใหญ่คุณจะมีบางอย่างเช่นชื่อพนักงานหรือหมายเลขประจำตัวบางตัวซึ่งแต่ละชั้นต้องดำเนินการ แม้ว่าแต่ละคลาสจะเพิ่มมุมมองของตัวเองหากพวกเขาไม่เปิดเผยข้อมูลของพนักงานพื้นฐานคุณก็จะได้รับรหัสจำนวนมหาศาลที่ไร้ประโยชน์ แต่มีราคาแพง
ความซับซ้อนของรหัส
คุณอาจถามอะไรที่ซับซ้อนได้ ท้ายที่สุดแต่ละคลาสสามารถทำให้มันง่ายอย่างที่มันต้องการ สิ่งที่เป็นปัญหาอย่างแท้จริงคือวิธีที่คุณเผยแพร่การเปลี่ยนแปลง ในซอฟต์แวร์ที่มีคุณสมบัติหลากหลายพอสมควรคุณอาจสามารถเปลี่ยนข้อมูลพนักงาน - และคุณต้องการสะท้อนให้เห็นทุกที่ บอกว่าผู้หญิงคนหนึ่งเพิ่งแต่งงานและคุณต้องเปลี่ยนชื่อเธอจากX
เป็นY
เนื่องจากว่า ยากพอที่จะทำสิ่งนี้ได้ทุกที่ แต่ยิ่งยากขึ้นเมื่อคุณมีคลาสที่แตกต่างเหล่านี้ ทั้งนี้ขึ้นอยู่กับตัวเลือกการออกแบบอื่น ๆ ของคุณซึ่งอาจหมายถึงว่าแต่ละคลาสต้องใช้ตัวเรียงลำดับของตัวเองหรือเพื่อรับการแจ้งเตือนการเปลี่ยนแปลง - ซึ่งโดยพื้นฐานแล้วแปลว่าปัจจัยที่นำไปใช้กับจำนวนคลาสที่คุณต้องจัดการ . และแน่นอนว่าการทำสำเนาโค้ดมากกว่าเดิมและการอ่านรหัสได้น้อยลง .. ปัจจัยเช่นนี้อาจเพิกเฉยต่อการวิเคราะห์ความซับซ้อนได้ แต่สิ่งเหล่านี้แน่ใจว่าน่ารำคาญเมื่อใช้กับขนาดของรหัสฐานของคุณ
การสื่อสารรหัส
นอกเหนือจากปัญหาข้างต้นที่มีความซับซ้อนของรหัสซึ่งเกี่ยวข้องกับตัวเลือกการออกแบบคุณยังลดความชัดเจนของการออกแบบระดับสูงขึ้นและสูญเสียความสามารถในการสื่อสารกับผู้เชี่ยวชาญด้านโดเมนอย่างถูกต้อง given an employee, you can do ...
เมื่อคุณหารือเกี่ยวกับสถาปัตยกรรมการออกแบบหรือความต้องการของคุณจะไม่มีอิสระที่จะทำให้งบง่ายๆเช่น นักพัฒนาจะไม่ทราบว่าemployee
จริงๆแล้วมีความหมายในตอนนี้ แม้ว่าผู้เชี่ยวชาญด้านโดเมนจะรู้แน่นอน เราทุกคนทำ ประเภทของ แต่ในแง่ของซอฟต์แวร์มันไม่ง่ายที่จะสื่อสารอีกต่อไป
วิธีกำจัดปัญหา
หลังจากตระหนักถึงสิ่งนี้แล้วและหากทีมของคุณตกลงว่าเป็นปัญหาใหญ่พอที่จะแก้ไขปัญหาคุณจะต้องหาวิธีจัดการกับมัน โดยทั่วไปคุณไม่สามารถขอให้ผู้จัดการของคุณแจกทั้งสัปดาห์เพื่อให้พวกเขาสามารถนำขยะออกไปได้ ดังนั้นในสาระสำคัญคุณจะต้องหาวิธีกำจัดบางส่วนของคลาสเหล่านี้ทีละครั้ง ส่วนที่สำคัญที่สุดเกี่ยวกับเรื่องนี้คือการตัดสินใจ - กับทีมทั้งหมด - สิ่งที่เป็นEmployee
จริง ไม่ได้รวมทั้งหมดของคุณลักษณะของแต่ละบุคคลเป็นหนึ่งพระเจ้าพนักงาน คิดถึงพนักงานหลักและที่สำคัญที่สุดตัดสินใจว่าEmployee
จะให้ชั้นเรียนนั้นอยู่ที่ไหน
หากคุณทำการตรวจสอบโค้ดมันเป็นเรื่องง่ายโดยเฉพาะอย่างยิ่งที่จะทำให้แน่ใจว่าปัญหาจะไม่เติบโตอีกต่อไปเช่นหยุดทุกคนในแทร็กเมื่อพวกเขาต้องการเพิ่มอีกEmployee
ครั้ง ยังดูแลว่าระบบย่อยใหม่เป็นไปตามข้อตกลงEmployee
และไม่ได้รับอนุญาตให้เข้าถึงเวอร์ชันเก่า
ขึ้นอยู่กับภาษาการเขียนโปรแกรมของคุณคุณอาจต้องการทำเครื่องหมายชั้นเรียนที่จะถูกกำจัดในที่สุดด้วยบางสิ่งบางอย่างเช่น@Deprecated
เพื่อช่วยให้ทีมของคุณทราบทันทีว่าพวกเขากำลังทำงานกับสิ่งที่จะต้องเปลี่ยน
สำหรับการกำจัดคลาสพนักงานที่ล้าสมัยคุณสามารถตัดสินใจได้ว่าแต่ละกรณีจะถูกกำจัดได้ดีที่สุดหรือเพียงเห็นด้วยกับรูปแบบทั่วไป คุณสามารถใส่ชื่อคลาสและล้อมรอบพนักงานที่แท้จริงคุณสามารถใช้รูปแบบ (มัณฑนากรหรืออะแดปเตอร์เป็นที่จดจำ) หรือหรือหรือ
เพื่อทำให้เรื่องราวสั้น ๆ สั้น ๆ : "การฝึกฝน" นี้เป็นเสียงทางเทคนิค แต่สำลักเต็มไปด้วยค่าใช้จ่ายแอบแฝงที่จะเกิดขึ้นต่อไปตามถนน แม้ว่าคุณจะไม่สามารถกำจัดปัญหาได้ในทันที แต่คุณสามารถเริ่มต้นได้ทันทีโดยมีผลกระทบที่เป็นอันตราย