วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

16
โปรแกรมเมอร์อาวุโสแนะนำเกี่ยวกับการใช้หนังสือเป็นความคิดที่ดีหรือไม่ [ปิด]
ฉันเป็นนักพัฒนารุ่นน้องและอยู่ในอุตสาหกรรมมา 5 ปีเท่านั้น ที่ บริษัท ปัจจุบันของฉันมีคนอาวุโสเรียกเขาว่า Infestus บางครั้งฉันก็ได้รับโอกาสที่จะส่องแสงและทำสิ่งใหม่ทั้งหมดตั้งแต่เริ่มต้น หนึ่งในตัวอย่างล่าสุดคือฉันต้องสร้างซิงเกิลตันในแอพพลิเคชั่นแบบมัลติเธรด ฉันได้ตัดสินใจที่จะใช้นี้วิธีการ ทันทีที่ Infestus เห็นมันเขาก็รีบโทรหาฉันอย่างงี่เง่าและบอกให้ฉันใช้วิธีนี้ เมื่อถามเขาว่าทำไมเขาเพิ่งปัดมันออกไปเพราะนี่ดีกว่าและนั่นคือสิ่งที่หนังสือเล่มนี้เกี่ยวกับ Java บอกว่าดีกว่า และเป็นรูปแบบทั่วไป: เมื่อใดก็ตามที่ฉันมีโอกาสทำสิ่งใหม่ฉันจะถูก Infestus ยิงลงและเหตุผลเดียวที่ทำให้วิธีการของเขาดีกว่าเพราะหนังสือเหล่านั้นเขียนโดยโปรแกรมเมอร์ที่มีชื่อเสียง เขามักจะพยายามให้หนังสือฉันอ่านเพื่อที่ฉันจะได้ "เรียนรู้" วิธีการเขียนโปรแกรม ฉันเพิ่งเขียนโปรแกรมเพื่อเงินเป็นเวลา 5 ปี แต่เป็นความคิดที่ดีหรือไม่ที่จะทำตามวิธีการที่ดีที่สุดในการแก้ปัญหาหรือควรลองทดสอบทุกครั้งหรือไม่ การร้องเรียนอย่างต่อเนื่องจาก Infestus เริ่มทำให้ฉันไม่เคยลองอะไรใหม่และทำตามตัวอย่างในหนังสือ แก้ไข : ฉันหลงทางอย่างเต็มที่ ใช่ฉันรู้ว่าการทำตามสิ่งใด ๆ ในความคิดที่ผิด แต่โปรแกรมเมอร์ Infestus ผู้เป็นเหมือนเทพผู้ซึ่งดูเหมือนจะรู้อะไรมากมายบอกฉันว่าวิธีเดียวที่จะเขียนโปรแกรมให้ถูกต้องคือการอ่านหนังสือและทำตามทุกอย่างไปที่ต. กฎทั้งหมดที่เขากำหนดนั้นเป็นสิ่งที่เขียนไว้ในหนังสือดังนั้นฉันจึงสงสัย ถ้าหนังสือเป็นวิธีที่ถูกต้องเท่านั้น แก้ไข 2 : Infestus ไม่ใช่เจ้านายของฉัน เขาเป็นเพียงหนึ่งในนักพัฒนาอาวุโสที่รับผิดชอบในการตรวจสอบรหัส และความคิดเห็นส่วนใหญ่ของเขาหลังจากการวิจารณ์ประกอบด้วยชื่อหนังสือที่วิธีการดังกล่าวผิดวิธี

