เมื่อใดควรใช้ค่าคงที่เทียบกับไฟล์กำหนดค่าเพื่อรักษาการตั้งค่าคอนฟิก


20

ฉันมักจะต่อสู้กับตัวเองว่าจะใส่กุญแจบางอย่างใน web.config ของฉันหรือในชั้นเรียน Constants.cs หรืออะไรทำนองนี้

ตัวอย่างเช่นถ้าฉันต้องการเก็บคีย์เฉพาะแอปพลิเคชันสำหรับกรณีใด ๆ ก็ตาม .. ฉันสามารถเก็บไว้และคว้ามันจากเว็บ config ผ่านคีย์ที่กำหนดเองหรือกินมันโดยอ้างอิงค่าคงที่ในคลาสค่าคงที่ของฉัน

เมื่อใดที่คุณต้องการใช้ค่าคงที่บนคีย์การตั้งค่า

คำถามนี้ใช้ได้กับทุกภาษาที่ฉันคิด

คำตอบ:


20

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

หากแอปพลิเคชันรับอาร์กิวเมนต์บรรทัดคำสั่งดังนั้นสิ่งเหล่านั้นจะแทนที่พารามิเตอร์ไฟล์การกำหนดค่า


3

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

ดังนั้นฉันขอแนะนำให้ใส่:

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

คุณหมายถึงประเภทที่ถูกต้อง ... คีย์การตั้งค่า ... มันคือ xml ...
WeDoTDD.com

@CoffeeAddict: ประเภทที่ถูกต้องหมายถึงว่าถ้าคุณมีตัวเลือกที่ต้องใช้ตัวเลขและไฟล์กำหนดค่าของคุณมีสตริงที่ไม่ใช่ตัวเลขในสถานที่คุณจะไม่พบจนกระทั่งรันไทม์ และ "คีย์การกำหนดค่า" คือสิ่งที่คุณใช้เพื่อเรียกคืนค่าจากไฟล์กำหนดค่าในกรณีที่ XML เป็นองค์ประกอบพา ธ ตกลงคุณสามารถมีสคีมาและคลาสที่เกี่ยวข้อง (มีxsdเครื่องมือในการสร้างจากอีกอันหนึ่ง) และใช้การกำหนดค่าด้วยXMLSerializer(วิธีที่เหมาะสมที่สุดในการจัดการ XML ใน C # ต่อไป) เพื่อให้คุณสามารถตรวจสอบล่วงหน้าได้ งาน.
Jan Hudec

ไม่เห็นด้วย: "ค่าในไฟล์กำหนดค่านั้นยากกว่าการรักษาค่าในระดับคงที่" - ขึ้นอยู่กับว่าคุณได้เขียนรหัสการกำหนดค่าของคุณอย่างไรและมีรายการที่สามารถกำหนดค่าได้จำนวนนี้:
วิศวกร

3

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

ดังนั้นข้อมูลใด ๆ ที่ผู้ใช้จำเป็นต้องให้ (และจำเป็นต้องเปลี่ยนแปลง) ควรไปในไฟล์กำหนดค่า คนอื่น ๆ ส่วนใหญ่ต้องอยู่ภายใต้ค่าคงที่ อย่างไรก็ตามต้องมีค่าเริ่มต้นที่ถูกต้องตามกฎหมายหรือจัดการข้อผิดพลาดหากไฟล์การกำหนดค่าใช้งานไม่ได้

องค์ประกอบที่ไม่ได้เป็นส่วนหนึ่งของนามธรรมของวัตถุ (เช่นถ้าค่าคงที่ซึ่งไม่ได้หมายถึงการแก้ไขโดยวัตถุภายนอก (เรียก)) มีแนวโน้มที่จะถูกซ่อนอยู่และเป็นหลักหมายความว่าพวกเขาจะดีกว่าค่าคงที่ส่วนตัวกว่าไฟล์ config

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


1

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

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

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



0

ค่าคงที่ตามคำนิยามคือตำแหน่งหน่วยความจำสำหรับค่าที่ไม่ควรเปลี่ยนแปลง (เช่น PI)

ฉันถือว่าคุณหมายถึง 'พารามิเตอร์' และไม่ใช่ค่าคงที่

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

หากเป็นไปได้อย่าเปิดเผยค่าในไฟล์กำหนดค่าโดยไม่ตรวจสอบความถูกต้องในรหัสเพื่อให้มีการตรวจสติ นอกจากนี้ฉันขอแนะนำให้คุณอย่าวางพารามิเตอร์กฎเกณฑ์ทางธุรกิจ (เช่นเงินเดือนสูงสุด ฯลฯ ) ในไฟล์กำหนดค่าและไม่ใช้ค่าคงที่สำหรับสิ่งเหล่านั้น ค่าดังกล่าวควรถูกเก็บไว้ในฐานข้อมูลพร้อมกับคำจำกัดความของตารางที่เหมาะสมเพื่อให้มีการบังคับใช้การรักษาความปลอดภัยบางอย่างเมื่อมีการเปลี่ยนแปลงและคุณสามารถสร้างรุ่นของค่าข้อมูลโดยอัตโนมัติ (โดยใช้ procs ที่เก็บไว้หรือบันทึก db) แน่นอนขึ้นอยู่กับความสำคัญของการสมัครของคุณ

หากคุณเคยใช้ไฟล์กำหนดค่าเพื่อจัดเก็บข้อมูลตรวจสอบให้แน่ใจว่าคุณได้กำหนดเวอร์ชันเหล่านั้นแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.