นี่เป็นหัวข้อที่ถกเถียงกันอยู่และฉันคิดว่ามีความคิดเห็นมากเท่ากับที่มีโปรแกรมเมอร์ แต่เพื่อประโยชน์ของมันฉันต้องการทราบว่าการปฏิบัติทั่วไปในธุรกิจคืออะไร (หรือในที่ทำงานของคุณ)
ในที่ทำงานของฉันเรามีแนวทางการเข้ารหัสที่เข้มงวด ส่วนหนึ่งของนั้นจะทุ่มเทให้กับสายอักขระ / หมายเลข มันระบุ (สำหรับ C #):
อย่าใช้ค่าตัวอักษรตัวเลขหรือสตริงในรหัสของคุณนอกเหนือจากการกำหนดค่าคงที่เชิงสัญลักษณ์ ใช้รูปแบบต่อไปนี้เพื่อกำหนดค่าคงที่:
public class Whatever { public static readonly Color PapayaWhip = new Color(0xFFEFD5); public const int MaxNumberOfWheels = 18; }
มีข้อยกเว้นคือค่า 0, 1 และ null สามารถใช้ได้อย่างปลอดภัยเกือบตลอดเวลา บ่อยครั้งที่ค่า 2 และ -1 ก็โอเคเช่นกัน สตริงที่มีไว้สำหรับการบันทึกหรือการติดตามได้รับการยกเว้นจากกฎนี้ อนุญาตให้ใช้ตัวอักษรเมื่อความหมายชัดเจนจากบริบทและไม่ขึ้นอยู่กับการเปลี่ยนแปลงในอนาคต
mean = (a + b) / 2; // okay
WaitMilliseconds(waitTimeInSeconds * 1000); // clear enough
สถานการณ์ในอุดมคติจะเป็นรายงานการวิจัยอย่างเป็นทางการที่แสดงผลกระทบต่อความสามารถในการอ่าน / การบำรุงรักษาโค้ดเมื่อ
- หมายเลข / สตริงเวทมนต์อยู่ทั่วทุกที่
- สตริงมายากล / ตัวเลขถูกแทนที่ด้วยการประกาศอย่างต่อเนื่องอย่างสมเหตุสมผล (หรือในระดับความครอบคลุมที่แตกต่างกัน) - และโปรดอย่าตะโกนใส่ฉันสำหรับการใช้ "เหตุผล" ฉันรู้ว่าทุกคนมีความคิดแตกต่างกันว่า "สมเหตุสมผล" คืออะไร
- สตริง / ตัวเลขเวทย์มนตร์วางจำหน่ายเกินและในสถานที่ที่พวกเขาไม่จำเป็นต้อง (ดูตัวอย่างของฉันด้านล่าง)
ฉันอยากจะทำสิ่งนี้เพื่อให้มีข้อโต้แย้งเชิงวิทยาศาสตร์เมื่อโต้เถียงกับเพื่อนร่วมงานคนหนึ่งซึ่งกำลังจะประกาศค่าคงที่เช่น:
private const char SemiColon = ';';
private const char Space = ' ';
private const int NumberTen = 10;
อีกตัวอย่างหนึ่งคือ (และนี่คือ JavaScript):
var someNumericDisplay = new NumericDisplay("#Div_ID_Here");
คุณติด DOM ID ที่ด้านบนของไฟล์จาวาสคริปต์ของคุณหรือไม่หากใช้รหัสนั้นในที่เดียวเท่านั้น
ฉันได้อ่านหัวข้อต่อไปนี้:
StackExchange
StackOverflow
Bytes ชุมชน IT
มีบทความอีกมากมายและหลังจากอ่านรูปแบบบางอย่างเหล่านี้ก็โผล่ออกมา
ดังนั้นคำถามของฉันควรใช้สายอักขระและตัวเลขในรหัสของเรา? ฉันกำลังมองหาคำตอบของผู้เชี่ยวชาญที่ได้รับการสนับสนุนโดยอ้างอิงถ้าเป็นไปได้
NumberTen = 10
นั่นไม่มีจุดหมายเพราะหมายเลข 10 จะไม่ถูกนิยามใหม่ MaxRetryCount = 10
นั่นคือประเด็นที่เราอาจต้องการเปลี่ยนจำนวนการลองส่งใหม่สูงสุด private const char SemiColon = ';';
โง่. private const char LineTerminator = ';'
; ฉลาด.