11
มันเป็นเรื่องธรรมดาแค่ไหนที่ทีมจะเขียนทุกอย่างใน บริษัท ? [ปิด]
ในการสัมภาษณ์เมื่อเร็ว ๆ นี้ฉันถามผู้สัมภาษณ์ว่า "คุณจะประเมินเทคโนโลยีและห้องสมุดใหม่ ๆ (เช่น SignalR) อย่างไรและนำพวกเขามาใช้อย่างไร" พวกเขาบอกว่าไม่ทำเช่นนั้นแทนที่จะเขียนทุกอย่างเองดังนั้นพวกเขาจึงไม่ต้องพึ่งพาใคร บริษัท ไม่ได้ทำงานให้กับรัฐบาลหรือผู้รับจ้างป้องกันหรือในโครงการที่มีความปลอดภัยสูงหรืออะไรทำนองนั้น มันเป็นเพียง บริษัท พัฒนาซอฟต์แวร์ขนาดกลางโดยเฉลี่ยของคุณ คำถามของฉันคือมันเป็นเรื่องธรรมดาสำหรับทีมที่จะเขียนทุกอย่างด้วยตัวเอง? ฉันควรจะกังวลกับทีมที่ทำ? แก้ไข - การตอบสนองส่วนใหญ่ทุกครั้งได้กล่าวว่านี่เป็นสิ่งที่ต้องคำนึงถึง การสัมภาษณ์ครั้งที่สองจะเป็นเวลาที่เหมาะสมหรือไม่ในการขอให้พวกเขาชี้แจง / ย้ำตำแหน่งการเขียนทุกอย่างในบ้าน

9
อะไรคือความสมดุลที่เหมาะสมระหว่างความสอดคล้องของรหัสและการปรับปรุงรหัส
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับเพื่อนร่วมงานเกี่ยวกับรูปแบบโค้ด เขาได้โต้แย้งว่าการใช้งาน API และรูปแบบทั่วไปที่คุณใช้ควรคล้ายกันมากที่สุดกับรหัสที่ล้อมรอบหากไม่ได้ใช้ codebase โดยรวมเช่นเดียวกับที่คุณใช้กับการปรากฏตัวของโค้ด . ตัวอย่างเช่นถ้าฉันเพิ่มวิธีไปยังคลาส DAO ใน C # ฉันจะลองใช้ LINQ ที่เหมาะสมเพื่อช่วยให้รหัสของฉันสะอาดและง่ายต่อการบำรุงรักษาแม้ว่าจะไม่มีวิธีการอื่นในชั้นเรียนที่ใช้มันอยู่ อย่างไรก็ตามเพื่อนร่วมงานของฉันจะโต้แย้งว่าฉันไม่ควรใช้มันในกรณีนั้นเพราะมันจะขัดกับสไตล์ที่มีอยู่ของคลาสนั้นและยากที่จะเข้าใจ ในตอนแรกฉันพบว่าตำแหน่งของเขาค่อนข้างรุนแรง แต่หลังจากคิดไปพักหนึ่งฉันก็เริ่มเห็นประเด็นของเขา ด้วยตัวอย่าง LINQ สมมุติบางทีคลาสนี้อาจไม่มีเพราะเพื่อนร่วมงานของฉันไม่คุ้นเคยกับ LINQ? ถ้าเป็นเช่นนั้นรหัสของฉันจะไม่สามารถรักษาได้สำหรับเพื่อนนักพัฒนาของฉันถ้าฉันไม่ได้ใช้ ในทางกลับกันถ้าฉันเชื่ออย่างแท้จริงว่าการใช้เทคนิคดังกล่าวจะส่งผลให้โค้ดสะอาดยิ่งขึ้นดังนั้นฉันไม่ควรใช้แม้ว่าจะมีความแตกต่างอย่างมากจากโค้ดรอบ ๆ หรือไม่ ฉันคิดว่าข้อโต้แย้งของเพื่อนร่วมงานของฉันคือถ้าเราทุกคนดำเนินการเกี่ยวกับการใช้งานที่คล้ายกันใน codebase ด้วยวิธีที่แตกต่างกันและเราแต่ละคนคิดว่าวิธีของเรานั้น "ดีที่สุด" ในที่สุดรหัสโดยรวมก็ยากขึ้น เข้าใจไหม. อย่างไรก็ตามในตอนนี้ฉันยังคงคิดว่าหากเราติดตามรหัสที่มีอยู่มากเกินไปคุณภาพก็จะช้าลงเมื่อเวลาผ่านไป ดังนั้นรูปแบบส่วนใดของรูปแบบโค้ดและขอบเขตที่เราควรวาดเส้นระหว่างการคงเส้นคงวาและการปรับปรุง

