Code Smell 28 - Setters

โปรแกรมเมอร์รุ่นเยาว์คนแรกทำ IDE แบบฝึกหัดและนักพัฒนาอาวุโสคอยสอนพวกเขาในรูปแบบการต่อต้านนี้

ภาพถ่ายโดย Victor Rodriguez บน Unsplash

ปัญหา

  • ความไม่แน่นอน
  • การซ่อนข้อมูล
  • แบบจำลองภาวะโลหิตจาง
  • ล้มเหลวอย่างรวดเร็ว
  • ความซื่อสัตย์
  • รหัสซ้ำ
  1. หลีกเลี่ยง Setters
  2. ตั้งค่าแอตทริบิวต์ที่จำเป็นในการเริ่มต้นส่วนตัว

ไม่ถูกต้อง

การกลายพันธุ์ทำให้เกิดปัญหามากมาย

ข้อมูลที่ซ่อนถูกละเมิด

ขวา

การตรวจจับ

ขั้นตอนแรกคือห้ามแอตทริบิวต์สาธารณะ (หากภาษาอนุญาต)

ประการที่สองเราจะค้นหาเมธอดsetXXXX ()วิเคราะห์โครงสร้างวิธีการ (ควรเป็นการกำหนดให้แอตทริบิวต์xxxx )

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

ตัวอย่าง

  • DTO

การตั้งค่าคุณลักษณะที่มีความปลอดภัยสำหรับที่ไม่จำเป็นแอตทริบิวต์

พฤติกรรมที่สำคัญคือสิ่งที่ทำให้วัตถุหนึ่งแตกต่างจากอีกวัตถุหนึ่ง

มันเป็นเรื่องที่เกี่ยวข้องกับพฤติกรรมและไม่ได้ข้อมูล ไม่ใช่คำจำกัดความของคีย์หลัก

รูปแบบบางอย่างเช่นBuilderต้องการการตั้งค่าชิ้นส่วนด้วยวิธีการควบคุมที่เพิ่มขึ้น การตรวจสอบจะเสร็จสิ้นในตอนท้ายและการเปรียบเทียบเอนทิตีที่แท้จริงต้องการ

การตั้งค่าโดยไม่ตั้งใจมีข้อเสียและข้อควรพิจารณามากมายที่กล่าวไปแล้ว

แท็ก

  • การกลายพันธุ์
  • การซ่อนข้อมูล

สร้างไม่สมบูรณ์และโรคโลหิตจางวัตถุคือการปฏิบัติที่เลวร้ายมากละเมิด
ความไม่แน่นอนล้มเหลวหลักการรวดเร็วและโลกแห่งความจริงbijections

ความสัมพันธ์

Code Smell 01 - Anemic Models

ข้อมูลเพิ่มเติม

นี่คือการอภิปรายเต็มรูปแบบเกี่ยวกับSetters

นางแบบเปลือย - ส่วนที่ 1: ผู้ตั้งถิ่นฐาน

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

Rebecca Wirfs-Brock

บทความนี้เป็นส่วนหนึ่งของ CodeSmell Series

วิธีค้นหาส่วนที่มีกลิ่นเหม็นของรหัสของคุณ

Suggested posts

การค้นหาข้อมูลเกี่ยวกับชื่อโดเมน

ตัดตอนมาจาก Small, Sharp Software Tools โดย Brian P. Hogan

การค้นหาข้อมูลเกี่ยวกับชื่อโดเมน

เมื่อคุณส่งคำขอไปที่ facebook.com คอมพิวเตอร์ของคุณจะค้นหาชื่อโดเมนเพื่อแปลชื่อโดเมนนั้นเป็นที่อยู่ IP เพื่อให้คอมพิวเตอร์ของคุณสามารถเชื่อมต่อได้

D-word และ L-word ในการออกแบบ UI เรื่องภาษา อย่าเหยียดเชื้อชาติ

D-word และ L-word ในการออกแบบ UI เรื่องภาษา อย่าเหยียดเชื้อชาติ

ภาษาของเราเป็นเครื่องมืออันทรงพลังที่สามารถกำหนดความคิด ทัศนคติ และการกระทำของเรา แม้แต่คำที่ดูเหมือนไม่เป็นอันตรายก็สามารถขยายเวลาอคติและแบบแผนที่เป็นอันตรายได้

Related posts

วิธีช่วยโลกและสร้างรายได้

วิธีช่วยโลกและสร้างรายได้

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

ทบทวนสื่อ: ความจริง 5 ประการของ McChesney และอนาคตของการสื่อสาร

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

การรวบรวม OSINT เพื่อการล่าภัยคุกคาม

การรวบรวม OSINT เพื่อการล่าภัยคุกคาม

สวัสดีชาวไซเบอร์! ยินดีต้อนรับกลับสู่ OSINT สำหรับซีรี่ส์การล่าภัยคุกคาม ในบทความแรก ฉันได้ให้ภาพรวมของ OSINT และความสำคัญในการตามล่าภัยคุกคาม

สิ่งที่คุณสามารถทำได้ในช่วงเวลาแห่งการรอคอย (รองานแรกของคุณในด้านเทคโนโลยี)

สิ่งที่คุณสามารถทำได้ในช่วงเวลาแห่งการรอคอย (รองานแรกของคุณในด้านเทคโนโลยี)

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