การอธิบายตัวแปร
กรณีของคุณเป็นตัวอย่างของการอธิบายการรีแฟคเตอร์ตัวแปรอธิบาย กล่าวโดยย่อคือตัวแปรอธิบายซึ่งเป็นสิ่งที่ไม่จำเป็นอย่างเคร่งครัด แต่ให้คุณตั้งชื่อที่ชัดเจนกับบางสิ่งบางอย่างโดยมีจุดประสงค์เพื่อเพิ่มความสามารถในการอ่าน
รหัสคุณภาพดีสื่อสารถึงเจตนาของผู้อ่าน และในฐานะนักพัฒนาอาชีพที่สามารถอ่านและบำรุงรักษาได้อันดับหนึ่งของคุณคือเป้าหมาย
ดังนั้นกฎของหัวแม่มือที่ฉันอยากจะแนะนำคือ: ถ้าจุดประสงค์ของพารามิเตอร์ของคุณไม่ชัดเจนในทันทีคุณสามารถใช้ตัวแปรเพื่อตั้งชื่อที่ดีได้ ฉันคิดว่านี่เป็นวิธีปฏิบัติที่ดีโดยทั่วไป นี่คือตัวอย่างที่รวดเร็วและคาดเดาได้ - พิจารณา:
editButton.Enabled = (_grid.SelectedRow != null && ((Person)_grid.SelectedRow).Status == PersonStatus.Active);
เมื่อเทียบกับอีกต่อไปเล็กน้อย แต่เนื้อหาชัดเจนขึ้น:
bool personIsSelected = (_grid.SelectedRow != null);
bool selectedPersonIsEditable = (personIsSelected && ((Person)_grid.SelectedRow).Status == PersonStatus.Active)
editButton.Enabled = (personIsSelected && selectedPersonIsEditable);
พารามิเตอร์บูลีน
ตัวอย่างของคุณเน้นว่าทำไมบูลีนใน API มักเป็นแนวคิดที่ไม่ดี - ในด้านการโทรพวกเขาไม่ทำอะไรเลยเพื่ออธิบายสิ่งที่เกิดขึ้น พิจารณา:
ParseFolder(true, false);
คุณต้องค้นหาความหมายของพารามิเตอร์เหล่านั้น ถ้าพวกเขา enums มันจะชัดเจนมากขึ้น:
ParseFolder(ParseBehaviour.Recursive, CompatibilityOption.Strict);
แก้ไข:
เพิ่มหัวเรื่องและสลับลำดับของสองย่อหน้าหลักเนื่องจากมีคนจำนวนมากเกินไปที่มุ่งเน้นไปที่ส่วนพารามิเตอร์บูลีน (เพื่อความเป็นธรรมมันเป็นย่อหน้าแรกที่ แต่เดิม) นอกจากนี้ยังเพิ่มตัวอย่างในส่วนแรก