คำถามติดแท็ก c#

C # เป็นภาษาการเขียนโปรแกรมเชิงวัตถุที่มีการจัดการและรวบรวมขยะที่สร้างขึ้นโดย Microsoft ควบคู่ไปกับแพลตฟอร์ม. NET

4
การใช้แฟล็กสำหรับการ "จัดกลุ่ม" ผิดหรือเปล่า
ความเข้าใจของฉันอยู่ที่[Flag]enums มักจะใช้สำหรับสิ่งที่สามารถนำมารวมกันที่แต่ละค่าไม่ได้พิเศษร่วมกัน ตัวอย่างเช่น: [Flags] public enum SomeAttributes { Foo = 1 << 0, Bar = 1 << 1, Baz = 1 << 2, } ใด ๆ ที่SomeAttributesคุ้มค่าจะเป็นการรวมกันของFoo, และBarBaz ในสถานการณ์จริงที่ซับซ้อนมากขึ้นฉันใช้ enum เพื่ออธิบายDeclarationType: [Flags] public enum DeclarationType { Project = 1 << 0, Module = 1 << 1, ProceduralModule = 1 << …
12 c#  .net  readability  enum 

5
วิธีหลีกเลี่ยงการละเมิด SRP ในชั้นเรียนเพื่อจัดการแคช?
หมายเหตุ:ตัวอย่างโค้ดเขียนด้วย c # แต่นั่นไม่ควรสำคัญ ฉันใส่ c # เป็นแท็กเพราะหาแท็บไม่ได้อีก นี่คือเกี่ยวกับโครงสร้างรหัส ฉันอ่าน Clean Code และพยายามเป็นโปรแกรมเมอร์ที่ดีขึ้น ฉันมักจะพบว่าตัวเองกำลังดิ้นรนเพื่อทำตามหลักการความรับผิดชอบเดียว (ชั้นเรียนและฟังก์ชั่นควรทำเพียงสิ่งเดียว) โดยเฉพาะอย่างยิ่งในฟังก์ชั่น บางทีปัญหาของฉันคือ "สิ่งหนึ่ง" ไม่ชัดเจน แต่ก็ยัง ... ตัวอย่าง: ฉันมีรายการ Fluffies ในฐานข้อมูล เราไม่สนใจว่าปุยคืออะไร ฉันต้องการชั้นเรียนเพื่อกู้คืนความผิดปกติ อย่างไรก็ตาม fluffies สามารถเปลี่ยนแปลงได้ตามตรรกะบางอย่าง คลาสนี้จะส่งคืนข้อมูลจากแคชหรือรับข้อมูลล่าสุดจากฐานข้อมูลทั้งนี้ขึ้นอยู่กับตรรกะบางอย่าง เราสามารถพูดได้ว่ามันจัดการกับความฟู่ฟ่าและนั่นคือสิ่งหนึ่ง เพื่อให้ง่ายสมมติว่าข้อมูลที่โหลดนั้นดีสำหรับหนึ่งชั่วโมงจากนั้นจะต้องโหลดใหม่ class FluffiesManager { private Fluffies m_Cache; private DateTime m_NextReload = DateTime.MinValue; // ... public Fluffies GetFluffies() { …

2
อินเทอร์เฟซฐานข้อมูลที่เป็นนามธรรมถูกเขียนขึ้นเพื่อสนับสนุนหลายฐานข้อมูลได้อย่างไร?
หนึ่งจะเริ่มออกแบบคลาสนามธรรมในแอปพลิเคชันขนาดใหญ่ของพวกเขาที่สามารถเชื่อมต่อกับฐานข้อมูลหลายประเภทเช่น MySQL, SQLLite, MSSQL ฯลฯ ได้อย่างไร รูปแบบการออกแบบนี้เรียกว่าอะไรและเริ่มต้นตรงไหน สมมติว่าคุณต้องเขียนคลาสที่มีวิธีการดังต่อไปนี้ public class Database { public DatabaseType databaseType; public Database (DatabaseType databaseType){ this.databaseType = databaseType; } public void SaveToDatabase(){ // Save some data to the db } public void ReadFromDatabase(){ // Read some data from db } } //Application public class Foo { …
12 c#  database 

5
อาร์เรย์ที่ไม่ต่อเนื่องกันมีประสิทธิภาพหรือไม่
ใน C # เมื่อผู้ใช้สร้างList<byte>และเพิ่มไบต์มันมีโอกาสที่จะหมดพื้นที่และจำเป็นต้องจัดสรรพื้นที่เพิ่มเติม มันจัดสรรสองเท่า (หรือตัวคูณอื่น ๆ ) ขนาดของอาร์เรย์ก่อนหน้าคัดลอกไบต์ไปและทิ้งการอ้างอิงไปยังอาร์เรย์เก่า ฉันรู้ว่ารายการเติบโตแบบทวีคูณเพราะการจัดสรรแต่ละครั้งมีราคาแพงและนี่เป็นการ จำกัด การO(log n)จัดสรรโดยที่การเพิ่ม10รายการพิเศษทุกครั้งจะส่งผลให้เกิดการO(n)จัดสรร อย่างไรก็ตามสำหรับอาเรย์ขนาดใหญ่อาจมีพื้นที่ว่างจำนวนมากบางทีเกือบครึ่งอาเรย์ เพื่อลดหน่วยความจำฉันเขียนคลาสที่คล้ายกันNonContiguousArrayListซึ่งใช้List<byte>เป็นแบ็คอัพสโตร์หากมีน้อยกว่า 4MB ในรายการจากนั้นก็จะจัดสรรอาร์เรย์ไบต์ 4MB เพิ่มเติมตามNonContiguousArrayListขนาดที่เพิ่มขึ้น ต่างจากList<byte>อาร์เรย์เหล่านี้ที่ไม่ต่อเนื่องกันดังนั้นจึงไม่มีการคัดลอกข้อมูลรอบ ๆ เพียงแค่จัดสรร 4M เพิ่มเติม เมื่อรายการถูกค้นหาดัชนีจะถูกหารด้วย 4M เพื่อรับดัชนีของอาร์เรย์ที่มีรายการจากนั้นโมดูโล 4M เพื่อรับดัชนีภายในอาร์เรย์ คุณช่วยชี้ปัญหาเกี่ยวกับวิธีนี้ได้ไหม? นี่คือรายการของฉัน: อาร์เรย์ที่ไม่ต่อเนื่องกันไม่มีตำแหน่งแคชซึ่งส่งผลให้ประสิทธิภาพไม่ดี อย่างไรก็ตามขนาดบล็อก 4M ดูเหมือนว่าจะมีพื้นที่เพียงพอสำหรับการแคชที่ดี การเข้าถึงไอเท็มนั้นไม่ง่ายอย่างนั้นมีระดับทางอ้อมเพิ่มขึ้น สิ่งนี้จะได้รับการปรับให้เหมาะสมหรือไม่ มันจะทำให้เกิดปัญหาแคชหรือไม่ เนื่องจากมีการเติบโตเป็นเส้นตรงหลังจากขีด จำกัด ของการตี 4M คุณจึงสามารถจัดสรรได้มากกว่าปกติ (เช่นการจัดสรรสูงสุด 250 หน่วยสำหรับหน่วยความจำ 1GB) ไม่มีหน่วยความจำเพิ่มเติมถูกคัดลอกหลังจาก 4M แต่ฉันไม่แน่ใจว่าการจัดสรรเพิ่มเติมมีราคาแพงกว่าการคัดลอกหน่วยความจำขนาดใหญ่
12 c# 

2
วิธีที่ดีที่สุดในการซ่อนรหัส API ในซอร์สโค้ด
ฉันต้องการแนวคิดในการปกป้องคีย์ API ส่วนตัวในแอปพลิเคชันโดยเฉพาะในแอปพลิเคชัน ac # .NET ประการแรกฉันเข้าใจว่าในทางทฤษฎีมันเป็นไปไม่ได้ที่จะซ่อนอะไรในซอร์สโค้ดดังนั้นฉันจึงคิดความคิดอื่น แต่ฉันไม่แน่ใจว่ามันเป็นไปได้จริง อย่างไรก็ตามมีความเป็นไปได้ไหมที่จะสื่อสารกับเว็บเซิร์ฟเวอร์เพื่อตรวจสอบรหัสส่วนตัวจากนั้นพูดคุยกลับไปที่แอปพลิเคชันเพื่อยืนยันว่าเป็นการจับมือที่ถูกกฎหมายหรือไม่ ฉันมีสองปุ่มที่จะทำงานกับ: กุญแจสาธารณะ (ตามชื่อที่แนะนำมันไม่จำเป็นต้องได้รับการดูแลเช่นเดียวกับความเป็นส่วนตัว) และกุญแจส่วนตัวที่ต้องได้รับการรักษาความปลอดภัยจากผู้อื่น ความคิดเห็นใด ๆ เกี่ยวกับวิธีที่ฉันสามารถทำได้จะได้รับการชื่นชมอย่างมาก
12 c#  api  authentication 

9
การออกแบบสำหรับการสืบทอดสามารถทำให้มีค่าใช้จ่ายเพิ่มเติมได้อย่างไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ดังนั้นฉันต้องการสืบทอดจากsealed classในcsharpและถูกไฟไหม้ ไม่มีทางที่จะเปิดผนึกจนกว่าคุณจะเข้าถึงแหล่งข้อมูลได้ ฉันคิดว่า "ทำไมsealedถึงมีอยู่จริง" 4 เดือนที่แล้ว ฉันไม่สามารถเข้าใจได้แม้จะอ่านสิ่งต่าง ๆ มากมายเช่น: ความปรารถนาของ Jon Skeet " คลาสถูกปิดผนึกโดยค่าเริ่มต้นใน. NET " ชอบการแต่งมากกว่าการสืบทอด? "คุณไม่ควรปิดคลาสทั้งหมด (... )" คุณจะล้อเลียนคลาสที่ปิดสนิทได้อย่างไร ฉันพยายามย่อยทุกอย่างตั้งแต่นั้นมา แต่มันก็มากเกินไปสำหรับฉัน ในที่สุดเมื่อวานฉันลองอีกครั้ง ฉันสแกนพวกเขาทั้งหมดอีกครั้งและอีกไม่กี่: ทำไมชั้นเรียนควรเป็นอย่างอื่นนอกจาก "นามธรรม" หรือ "ขั้นสุดท้าย / ปิดผนึก" ในการเขียนโปรแกรมกว่า 15 ปีครั้งแรกที่ฉันได้ยินเกี่ยวกับSOLIDจากคำตอบของคำถามที่เชื่อมโยงแล้วและเห็นได้ชัดว่าฉันไม่ได้อ่านมาตลอด 4 เดือนที่ผ่านมา ในที่สุดหลังจากการไตร่ตรองมากมายฉันตัดสินใจที่จะแก้ไขคำถามเดิมอย่างหนักตามชื่อเรื่องใหม่ คำถามเดิมกว้างเกินไปและอัตนัย มันเป็นพื้นถาม: ในชื่อเก่า: เหตุผลหนึ่งที่ดีในการใช้ตราประทับ ในร่างกาย: …
12 c#  inheritance 

4
ฉันจะออกแบบอินเทอร์เฟซอย่างไรเพื่อให้ชัดเจนว่าคุณสมบัติใดที่อาจเปลี่ยนแปลงค่าของพวกเขาและสิ่งใดที่จะคงที่
ฉันมีปัญหาการออกแบบเกี่ยวกับคุณสมบัติ. NET interface IX { Guid Id { get; } bool IsInvalidated { get; } void Invalidate(); } ปัญหา: อินเตอร์เฟซนี้มีสองคุณสมบัติอ่านอย่างเดียวและId IsInvalidatedอย่างไรก็ตามความจริงที่ว่าพวกเขาเป็นแบบอ่านอย่างเดียวไม่สามารถรับประกันได้ว่าค่าของพวกเขาจะคงที่ สมมติว่ามันเป็นความตั้งใจของฉันที่จะทำให้ชัดเจนว่า ... Id แทนค่าคงที่ (ซึ่งอาจถูกแคชอย่างปลอดภัย) ในขณะที่ IsInvalidatedอาจเปลี่ยนค่าในช่วงอายุของIXวัตถุ (และไม่ควรแคช) ฉันจะปรับเปลี่ยนinterface IXเพื่อให้สัญญานั้นชัดเจนเพียงพอได้อย่างไร ความพยายามสามข้อของฉันในการแก้ปัญหา: อินเตอร์เฟสได้รับการออกแบบมาอย่างดี การปรากฏตัวของวิธีการที่เรียกว่าInvalidate()ช่วยให้โปรแกรมเมอร์ที่จะอนุมานว่ามูลค่าของทรัพย์สินที่มีชื่อคล้ายกันIsInvalidatedอาจได้รับผลกระทบจากมัน อาร์กิวเมนต์นี้มีไว้เฉพาะในกรณีที่เมธอดและคุณสมบัติมีชื่อคล้ายกัน เพิ่มส่วนต่อประสานนี้กับกิจกรรมIsInvalidatedChanged: bool IsInvalidated { get; } event EventHandler IsInvalidatedChanged; สถานะของ…Changedเหตุการณ์สำหรับIsInvalidatedสถานะที่คุณสมบัตินี้อาจเปลี่ยนค่าและการไม่มีเหตุการณ์ที่คล้ายกันสำหรับIdเป็นสัญญาว่าคุณสมบัตินั้นจะไม่เปลี่ยนค่าของมัน ฉันชอบโซลูชันนี้ แต่มีสิ่งเพิ่มเติมมากมายที่อาจไม่ได้ใช้เลย แทนที่คุณสมบัติIsInvalidatedด้วยเมธอดIsInvalidated(): bool IsInvalidated(); …
12 c#  design  .net  properties 

5
วิธีการย้ายความคิดของฉันจาก C ++ ไปยัง C #
ฉันเป็นนักพัฒนา C ++ ที่มีประสบการณ์ฉันรู้ภาษาอย่างละเอียดและใช้คุณสมบัติบางอย่างของมันอย่างเข้มข้น นอกจากนี้ฉันรู้หลักการของ OOD และรูปแบบการออกแบบ ตอนนี้ฉันเรียนรู้ C # แต่ฉันไม่สามารถหยุดความรู้สึกที่ไม่สามารถกำจัดความคิด C ++ ได้ ฉันผูกตัวเองอย่างหนักเพื่อจุดแข็งของ C ++ ที่ฉันไม่สามารถอยู่ได้หากไม่มีคุณสมบัติบางอย่าง และฉันไม่สามารถหาวิธีแก้ปัญหาที่ดีสำหรับพวกเขาได้ใน C # อะไรแนวปฏิบัติที่ดี , รูปแบบการออกแบบ , สำนวนที่มีความแตกต่างกันใน C # จากมุมมองของ C ++ คุณสามารถแนะนำ? วิธีการได้รับการออกแบบ C ++ ที่สมบูรณ์แบบไม่ได้ดูโง่ใน C # โดยเฉพาะฉันไม่สามารถหาวิธีที่ดีในการจัดการกับ C # (ตัวอย่างล่าสุด): การควบคุมอายุการใช้งานของทรัพยากรที่ต้องมีการล้างข้อมูลที่กำหนด (เช่นไฟล์) นี่เป็นเรื่องง่ายที่มีusingอยู่ในมือ แต่จะใช้งานได้อย่างไรเมื่อมีการถ่ายโอนความเป็นเจ้าของทรัพยากร [... betwen threads]? ใน …

4
C # Minimal SQL Database
ฉันกำลังทำงานในโครงการขนาดเล็ก (ไม่ใช่การผลิต) ที่ฉันต้องการจัดเก็บข้อมูลเพียงพอว่าบางสิ่งเช่น CSV จะไม่มีประสิทธิภาพในการประมวลผลและเซิร์ฟเวอร์ SQL / MySQL จะมากเกินไป . Net มีวิธีใดในการจัดเก็บข้อมูลหลายรายการอย่างมีประสิทธิภาพด้วยความสามารถในการสืบค้นโดยไม่ต้องจัดการและเชื่อมต่อกับเซิร์ฟเวอร์แทนที่จะโหลดและประมวลผลไฟล์เดียว
12 c#  database  sql 

2
คลาส, enums และเอนทิตีอื่น ๆ ควรอยู่ในไฟล์แยกกันหรือไม่?
หัวหน้าทีมของ บริษัท ของฉัน \ สถาปนิกระบุว่าโครงการขนาดใหญ่นั้นง่ายต่อการเข้าใจหากวางเอนทิตีที่เชื่อมต่อด้วยตรรกะไว้ในไฟล์. cs หนึ่งไฟล์ ฉันพูด: "โครงสร้างทั้งหมดของลอจิกและอินเตอร์เฟสและคลาสสามารถเห็นได้ในที่เดียวนี่คืออาร์กิวเมนต์ที่ไม่สามารถหักล้างได้เมื่อต้องการดูสิ่งเดียวกัน แต่ด้วยไฟล์จำนวนมากคุณต้องใช้เครื่องมือ ไดอะแกรม R # สำหรับการนำทาง ฯลฯ " "ตามทฤษฎีที่ไม่ดีฉันอาจกรีดร้องว่ากองทัพของไฟล์ที่แยกกันนั้นเจ๋ง แต่เมื่อพูดถึงการเปลี่ยนแปลงโค้ดที่มีอยู่โดยเฉพาะอย่างยิ่งถ้าคุณไม่ใช่นักเขียนของรหัสนี้มันยากมากที่จะเข้าใจไฟล์ที่กระจัดกระจาย ดังนั้นในฟอรัมคุณสามารถเขียนว่า "หนึ่ง enum - one file" แต่ในทางปฏิบัติไม่ควรใช้วิธีนี้ " "... สำหรับการแยกรหัสฐานระหว่างนักพัฒนาทุกวันนี้มันไม่ใช่ปัญหาในการแก้ไขไฟล์เดียวกันพร้อม ๆ กันการผสานไม่ใช่ปัญหา" ฉันได้ยินและอ่านหลาย ๆ ครั้งที่เราต้องสร้างหนึ่งไฟล์. cs ต่อ enum คลาสและอื่น ๆ และนี่คือวิธีปฏิบัติที่ดีที่สุด แต่ฉันไม่สามารถโน้มน้าวเขาได้ เขาบอกว่าเขาไม่เชื่อใจโปรแกรมเมอร์ที่รู้จักกันดีเช่น Jon Skeet ความเห็นของ Skeet ในหัวข้อนี้เป็นที่ที่ดีที่สุดในการค้นหาประเภท enum อยู่ที่ไหน คุณคิดอย่างไร? มีปัญหาจริงเหรอ? …

4
มีวิธีที่เหมาะสมในการสร้างรูปแบบไฟล์หรือไม่?
ฉันกำลังสร้างรูปแบบไฟล์ที่เป็นกรรมสิทธิ์สำหรับแอปพลิเคชันที่ฉันเขียนใน C #. NET เพื่อเก็บบันทึกข้อมูลและอาจลงสินทรัพย์โครงการสาย มีมาตรฐานในการทำสิ่งนี้ด้วยวิธีใด? ฉันแค่ไปที่Serializeวัตถุของฉันเป็นไบนารี่และสร้างส่วนหัวที่จะบอกวิธีแยกไฟล์ นี่เป็นวิธีที่ไม่ดีหรือไม่?

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

3
จัดส่งห้องสมุดชั้นหนึ่งของฉัน gotchas ใด ๆ ที่ฉันต้องระวัง?
ฉันเป็นนักพัฒนาเว็บเกี่ยวกับที่จะปลดล็อคความสำเร็จ "ห้องสมุด First Class ที่เผยแพร่" ในอาชีพการงานของฉันและฉันเหงื่อออกกระสุน (ฉันก็เครียดทั้งคืน) ฉันชอบที่จะแตะประสบการณ์ของชุมชนเพื่อดูว่าใครมีคำแนะนำหรือคำแนะนำใด ๆ เพื่อให้แน่ใจว่าสิ่งนี้จะดำเนินไปอย่างราบรื่นที่สุด มีอะไรพิเศษหรือ gotchas ฉันต้องระวัง? มีอะไรพิเศษเกี่ยวกับกระบวนการสร้างที่สามารถกลับมากัดฉันได้ไหม ที่นี่ฉันอยู่ที่: ห้องสมุดได้รับการทดสอบโดยหน่วยและมีรหัสครอบคลุมประมาณ 97% API ได้รับการบันทึกไว้อย่างดีและมีการสร้างเอกสาร xml สำหรับการสนับสนุนภายใน ฉันได้รับรองว่าผู้เข้าถึงคลาสสาธารณะ / ส่วนตัวนั้นถูกต้องและถูกต้อง เช่นเดียวกันกับ getters / setters ทั้งหมด การจัดการข้อผิดพลาดไม่ได้อย่างสง่างามอย่างที่ฉันต้องการ แต่ฉันไม่เห็นเส้นตายและยอมรับว่ามันเป็น "ดีเท่าที่ควรจะเป็น" ในตอนนี้ ไม่มีการบันทึกที่เป็นมิตร Debug.Writeline ถูกใช้อย่างกว้างขวาง ... ฉันได้เรียนรู้เมื่อเร็ว ๆ นี้ว่านี่เป็นภาพสะท้อนของความไม่มีประสบการณ์ของฉัน :( คำแนะนำของคุณได้รับการชื่นชมอย่างมาก! ห้องสมุดจะใช้ในการสร้างรายงาน หมวกมาตรฐาน - เชื่อมต่อกับฐานข้อมูลแบบอ่านอย่างเดียวดำเนินการ calcs จัดรูปแบบและส่งออกข้อมูลไปยังสตรีมตอบกลับ ฉันถูกทาบทามให้เป็นแหล่งข้อมูลเพื่อเติมเต็มให้กับหนึ่งในโปรแกรมเมอร์ที่ลาออกและงานนี้ให้ฉันเป็นโครงการ "ฟันของคุณ" …

5
มันจะมีประโยชน์กับวิธีการทดสอบหน่วยที่ตรรกะเพียงอย่างเดียวคือยาม?
ว่าฉันมีวิธีเช่นนี้ public void OrderNewWidget(Widget widget) { if ((widget.PartNumber > 0) && (widget.PartAvailable)) { WigdetOrderingService.OrderNewWidgetAsync(widget.PartNumber); } } ฉันมีวิธีการหลายอย่างในรหัสของฉัน (ครึ่งหน้ากับการเรียกใช้ async Web Service) ฉันกำลังถกเถียงกันว่าเป็นประโยชน์หรือไม่ที่จะให้มันครอบคลุมการทดสอบหน่วย ใช่มีเหตุผลอยู่ที่นี่ แต่มันเป็นเพียงตรรกะยาม (หมายความว่าฉันต้องแน่ใจว่าฉันมีสิ่งที่ฉันต้องการก่อนที่จะอนุญาตให้มีการให้บริการทางเว็บเกิดขึ้น) ส่วนหนึ่งของฉันบอกว่า "แน่ใจว่าคุณสามารถทดสอบหน่วยได้ แต่ก็ไม่คุ้มค่ากับเวลา" (ฉันอยู่ในโครงการที่ล้าสมัยไปแล้ว) แต่อีกด้านของฉันบอกว่าถ้าคุณไม่ได้ทดสอบหน่วยและใครบางคนเปลี่ยน Guards ก็อาจมีปัญหาได้ แต่ส่วนแรกของฉันบอกกลับถ้ามีคนเปลี่ยนทหารยามคุณจะทำงานให้พวกเขามากขึ้น (เพราะตอนนี้พวกเขาต้องเปลี่ยนทหารและหน่วยทดสอบทหาร) ตัวอย่างเช่นหากบริการของฉันมีความรับผิดชอบในการตรวจสอบความพร้อมใช้งานของ Widget ฉันอาจไม่ต้องการให้มีการป้องกันอีกต่อไป หากอยู่ในการทดสอบหน่วยฉันต้องเปลี่ยนสถานที่สองแห่งตอนนี้ ฉันเห็นข้อดีข้อเสียในทั้งสองวิธี ดังนั้นฉันคิดว่าฉันจะถามสิ่งที่คนอื่นทำ
12 c#  unit-testing 

4
สลับหรือพจนานุกรมเมื่อกำหนดให้กับวัตถุใหม่
เมื่อเร็ว ๆ นี้ฉันชอบทำแผนที่ความสัมพันธ์ 1-1 โดยใช้คำสั่งDictionariesแทน Switchฉันคิดว่ามันจะเร็วขึ้นเล็กน้อยในการเขียนและง่ายต่อการประมวลผลทางจิตใจ น่าเสียดายที่เมื่อทำการแมปกับอินสแตนซ์ใหม่ของวัตถุฉันไม่ต้องการกำหนดเช่นนี้: var fooDict = new Dictionary<int, IBigObject>() { { 0, new Foo() }, // Creates an instance of Foo { 1, new Bar() }, // Creates an instance of Bar { 2, new Baz() } // Creates an instance of Baz } var quux …
12 c#  coding-style 

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