4
TDD - Outside In vs Inside Out
อะไรคือความแตกต่างระหว่างการสร้างแอปพลิเคชันOutside Inกับการสร้างInside Outโดยใช้ TDD นี่คือหนังสือที่ฉันอ่านเกี่ยวกับ TDD และการทดสอบหน่วย: การทดสอบพัฒนาขับเคลื่อน: โดยตัวอย่าง การพัฒนาขับเคลื่อนทดสอบ: คู่มือปฏิบัติ: แนวทางปฏิบัติ: แนวทางปฏิบัติ โซลูชั่นโลกแห่งความจริงสำหรับการพัฒนา PHP Framework คุณภาพสูงและ การพัฒนาทดสอบขับเคลื่อนแอพพลิเคชันใน Microsoft รูปแบบการทดสอบNET xUnit: รหัสการทดสอบการปรับ โครงสร้างใหม่ศิลปะการทดสอบหน่วย: ด้วยตัวอย่างใน. Net การพัฒนาซอฟต์แวร์เชิงวัตถุแนะนำโดยการทดสอบ ---> อันนี้ยากที่จะเข้าใจจริงๆเพราะ JAVA ไม่ใช่ภาษาหลักของฉัน :) เกือบทั้งหมดอธิบายถึงพื้นฐานของ TDD และการทดสอบหน่วยโดยทั่วไป แต่ด้วยการกล่าวถึงเพียงเล็กน้อยถึงวิธีต่างๆในการสร้างแอปพลิเคชัน อีกสิ่งที่ฉันสังเกตเห็นคือหนังสือส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) จะไม่สนใจขั้นตอนการออกแบบเมื่อเขียนแอปพลิเคชัน พวกเขามุ่งเน้นที่การเขียนกรณีทดสอบอย่างรวดเร็วและปล่อยให้การออกแบบเกิดขึ้นเอง อย่างไรก็ตามฉันเจอย่อหน้าในรูปแบบการทดสอบ xUnit ที่กล่าวถึงวิธีการที่ผู้คนเข้าหา TDD มี 2 โรงเรียนออกมีนอกใน VS Inside Out น่าเศร้าที่หนังสือเล่มนี้ไม่ได้อธิบายเพิ่มเติมในประเด็นนี้ …

