คำถามติดแท็ก .net

.NET Framework เป็นเฟรมเวิร์กซอฟต์แวร์สำหรับระบบปฏิบัติการ Microsoft Windows มันรวมถึงการใช้งานของ Base Class Library, Common Language Runtime และ Dynamic Language Runtime รองรับภาษาการเขียนโปรแกรมจำนวนมากรวมถึง C #, VB.NET, F # และ C ++

10
Mono ใช้บ่อยครั้งในการพูดว่า“ ใช่แล้ว. NET คือแพลตฟอร์มข้าม” การอ้างสิทธิ์นั้นถูกต้องแค่ไหน? [ปิด]
ในสิ่งที่คุณจะเลือกสำหรับโครงการของคุณระหว่าง. NET และ Java ณ จุดนี้ในเวลา? ฉันบอกว่าฉันจะพิจารณา "คุณจะใช้งานกับ Windows หรือไม่" การตัดสินใจทางเทคนิคที่สำคัญที่สุดเพียงครั้งเดียวในการสร้างโครงการเว็บใหม่และหากคำตอบคือ "ไม่" ฉันจะแนะนำ Java แทน. NET ข้อโต้แย้งทั่วไปที่พบบ่อยคือ "ถ้าเราต้องการรันบน Linux / OS X / อะไรก็ตามเราจะเรียกใช้ Mono" 1ซึ่งเป็นข้อโต้แย้งที่น่าสนใจมากบนพื้นผิว แต่ฉันไม่เห็นด้วยกับหลาย ๆ เหตุผล OpenJDK และผู้จัดจำหน่ายทั้งหมดที่จัดหาให้ JVM ได้ผ่าน Sun TCK อย่างเป็นทางการเพื่อให้แน่ใจว่าสิ่งต่าง ๆ ทำงานได้อย่างถูกต้อง ฉันไม่ทราบว่า Mono ผ่าน Microsoft TCK Mono นำเสนอ. NET ปัจจุบันระดับของ. NET รองรับอะไรบ้าง องค์ประกอบ …
168 java  .net  mono 

6
หลักการและโครงสร้างของโซลิด
ในการสัมภาษณ์งานเมื่อเร็ว ๆ นี้ฉันไม่สามารถตอบคำถามเกี่ยวกับSOLID ได้นอกเหนือจากการให้ความหมายพื้นฐานของหลักการต่าง ๆ มันทำให้ฉันเป็นโรคจิตจริงๆ ฉันได้ขุดไปสองสามวันแล้วและยังไม่ได้ข้อสรุปที่น่าพอใจ คำถามสัมภาษณ์คือ: หากคุณกำลังดูโครงการ. Net ที่ฉันบอกคุณว่าปฏิบัติตามหลักการของ SOLID อย่างเคร่งครัดคุณคาดหวังอะไรในแง่ของโครงการและโครงสร้างโค้ด ฉันดิ้นรนนิดหน่อยไม่ตอบคำถามจริงๆแล้วก็ระเบิดออกมา ฉันจะจัดการคำถามนี้ได้ดีขึ้นได้อย่างไร
150 c#  .net  solid 

8
คุณจัดระเบียบโครงการอย่างไร [ปิด]
คุณมีรูปแบบเฉพาะของการจัดระเบียบโครงการหรือไม่? ตัวอย่างเช่นขณะนี้ฉันกำลังสร้างโครงการสำหรับโรงเรียนสองแห่งที่นี่ในโบลิเวียนี่คือวิธีที่ฉันจัดระเบียบ: TutoMentor (Solution) TutoMentor.UI (Winforms project) TutoMentor.Data (Class library project) คุณจัดระเบียบโครงการของคุณอย่างไร คุณมีตัวอย่างของสิ่งที่คุณจัดระเบียบและภาคภูมิใจหรือไม่? คุณสามารถแชร์ภาพหน้าจอของบานหน้าต่างโซลูชันได้หรือไม่ ในส่วน UI ของแอปพลิเคชันของฉันฉันมีปัญหาในการตัดสินใจเลือก schema ที่ดีเพื่อจัดระเบียบแบบฟอร์มต่าง ๆ และที่ที่พวกเขาอยู่ แก้ไข: สิ่งที่เกี่ยวกับการจัดระเบียบแบบฟอร์มต่าง ๆ ในโครงการ. UI ฉันควรจัดกลุ่มฟอร์มที่แตกต่างกันที่ไหน? การทำให้พวกเขาทั้งหมดอยู่ในระดับรากของโครงการเป็นความคิดที่ไม่ดี

