ในบทความนี้โดย Alex Papadimoulis คุณสามารถดูตัวอย่างนี้:
private void attachSupplementalDocuments()
{
if (stateCode == "AZ" || stateCode == "TX") {
//SR008-04X/I are always required in these states
attachDocument("SR008-04X");
attachDocument("SR008-04XI");
}
if (ledgerAmnt >= 500000) {
//Ledger of 500K or more requires AUTHLDG-1A
attachDocument("AUTHLDG-1A");
}
if (coInsuredCount >= 5 && orgStatusCode != "CORP") {
//Non-CORP orgs with 5 or more co-ins require AUTHCNS-1A
attachDocument("AUTHCNS-1A");
}
}
ฉันไม่เข้าใจบทความนี้จริงๆ
ฉันพูด:
ถ้าทุกคนคงกฎทางธุรกิจที่ถูกเก็บไว้ในแฟ้มการกำหนดค่าบางอย่างในชีวิตจะมาก [มากขึ้น ( sic )] เป็นเรื่องยากสำหรับทุกคนที่ยังคงรักษาซอฟต์แวร์: มันน่าจะมีไฟล์จำนวนมากรหัสที่ใช้ร่วมกันหนึ่งไฟล์ขนาดใหญ่ (หรือ, การสนทนา, มีไฟล์กำหนดค่าเล็ก ๆ จำนวนมาก); การปรับใช้การเปลี่ยนแปลงกับกฎเกณฑ์ทางธุรกิจไม่จำเป็นต้องใช้รหัสใหม่ แต่การเปลี่ยนไฟล์กำหนดค่าด้วยตนเอง และการดีบั๊กนั้นยากกว่ามาก
นี่คืออาร์กิวเมนต์ที่มีจำนวนเต็มคงที่ "500000" ในไฟล์กำหนดค่าหรือ "AUTHCNS-1A" และค่าคงที่สตริงอื่น ๆ
นี่เป็นวิธีที่ไม่ดีได้อย่างไร
ในตัวอย่างนี้ "500000" ไม่ใช่ตัวเลข ตัวอย่างเช่นไม่ใช่:
int doubleMe(int a) { return a * 2;}
โดยที่ 2 คือตัวเลขที่ไม่จำเป็นต้องมีใจลอย การใช้งานนั้นชัดเจนและไม่ได้แสดงถึงสิ่งที่อาจนำกลับมาใช้ใหม่ในภายหลัง
ในทางตรงกันข้าม "500000" ไม่ได้เป็นเพียงตัวเลข เป็นค่าที่สำคัญหนึ่งที่แสดงถึงแนวคิดของจุดพักในการทำงาน สามารถใช้หมายเลขนี้ได้มากกว่าหนึ่งแห่ง แต่ไม่ใช่หมายเลขที่คุณใช้ เป็นแนวคิดของขีด จำกัด / เส้นขอบซึ่งจะใช้กฎหนึ่งข้อด้านล่างและกฎข้อใดข้อหนึ่ง
วิธีการคือหมายถึงว่ามันมาจากแฟ้มการกำหนดค่าหรือแม้กระทั่ง#define
, const
หรือสิ่งที่ภาษาของคุณให้เลวร้ายยิ่งกว่ารวมทั้งความคุ้มค่า? หากต่อมาในโปรแกรมหรือโปรแกรมเมอร์คนอื่น ๆ ก็ต้องมีเส้นเขตแดนนั้นเพื่อให้ซอฟต์แวร์มีตัวเลือกอื่นคุณจะถูกเมา (เพราะเมื่อมีการเปลี่ยนแปลงไม่มีอะไรรับประกันได้ว่ามันจะเปลี่ยนแปลงในไฟล์ทั้งสอง) เห็นได้ชัดว่าเลวร้ายยิ่งกว่าการดีบั๊ก
นอกจากนี้หากวันพรุ่งนี้รัฐบาลเรียกร้องให้ "ตั้งแต่วันที่ 5/3/2550 คุณต้องเพิ่ม AUTHLDG-122B แทน AUTHLDG-1A" ค่าคงที่สตริงนี้ไม่ใช่ค่าคงที่สตริงที่เรียบง่าย มันเป็นสิ่งที่แสดงถึงความคิด เป็นเพียงมูลค่าปัจจุบันของแนวคิดนั้น (ซึ่งก็คือ "สิ่งที่คุณเพิ่มถ้าบัญชีแยกประเภทสูงกว่า 500k")
ให้ฉันอธิบาย ฉันไม่ได้บอกว่าบทความผิด ฉันแค่ไม่เข้าใจ อาจจะอธิบายไม่ดีเกินไป (อย่างน้อยก็สำหรับความคิดของฉัน)
ฉันเข้าใจว่าการแทนที่สตริงตัวอักษรหรือตัวเลขที่เป็นไปได้ทั้งหมดด้วยค่าคงที่กำหนดหรือตัวแปรการกำหนดค่าไม่เพียง แต่ไม่จำเป็นเท่านั้น แต่ยังครอบคลุมถึงสิ่งต่าง ๆ แต่ตัวอย่างนี้ดูเหมือนจะไม่อยู่ภายใต้หมวดหมู่นี้ คุณจะรู้ได้อย่างไรว่าคุณจะไม่ต้องการมันในภายหลัง หรือคนอื่นสำหรับเรื่องนั้น?