9
วิธีการของชั้นเรียนควรเรียกผู้ได้รับและผู้ตั้งตน?
ฉันทำงานที่ไหนฉันเห็นชั้นเรียนจำนวนมากที่ทำสิ่งนี้: public class ClassThatCallsItsOwnGettersAndSetters { private String field; public String getField() { return field; } public void setField(String field) { this.field = field; } public void methodWithLogic() { setField("value"); //do stuff String localField = getField(); //do stuff with "localField" } } หากฉันเขียนสิ่งนี้ตั้งแต่เริ่มต้นฉันจะเขียนสิ่งmethodWithLogic()นี้แทน: public class ClassThatUsesItsOwnFields { private String field; public …

7
มีบางอย่างผิดปกติกับวิธีที่เราใช้ควบคุมเวอร์ชันหรือไม่
ฉันทำงานกับทีมโปรแกรมเมอร์ในฐานะนักวิเคราะห์ธุรกิจ เราเพิ่งเปิดตัวรุ่น 2.0 ของผลิตภัณฑ์ของเราและกำลังทำงานในรุ่นถัดไปที่จะออกใน 3 เดือน (มันเป็นผลิตภัณฑ์ซอฟต์แวร์ภายใน) น่าเสียดายที่เวอร์ชัน 2.0 มีปัญหาบางอย่างที่ต้องแก้ไขและเราจะปรับใช้การแก้ไขเหล่านี้ในอีกไม่กี่สัปดาห์ ปัญหาคือเราไม่ต้องการปรับใช้การเปลี่ยนแปลงที่ยังทำงานอยู่และไม่ได้กำหนดไว้สำหรับการเปิดตัวอีก 3 เดือน โปรแกรมเมอร์ตัดสินใจว่าวิธีการจัดการสิ่งนี้คือจะมีการตรวจสอบเฉพาะรหัสสำหรับข้อบกพร่องและรหัสสำหรับการปรับปรุงใหม่จะถูกเก็บไว้ในเครื่องท้องถิ่นของนักพัฒนาจนกว่าจะเสร็จสิ้น ฉันจะต้องได้รับบิลด์ท้องถิ่นจากเครื่องของพวกเขาเพื่อทดสอบเพราะถ้าพวกเขาตรวจสอบในรหัสและเราต้องผลักดันแพตช์อื่นเพื่อแก้ไขข้อบกพร่องที่เรายังไม่ต้องการรวมการปรับปรุงเหล่านั้น นอกจากนี้ยังมีปัญหาที่ไฟล์รหัสเดียวกันมีทั้งการแก้ไขข้อบกพร่องและการปรับปรุงดังนั้นพวกเขาจึงต้องคัดลอกไฟล์รหัสในเครื่องจากนั้นทำการเปลี่ยนแปลงเพื่อแก้ไขข้อบกพร่องและตรวจสอบว่าหนึ่งในนั้นแล้วกลับมาทำงานกับการปรับปรุง พวกเขาทำสำเนาเฉพาะที่ ดูเหมือนจะค่อนข้างซับซ้อน - มีวิธีที่ดีกว่าในการจัดการสถานการณ์ประเภทนี้หรือไม่? เรากำลังใช้เซิร์ฟเวอร์มูลฐานทีมและ Visual Studio 2010

6
ใครเป็นผู้สร้างแนวคิดของการสร้างลูปแรก
while (1) { if (1+1==2) { print "Yes, you paid attention in Preschool!"; } else { print "Wait... I thought 1+1=2"; } } ในฐานะนักพัฒนาเราทุกคนต้องใช้ลูปบ่อยมาก เรารู้ว่า. สิ่งที่ฉันสงสัยคือใครคิดว่าความคิดที่จะมีลูป? ภาษาใดบ้างที่มีการแนะนำลูป โครงสร้างลูปแรกคืออะไร มันเป็นwhileวงไหม forห่วง? etc?
53 history  loops 

12
วิธีการย้อนกลับและดูรหัสด้วยตาสด [ปิด]
ฉันใช้เวลาหนึ่งปีที่แล้วในฐานะทีมคนเดียวที่พัฒนาแอปพลิเคชันที่มีลูกเล่นมากมาย (35,000+ LoC สำหรับสิ่งที่คุ้มค่า) ปัจจุบันมีเสถียรภาพและในการผลิต อย่างไรก็ตามฉันรู้ว่าทักษะของฉันเริ่มขึ้นเมื่อเริ่มต้นโครงการดังนั้นไม่ต้องสงสัยเลยว่ามีปัญหาสำคัญในรหัส ณ จุดนี้ปัญหาส่วนใหญ่อยู่ในสถาปัตยกรรมโครงสร้างและการโต้ตอบ - ปัญหาง่าย ๆ แม้แต่ปัญหาด้านสถาปัตยกรรม / การออกแบบก็ถูกกำจัดออกไปแล้ว โชคไม่ดีที่ฉันใช้เวลากับโครงการนี้มากจนฉันคิดว่ามันยาก - เข้าใกล้จากมุมมองใหม่เพื่อดูข้อบกพร่องที่ฝังลึกหรือมีอยู่ในการออกแบบ ฉันจะก้าวออกนอกหัวและนอกรหัสของฉันเพื่อให้ได้รูปลักษณ์ใหม่และทำให้ดีขึ้นได้อย่างไร

1
การมีส่วนร่วมกับ Github (วิธีการหาโครงการ) [ปิด]
ฉันต้องการมีส่วนร่วมในโครงการโอเพ่นซอร์สบน Github ส่วนใหญ่ฉันต้องการเริ่มแก้ไขข้อบกพร่องเล็ก ๆ หรือเพิ่มคุณสมบัติ ฉันไม่มีโครงการเฉพาะในใจ ฉันต้องการทำงานกับโครงการ C, C ++, Python, .NET, Java และอื่น ๆ อย่างไรก็ตามปัญหาของฉันคือฉันไม่สามารถหาวิธีการหาอะไรใน Github ฉันพบหน้าหนึ่งในสำรวจ Github ซึ่งแสดงรายการโครงการ C โดยพื้นฐานแล้วจะแสดงรายการ C โครงการ "เฝ้าดู" 5 อันดับแรก โอเคไม่เป็นไร แต่ฉันต้องการเห็นมากกว่า 5 Sourceforge เคยดีมากเพราะคุณสามารถเรียกดูโปรเจ็กต์ด้วยภาษาโปรแกรม นอกจากนี้ SourceForge ยังมีหรือเคยมีฟอรัมสำหรับการค้นหาโครงการที่ขอความช่วยเหลือ ฉันไม่พบสิ่งใดใน Github มีคุณสมบัติ "ค้นหา" ที่ดูเหมือนว่าไม่มีประโยชน์พอสมควรสำหรับการค้นหาโครงการเพื่อสนับสนุน ฉันลองค้นหาขั้นสูงโดยตั้งค่าเป็น "ที่เก็บ" และ "C" สำหรับภาษาการเขียนโปรแกรม อย่างไรก็ตามคุณต้องใส่สิ่งที่เขาค้นหา แม้ว่าฉันต้องการเรียกดูชื่อและคำอธิบายของโครงการ ดังนั้นฉันจึงลองใส่ "เครือข่าย" เพื่อดูว่าเกิดอะไรขึ้น …

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

5
ทำไมไม่ XHTML5
ดังนั้น HTML5 คือการก้าวไปข้างหน้าอย่างยิ่งใหญ่ ขั้นตอนสุดท้ายที่เราทำคือสิ่งที่ฉันรู้คือการแนะนำ XHTML ข้อดีคือชัดเจน: ความเรียบง่าย, ความเข้มงวด, ความสามารถในการใช้ตัวแยกวิเคราะห์ XML มาตรฐานและเครื่องกำเนิดไฟฟ้าเพื่อทำงานกับเว็บเพจและอื่น ๆ HTML5 นั้นแปลกและน่าหงุดหงิดและน่าหงุดหงิดเหลือเกิน: เราทำงานร่วมกับไวยากรณ์ที่ไม่ได้มาตรฐานอีกครั้ง อีกครั้งเราต้องจัดการกับสัมภาระในอดีตและความซับซ้อนในการแยกวิเคราะห์; อีกครั้งเราไม่สามารถใช้ไลบรารี XML ตัวแยกวิเคราะห์เครื่องกำเนิดไฟฟ้าหรือหม้อแปลงของเรา และข้อได้เปรียบทั้งหมดที่แนะนำโดย XML (ความสามารถในการขยาย, เนมสเปซ, มาตรฐานและอื่น ๆ ) ที่ W3C ใช้เวลาทศวรรษผลักดันด้วยเหตุผลที่ดีหายไป ไม่เป็นไรเรามี XHTML5 แต่ดูเหมือนว่าจะไม่ได้รับความนิยมเหมือนการเข้ารหัส HTML5 ดูคำถาม SOเช่นนี้ แม้แต่ข้อมูลจำเพาะ HTML5บอกว่า HTML5 ไม่ใช่ XHTML5 "เป็นรูปแบบที่แนะนำสำหรับผู้แต่งส่วนใหญ่" ฉันมีข้อเท็จจริงที่ผิดหรือเปล่า? มิฉะนั้นทำไมฉันเป็นคนเดียวที่รู้สึกแบบนี้ ทำไมคนเลือก HTML5 มากกว่า XHTML5
53 html  html5  xml  xhtml 

5
'Nightly Builds' หมายถึงอะไร?
ฉันใช้โครงการโอเพ่นซอร์สมาระยะหนึ่งแล้วได้พัฒนาแอพพลิเคชั่นโอเพนซอร์สและบ่อยครั้งที่ฉันเจอคำว่า 'Nightly Build' และฉันมักจะสงสัยว่ามันหมายถึงอะไรจริง ๆ แท้จริงแล้วหมายถึงโครงการที่ทำอย่างหมดจดเหมือนโครงการด้านข้าง (โดยปกติแล้วในตอนกลางคืนหลังจากที่ทุกคนทำงานประจำวันเสร็จแล้ว) และไม่มีทีมพัฒนา / ผู้อุทิศตนที่แท้จริงหรือมีความซับซ้อนมากกว่านั้น

11
รับ 100 ตัวเลขสูงสุดจากรายการที่ไม่มีที่สิ้นสุด
เพื่อนคนหนึ่งของฉันถูกถามคำถามสัมภาษณ์นี้ - "มีการไหลของตัวเลขอย่างต่อเนื่องที่มาจากรายการตัวเลขที่ไม่มีที่สิ้นสุดซึ่งคุณจำเป็นต้องบำรุงรักษาโครงสร้างข้อมูลเพื่อส่งกลับตัวเลขสูงสุด 100 อันดับแรก ณ เวลาใดเวลาหนึ่งสมมติว่าตัวเลขทั้งหมดเป็นตัวเลขทั้งหมดเท่านั้น" นี่เป็นเรื่องง่ายคุณต้องเก็บรายการที่เรียงลำดับจากมากไปน้อยและติดตามในจำนวนที่น้อยที่สุดในรายการนั้น หากหมายเลขใหม่ที่ได้รับมีจำนวนมากกว่าจำนวนที่น้อยที่สุดคุณจะต้องลบหมายเลขที่น้อยที่สุดนั้นและใส่หมายเลขใหม่ในรายการที่เรียงตามต้องการ จากนั้นคำถามก็ถูกขยายออกไป - "คุณแน่ใจได้หรือไม่ว่าคำสั่งสำหรับการแทรกควรเป็น O (1)? เป็นไปได้หรือไม่" เท่าที่ฉันรู้แม้ว่าคุณจะเพิ่มหมายเลขใหม่ลงในรายการและจัดเรียงอีกครั้งโดยใช้อัลกอริทึมการเรียงลำดับใด ๆ มันจะดีที่สุดคือ O (logn) สำหรับ quicksort (ฉันคิดว่า) ดังนั้นเพื่อนของฉันบอกว่ามันเป็นไปไม่ได้ แต่เขาไม่มั่นใจเขาขอให้รักษาโครงสร้างข้อมูลอื่นแทนที่จะเป็นรายการ ฉันคิดว่าต้นไม้ไบนารีที่สมดุล แต่ถึงแม้คุณจะไม่ได้รับการแทรกด้วยลำดับที่ 1 ดังนั้นคำถามเดียวกันที่ฉันมีตอนนี้ ต้องการทราบว่ามีโครงสร้างข้อมูลใด ๆ ที่สามารถทำการแทรกในลำดับ 1 สำหรับปัญหาข้างต้นหรือเป็นไปไม่ได้เลย
53 numbers  big-o  puzzles 

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 

5
คุณจะไปอ่านตัวอย่างของซอร์สโค้ดได้ที่ไหน [ปิด]
ฉันเคยได้ยินบางคนบอกว่าหนึ่งในวิธีที่ดีที่สุดในการปรับปรุงความสามารถในการเขียนโค้ดของคุณคือการอ่านโค้ดของผู้อื่นและทำความเข้าใจกับมัน คำถามของฉันในฐานะโปรแกรมเมอร์ที่ค่อนข้างใหม่ฉันจะไปหาตัวอย่างซอร์สโค้ดที่ดีที่อยู่ไม่ไกลเกินหัวได้อย่างไร

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