7
ความสัมพันธ์ระหว่าง C #, .NET, ASP, ASP.NET ฯลฯ [ปิด]
ฉันไม่ชัดเจนเกี่ยวกับความแตกต่างระหว่าง C #, C # .NET และเหมือนกันสำหรับ ASP และภาษา '.NET' อื่น ๆ จากสิ่งที่ฉันเข้าใจ. NET เป็นสิ่งที่ห้องสมุด / กรอบของ ... สิ่ง ฉันคิดว่าพวกเขาเข้าถึงข้อมูล Windows เช่นองค์ประกอบของฟอร์มเป็นต้น แต่ดูเหมือนจะไม่ได้ใช้กับ ASP.NET นอกจากนี้ฉันเห็นผู้คนเรียกตัวเองว่า '.NET' นี่หมายความว่าพวกเขาคล่องแคล่วใน C #, ASP และภาษาอื่น ๆ ? ในที่สุดฉันไม่เคยเห็น C # หากไม่ได้แนบ. NET C # เชื่อมโยงกับ. NET อย่างใกล้ชิดว่าไม่สามารถใช้งานได้หรือไม่ โดยสรุป:. NET มีอะไรให้บ้าง มันเกี่ยวข้องกับ C # และ …
143 c#  .net  asp.net 

8
การเขียนโปรแกรมที่ไม่ดีเป็นเรื่องปกติในอุตสาหกรรมซอฟต์แวร์หรือไม่? [ปิด]
ฉันเพิ่งเริ่มงานแรกในฐานะนักพัฒนาซอฟต์แวร์เมื่อหนึ่งเดือนก่อน ทุกอย่างที่ฉันได้เรียนรู้เกี่ยวกับ OOP, SOLID , แห้ง , YAGNI, รูปแบบการออกแบบ, SRP , ฯลฯ สามารถถูกโยนออกไปนอกหน้าต่าง พวกเขาใช้เว็บฟอร์ม C # .NET และทำเกือบทุกอย่างภายใน Code Behind ด้วยคลาสภายนอกน้อยมากซึ่งไม่ได้เรียกว่าออบเจ็กต์ พวกเขาใช้การควบคุมที่กำหนดเองและนำมาใช้ใหม่ เกี่ยวกับวัตถุเท่านั้นที่ใช้โดยEntity Framework พวกเขาใช้ Code Behinds ซ้ำสำหรับลูกค้าแต่ละราย พวกเขามีวิธีการที่ยาว 400 บรรทัดในการทำสิ่งของทุกประเภท สำหรับลูกค้าใหม่พวกเขาใช้ aspx และ aspx.cs และดึงรหัสลูกค้าออกและเริ่มเพิ่มรหัสเฉพาะลูกค้าใหม่ ข้อแก้ตัวแรกของพวกเขาคือมันจะเพิ่มการบำรุงรักษาเพิ่มเติมและรหัสเพิ่มเติมคือการบำรุงรักษาเพิ่มเติม มันเป็นร้านค้าเล็ก ๆ ของนักพัฒนาสามคนรวมถึงตัวฉันด้วย นักพัฒนาซอฟต์แวร์หนึ่งคนมีประสบการณ์มากกว่า 30 ปีและอีกหนึ่งคนมีประสบการณ์มากกว่า 20 ปี หนึ่งเคยเป็นนักพัฒนาเกมและคนอื่น ๆ ได้ทำงานใน C และ …

12
กลยุทธ์ที่มีประสิทธิภาพสำหรับการรองรับหลายภาษาใน. NET [ปิด]
ฉันกำลังพัฒนา UI สำหรับแอปพลิเคชัน. NET MVC ที่จะต้องมีการแปลเนื้อหาทั้งหมดในระดับสากลในอนาคตอันใกล้ ฉันคุ้นเคยกับ. NET โดยทั่วไป แต่ไม่เคยมีโครงการที่ต้องการความสำคัญในการเข้าถึงระหว่างประเทศ การฉายภาพนั้นเริ่มต้นขึ้นในภาษาอังกฤษ ฉันควรใช้มาตรการใดในจุดนี้เพื่อทำให้การปรับใช้การแปลเป็นภาษาท้องถิ่นง่ายขึ้นในอนาคต

8
คืนค่าเวทย์มนตร์โยนข้อยกเว้นหรือคืนเท็จเมื่อล้มเหลว?
บางครั้งฉันต้องเขียนวิธีหรือคุณสมบัติสำหรับไลบรารี่คลาสที่ไม่ได้ยอดเยี่ยมที่จะไม่มีคำตอบจริง แต่เป็นความล้มเหลว ไม่สามารถระบุบางสิ่ง, ไม่พร้อมใช้, ไม่พบ, ไม่สามารถทำได้ในปัจจุบันหรือไม่มีข้อมูลเพิ่มเติม ฉันคิดว่ามีวิธีแก้ปัญหาสามประการที่เป็นไปได้สำหรับสถานการณ์ที่ไม่เป็นพิเศษเช่นนี้เพื่อระบุความล้มเหลวใน C # 4: คืนค่าเวทย์มนตร์ที่ไม่มีความหมายเป็นอย่างอื่น (เช่นnullและ-1); โยนข้อยกเว้น (เช่นKeyNotFoundException); ส่งคืนfalseและระบุค่าส่งคืนจริงในoutพารามิเตอร์ (เช่นDictionary<,>.TryGetValue) ดังนั้นคำถามคือ: ในสถานการณ์ใดที่ฉันไม่ควรพลาด และถ้าฉันไม่ควรโยน: เมื่อส่งคืนค่าเวทมนตร์ที่อ้างถึงข้างต้นใช้Try*วิธีการที่มีoutพารามิเตอร์หรือไม่ (สำหรับฉันoutพารามิเตอร์ดูเหมือนว่าสกปรกและใช้งานได้อย่างถูกต้องมากกว่า) ฉันกำลังมองหาคำตอบที่เป็นจริงเช่นคำตอบที่เกี่ยวข้องกับแนวทางการออกแบบ (ฉันไม่รู้อะไรเกี่ยวกับTry*วิธีการ) ความสามารถในการใช้งาน (เมื่อฉันขอสิ่งนี้สำหรับห้องสมุดคลาส) ความสอดคล้องกับ BCL และความสามารถในการอ่าน ในไลบรารีคลาสพื้นฐาน. NET Framework ใช้วิธีการทั้งสาม: คืนค่าเวทย์มนตร์ที่ไม่มีความหมายเป็นอย่างอื่น: Collection<T>.IndexOf ผลตอบแทน -1 StreamReader.Read ผลตอบแทน -1 Math.Sqrt ส่งกลับ NaN Hashtable.Item ผลตอบแทนที่เป็นโมฆะ; โยนข้อยกเว้น: Dictionary<,>.Item พ่น KeyNotFoundException Double.Parseพ่น FormatException; …

6
เมื่อใดจะไปได้อย่างคล่องแคล่วใน C #?
ในหลาย ๆ แง่มุมฉันชอบความคิดของอินเทอร์เฟซ Fluent แต่ด้วยคุณลักษณะที่ทันสมัยทั้งหมดของ C # (initializers, lambdas, พารามิเตอร์ที่มีชื่อ) ฉันคิดว่าตัวเองคิดว่า "มันคุ้มค่าหรือไม่" และ "นี่เป็นรูปแบบที่เหมาะสมหรือไม่ ใช้?". ใครช่วยฉันได้บ้างถ้าไม่ใช่วิธีปฏิบัติที่ได้รับการยอมรับอย่างน้อยประสบการณ์ของพวกเขาหรือเมทริกซ์การตัดสินใจว่าจะใช้รูปแบบ Fluent ได้เมื่อใด สรุป: กฎง่ายๆที่ดีจากคำตอบจนถึงตอนนี้: ส่วนต่อประสานที่คล่องแคล่วช่วยได้อย่างมากเมื่อคุณมีการดำเนินการมากกว่าตัวตั้งค่าเนื่องจากการโทรได้รับประโยชน์มากขึ้นจากบริบทการส่งผ่าน อินเทอร์เฟซที่ใช้งานได้ควรถือเป็นเลเยอร์ที่อยู่เหนือสุดของ api ไม่ใช่วิธีการใช้งานเพียงอย่างเดียว คุณสมบัติที่ทันสมัยเช่น lambdas, initializers และพารามิเตอร์ที่มีชื่อสามารถทำงานได้ด้วยมือเพื่อให้ส่วนต่อประสานที่คล่องแคล่วเป็นมิตรมากยิ่งขึ้น นี่คือตัวอย่างของสิ่งที่ฉันหมายถึงโดยคุณสมบัติที่ทันสมัยทำให้รู้สึกไม่จำเป็น ยกตัวอย่างเช่นอินเทอร์เฟซแบบคล่องแคล่ว (อาจเป็นตัวอย่างไม่ดี) ที่ให้ฉันสร้างพนักงานเช่น: Employees.CreateNew().WithFirstName("Peter") .WithLastName("Gibbons") .WithManager() .WithFirstName("Bill") .WithLastName("Lumbergh") .WithTitle("Manager") .WithDepartment("Y2K"); สามารถเขียนด้วย initializers ได้อย่างง่ายดายเช่น: Employees.Add(new Employee() { FirstName = "Peter", LastName = …
78 c#  .net 

13
เจ้านายของฉันมีคดีไม่ดีที่“ ไม่ได้คิดค้นที่นี่” [ปิด]
แผนกของฉันมีความเชี่ยวชาญในการแปลงข้อมูลลูกค้าเป็นสคีมาฐานข้อมูลของเราเพื่อให้พวกเขาสามารถใช้ซอฟต์แวร์ของเราได้ ตอนนี้เรามีแอปพลิเคชั่น C # ที่ใช้เวลาIDataReader(99% ของเวลาทั้งหมดSqlDataReader) ทำการทำความสะอาดและทำแผนที่แทรกเข้าไปในDataRowวัตถุแล้วใช้ a SqlBulkCopyเพื่อแทรกเข้าไปในฐานข้อมูลของเรา บางครั้ง (โดยเฉพาะอย่างยิ่งเมื่อฐานข้อมูลต้นทางมีรูปภาพเป็นvarbinaryวัตถุ) กระบวนการนี้สามารถชะงักงันได้ด้วยการถ่ายโอน SQL จากเซิร์ฟเวอร์ไปยังแอปเพื่อให้เลี้ยวขวาแล้วกลับไปที่เซิร์ฟเวอร์ ฉันรู้สึกว่าถ้าเราเขียนการแปลงใหม่เป็นแพ็คเกจ SSISมันสามารถเพิ่มความเร็วได้มากขึ้น อย่างไรก็ตามสิ่งกีดขวางที่ใหญ่ที่สุดที่ฉันยังคงดำเนินต่อไปคือเมื่อเจ้านายของฉันในแบบที่ไม่ได้รับการประดิษฐ์ที่นี่ผลักดันกลับและพูดว่า "จะเกิดอะไรขึ้นถ้า Microsoft หยุดให้การสนับสนุน SSIS เราจะมีรหัสล้าสมัย นี่ไม่ใช่ครั้งแรกที่ฉันกด "จะเกิดอะไรขึ้นถ้าพวกเขาลบคุณลักษณะนั้น ... ?" ตอบจากหัวหน้าของฉัน ฉันไม่มีเวลาเขียนการแปลงแบบเก่าสอนตัวเอง SSIS และเขียนวิธีใหม่ในการสาธิต / ทดสอบผลประโยชน์ (เราไม่มีคนใช้ SSIS ดังนั้นจะมีช่วงเวลาที่เราจะ ต้องเรียนรู้วิธีใช้) ฉันควรทำอย่างไรในสถานการณ์เช่นนี้? หยุดผลักดันเทคโนโลยีใหม่หรือไม่ รอจนกว่าเขาจะออกจากแผนก (ฉันเป็นคนที่สองมากที่สุดในแผนกหลังจากเขา แต่อาจเป็นปีก่อนที่เขาจะลาออก / เกษียณ)? ค้นหาวิธีใหม่ในการทำให้เขาหยุดกลัวเครื่องมือของบุคคลที่สามใช่ไหม

11
ทำไมการใช้ abstractions (เช่น LINQ) จึงเป็นเรื่องต้องห้าม? [ปิด]
ฉันเป็นผู้รับจ้างอิสระดังนั้นฉันจึงสัมภาษณ์ 3-4 ครั้งต่อปีเพื่อหากิ๊กใหม่ ๆ ตอนนี้ฉันอยู่ในรอบนั้นและกลับกลายเป็นโอกาสแม้ว่าฉันจะรู้สึกว่าการสัมภาษณ์เป็นไปด้วยดี สิ่งเดียวกันเกิดขึ้นกับฉันสองสามครั้งในปีนี้ ตอนนี้ฉันไม่ได้เป็นคนที่สมบูรณ์แบบและฉันไม่คาดหวังว่าจะเป็นแบบที่ดีสำหรับทุกองค์กร ที่กล่าวว่าแม่นเฉลี่ยของฉันต่ำกว่าปกติดังนั้นฉันถามผู้สัมภาษณ์สุดท้ายของฉันสำหรับข้อเสนอแนะที่สร้างสรรค์และเขาส่ง! สิ่งสำคัญตามที่ผู้สัมภาษณ์กล่าวคือฉันดูเหมือนจะเอนตัวไปสู่การใช้ abstractions (เช่น LINQ) มากกว่าที่จะไปสู่อัลกอริทึมที่ต่ำกว่าและมีการเติบโตแบบออร์แกนิก บนพื้นผิวสิ่งนี้ก็สมเหตุสมผล - ในความเป็นจริงมันทำให้คนอื่นปฏิเสธด้วยเช่นกันเพราะฉันพูดเรื่อง LINQ ในการสัมภาษณ์เหล่านั้นด้วยและดูเหมือนว่าผู้สัมภาษณ์รู้เรื่อง LINQ ไม่มากนัก (แม้ว่าพวกเขาจะเป็น. NET ผู้ชาย) ดังนั้นตอนนี้ฉันเหลือคำถามนี้:ถ้าเราควรจะ "ยืนอยู่บนไหล่ของยักษ์" และใช้ abstractions ที่มีให้เรา (เช่น LINQ) แล้วทำไมบางคนคิดว่ามันต้องห้าม? มันไม่สมเหตุสมผลที่จะดึงรหัส "ปิดชั้นวาง" ถ้ามันบรรลุเป้าหมายเดียวกันโดยไม่มีค่าใช้จ่ายเพิ่มเติมหรือไม่ สำหรับฉันแล้วดูเหมือนว่า LINQ แม้ว่ามันจะเป็นนามธรรม แต่ก็เป็นเพียงนามธรรมของอัลกอริทึมเดียวกันทั้งหมดที่จะเขียนเพื่อให้บรรลุจุดสิ้นสุดเดียวกัน เฉพาะการทดสอบประสิทธิภาพเท่านั้นที่สามารถบอกคุณได้ว่าวิธีการที่กำหนดเองของคุณดีกว่าหรือไม่ แต่ถ้าสิ่งใดที่ LINQ มีคุณสมบัติตรงตามข้อกำหนดทำไมไม่ต้องเขียนชั้นเรียนของคุณเองในตอนแรก ฉันไม่ได้ตั้งใจจะให้ความสำคัญกับ LINQ ที่นี่ ฉันแน่ใจว่าโลกของ JAVA นั้นมีบางสิ่งที่คล้ายคลึงกันฉันแค่อยากจะรู้ว่าทำไมคนบางคนถึงรู้สึกอึดอัดใจกับความคิดที่จะใช้สิ่งที่เป็นนามธรรมที่พวกเขาไม่ได้เขียน UPDATE ตามที่ …

17
เหตุใดจึงต้องใช้วิธีการ OO แทนคำสั่ง“ สวิตช์” ขนาดใหญ่
ฉันทำงานใน. Net, C # shop และฉันมีเพื่อนร่วมงานที่คอยยืนยันว่าเราควรใช้คำสั่ง Switch ขนาดใหญ่ในรหัสของเราด้วย "คดี" จำนวนมากแทนที่จะเป็นวิธีเชิงวัตถุมากกว่า การโต้เถียงของเขากลับไปอย่างต่อเนื่องตามข้อเท็จจริงที่ว่าคำสั่ง Switch รวบรวมเป็น "ตารางกระโดด cpu" และเป็นตัวเลือกที่เร็วที่สุด (แม้ว่าในสิ่งอื่น ๆ ทีมของเราบอกว่าเราไม่สนใจความเร็ว) ฉันไม่ได้โต้แย้งเรื่องนี้ ... เพราะฉันไม่รู้ว่าเขากำลังพูดถึงเรื่องอะไร เขาพูดถูกมั้ย เขาเพิ่งพูดถึงลาของเขาหรือไม่? แค่พยายามเรียนรู้ที่นี่

6
เมื่อใดควรใช้การอ้างอิงที่อ่อนแอใน. Net
ฉันไม่ได้เจอกับสถานการณ์ที่ฉันต้องการใช้ WeakReference ใน. Net แต่โดยส่วนตัวแล้วความเชื่อที่ได้รับความนิยมดูเหมือนว่าควรจะใช้ในแคช ดรจอน Harrop ให้กรณีที่ดีมากกับการใช้งานของ WeakReferences ในแคชของเขาในคำตอบไปนี้คำถาม ฉันมักจะได้ยินนักพัฒนา AS3 พูดคุยเกี่ยวกับการใช้การอ้างอิงที่อ่อนแอเพื่อบันทึกในหน่วยความจำ แต่จากการสนทนาที่ฉันมีมันดูเหมือนว่าจะเพิ่มความซับซ้อนโดยไม่จำเป็นต้องบรรลุเป้าหมายที่กำหนดไว้และพฤติกรรมของรันไทม์ค่อนข้างไม่แน่นอน มากเสียจนหลายคนยอมแพ้และจัดการการใช้หน่วยความจำอย่างระมัดระวังมากขึ้น / เพิ่มประสิทธิภาพรหัสของพวกเขาเพื่อให้หน่วยความจำน้อยมาก (หรือทำให้การแลกเปลี่ยนรอบ CPU และหน่วยความจำขนาดเล็กลง) ดร. จอน Harrop ยังชี้ให้เห็นในคำตอบของเขาว่าการอ้างอิงที่อ่อนแอของ. Net นั้นไม่นุ่มนวลและมีการรวบรวมการอ้างอิงที่อ่อนแอใน gen0 จากการอ้างอิงของMSDNการอ้างอิงที่ไม่รัดกุมจะช่วยให้คุณสามารถสร้างวัตถุใหม่ได้but the state of the object remains unpredictable.! จากลักษณะเหล่านี้ฉันไม่สามารถนึกถึงสถานการณ์ที่การอ้างอิงที่อ่อนแอจะมีประโยชน์บางทีใครบางคนสามารถทำให้ฉันเข้าใจได้

6
วิธีจัดการกับความกลัวในการพึ่งพา
ทีมของฉันในการสร้างส่วนประกอบที่พันธมิตรของ บริษัท สามารถใช้เพื่อรวมเข้ากับแพลตฟอร์มของเรา ดังนั้นฉันเห็นด้วยที่เราควรใช้ความระมัดระวังเป็นอย่างยิ่งเมื่อแนะนำบุคคลที่สาม (อ้างอิง) ขณะนี้เราไม่มีการพึ่งพาของบุคคลที่สามและเราต้องอยู่ในระดับ API ต่ำสุดของกรอบงาน ตัวอย่างบางส่วน: เราถูกบังคับให้อยู่ในระดับ API ต่ำสุดของกรอบงาน (. NET Standard) เหตุผลเบื้องหลังสิ่งนี้คือว่าแพลตฟอร์มใหม่อาจมาถึงวันหนึ่งที่รองรับเฉพาะระดับ API ที่ต่ำมากเท่านั้น เราได้ดำเนินการส่วนประกอบของเราเองสำหรับ (de) การทำให้เป็นอันดับ JSON และอยู่ในกระบวนการของการทำเช่นเดียวกันสำหรับ JWT สิ่งนี้มีอยู่ในเฟรมเวิร์ก API ที่สูงขึ้น เราได้นำ wrapper ไปใช้กับเฟรมเวิร์ก HTTP ของไลบรารี่มาตรฐานเพราะเราไม่ต้องการพึ่งพาการใช้ HTTP ของไลบรารี่มาตรฐาน รหัสทั้งหมดสำหรับการจับคู่กับ / จาก XML ถูกเขียน "ด้วยมือ" อีกครั้งด้วยเหตุผลเดียวกัน ฉันรู้สึกว่าเรากำลังจะไปไกลเกินไป ฉันสงสัยว่าจะจัดการกับเรื่องนี้อย่างไรตั้งแต่นี้ฉันคิดว่าสิ่งนี้มีผลกระทบอย่างมากต่อความเร็วของเรา

2
เหตุใดจึงไม่อนุญาตให้ 'void' เป็นประเภททั่วไปใน C #
อะไรคือการตัดสินใจในการออกแบบที่แย้งว่าvoidไม่สามารถสร้างได้และไม่ได้รับอนุญาตให้เป็นประเภททั่วไป? structท้ายที่สุดมันก็ว่างเปล่าเป็นพิเศษและจะหลีกเลี่ยง PITA โดยรวมที่มีความแตกต่างFuncและActionผู้ได้รับมอบหมาย (C ++ อนุญาตให้voidส่งคืนอย่างชัดเจนและอนุญาตให้voidเป็นพารามิเตอร์เทมเพลต)

3
แนวทางปฏิบัติที่ดีที่สุดสำหรับการบันทึกและติดตามใน. NET
ฉันได้อ่านเกี่ยวกับการติดตามและการบันทึกจำนวนมากพยายามค้นหากฎทองสำหรับแนวทางปฏิบัติที่ดีที่สุดในเรื่องนี้ แต่ก็ยังไม่มีเลย ผู้คนบอกว่าโปรแกรมเมอร์ที่ดีจะสร้างการติดตามที่ดี แต่เอามาเป็นอย่างนั้นและมันต้องมาจากประสบการณ์ ฉันได้อ่านคำถามที่คล้ายกันในที่นี่และผ่านทางอินเทอร์เน็ตและพวกเขาไม่ได้เป็นสิ่งเดียวกันกับที่ฉันถามหรือไม่มีคำตอบที่น่าพอใจบางทีอาจเป็นเพราะคำถามนั้นขาดรายละเอียด ดังนั้นคนพูดว่าการติดตามควรเรียงลำดับของการจำลองประสบการณ์การใช้งานในกรณีที่คุณไม่สามารถแนบดีบักเกอร์ ควรให้บริบทเพียงพอเพื่อให้คุณสามารถดูว่าพา ธ ใดถูกนำไปที่แต่ละจุดควบคุมในแอปพลิเคชัน ยิ่งไปกว่านั้นคุณยังสามารถแยกแยะความแตกต่างระหว่างการติดตามและการบันทึกเหตุการณ์ใน "การบันทึกเหตุการณ์จะแตกต่างจากการติดตามที่จะจับภาพสถานะที่สำคัญมากกว่าการไหลอย่างละเอียดของการควบคุม" ตอนนี้บอกว่าฉันต้องการทำการติดตามและการบันทึกโดยใช้คลาส. NET มาตรฐานเท่านั้นซึ่งอยู่ในSystem.Diagnosticsเนมสเปซ ฉันคิดว่าคลาส TraceSource นั้นดีกว่าสำหรับงานมากกว่าคลาส Trace คงเพราะฉันต้องการแยกความแตกต่างระหว่างระดับการติดตามและการใช้คลาส TraceSource ฉันสามารถส่งผ่านพารามิเตอร์แจ้งประเภทเหตุการณ์ในขณะที่ใช้คลาส Trace ที่ฉันต้องใช้Trace.WriteLineIfและตรวจสอบสิ่งที่ชอบSourceSwitch.TraceInformationและSourceSwitch.TraceErrorsและมันก็ไม่ได้มีคุณสมบัติเหมือนหรือTraceVerboseTraceStart ในใจคุณจะพิจารณาการฝึกฝนที่ดีให้ทำดังนี้: ติดตามเหตุการณ์ "เริ่มต้น" เมื่อเริ่มต้นเมธอดซึ่งควรแสดงถึงการดำเนินการเชิงตรรกะเดี่ยวหรือไพพ์ไลน์พร้อมกับการแทนค่าสตริงของค่าพารามิเตอร์ที่ส่งผ่านไปยังเมธอด ติดตามเหตุการณ์ "ข้อมูล" เมื่อแทรกรายการลงในฐานข้อมูล ติดตามเหตุการณ์ "ข้อมูล" เมื่อรับหนึ่งพา ธ หรืออย่างอื่นในคำสั่ง if / else ที่สำคัญ ติดตาม "Critical" หรือ "Error" ใน catch catch ขึ้นอยู่กับว่าเป็นข้อผิดพลาดที่สามารถกู้คืนได้ ติดตามเหตุการณ์ "หยุด" เมื่อเสร็จสิ้นการดำเนินการของวิธีการ …
53 .net  logging 

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