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

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

2
ประเมินว่าจะเขียนการทดสอบหน่วยหรือการทดสอบการรวมครั้งแรกในโครงการท้องฟ้าสีฟ้า / ต้นแบบ
สิ่งที่ฉันสังเกตเห็นเมื่อเร็ว ๆ นี้คือเมื่อฉันทำโครงการประเภทต่อไปนี้: เมื่อเริ่มต้นโครงการ ทำงานกับ MVP / เครื่องต้นแบบ การเพิ่มคุณสมบัติที่ไม่ได้กำหนดไว้ทั้งหมด ทำงานในโครงการขนาดเล็ก สำหรับการอ้างอิงฉันกำลังทำงานในโครงการ Python ซึ่งปัจจุบันมีรหัส ~ 1k บรรทัดรวมถึงความคิดเห็นและช่องว่างทั้งหมด ฉันพบว่ามันง่ายขึ้นอย่างมากในการเขียนการทดสอบการรวมการทำงานครั้งแรกทำงานบนรหัสและจากนั้นเมื่อ API ค่อนข้างแข็งจริง ๆ แล้วสามารถเพิ่มการทดสอบหน่วยได้ ประเภทของการทดสอบที่ฉันสามารถเรียกใช้ในmainฟังก์ชั่นของฉันดังนั้นพูดและมี "จบสิ้น" มากกว่าสิ่งอื่นใด เนื่องจากการทดสอบหน่วยนั้นน่ารำคาญจริง ๆ เมื่อ API มีการเปลี่ยนแปลงอย่างรวดเร็วค่อนข้างบ่อยซึ่งเป็นกรณีเมื่อทำงานกับโครงการที่ตรงกับเกณฑ์ใด ๆ หรือส่วนใหญ่ข้างต้น วิธีนี้เป็นแนวทางที่ดีหรือไม่และเกณฑ์ใดที่ควรพิจารณาเมื่อทำการตัดสินใจว่าจะเริ่มต้นด้วยการทดสอบหน่วยหรือการรวมเข้าด้วยกันเป็นครั้งแรกสำหรับโครงการประเภทนี้หรือไม่? ฉันขาดคุณค่าของการทดสอบหน่วยของโครงการประเภทนี้ก่อนที่ API จะแข็งตัวมากขึ้นหรือไม่

4
วิธีที่ดีที่สุดในการทำเครื่องหมายวิธีการที่เรียกว่าผ่านการสะท้อน?
ซอฟต์แวร์ของเรามีหลายคลาสที่ควรพบแบบไดนามิกผ่านการสะท้อนกลับ คลาสทั้งหมดมีคอนสตรัคเตอร์ที่มีลายเซ็นเฉพาะซึ่งรหัสการสะท้อนจะทำให้วัตถุเป็นอินสแตนซ์ อย่างไรก็ตามเมื่อมีคนตรวจสอบว่ามีการอ้างอิงวิธีการนั้นหรือไม่ (เช่นผ่าน Visual Studio Code Lens) การอ้างอิงผ่านการสะท้อนกลับจะไม่ถูกนับ ผู้คนสามารถพลาดการอ้างอิงและลบ (หรือเปลี่ยน) วิธีที่ไม่ได้ใช้อย่างเห็นได้ชัด เราควรทำเครื่องหมาย / วิธีการเอกสารที่ต้องการเรียกผ่านการสะท้อนอย่างไร เป็นการดีที่ควรทำเครื่องหมายวิธีในลักษณะที่ทั้งเพื่อนร่วมงานและ Visual Studio / Roslyn และเครื่องมืออัตโนมัติอื่น ๆ 'ดู' ว่าวิธีการมีวัตถุประสงค์ที่จะเรียกว่าผ่านการสะท้อน ฉันรู้ว่ามีสองตัวเลือกที่เราสามารถใช้ได้ แต่ทั้งคู่ไม่ค่อยพอใจ เนื่องจาก Visual Studio ไม่พบการอ้างอิง: ใช้แอตทริบิวต์ที่กำหนดเองและทำเครื่องหมายตัวสร้างด้วยคุณลักษณะนี้ ปัญหาคือคุณสมบัติของแอททริบิวไม่สามารถเป็นการอ้างอิงเมธอดได้ดังนั้นตัวสร้างจะยังคงแสดงว่ามีการอ้างอิง 0 รายการ เพื่อนร่วมงานที่ไม่คุ้นเคยกับแอตทริบิวต์ที่กำหนดเองอาจจะเพิกเฉย ข้อดีของวิธีการปัจจุบันของฉันคือส่วนการสะท้อนสามารถใช้คุณลักษณะเพื่อค้นหาตัวสร้างที่ควรเรียกใช้ ใช้ความคิดเห็นเพื่อจัดทำเอกสารว่าเมธอด / คอนสตรัคเตอร์ตั้งใจที่จะเรียกผ่านการสะท้อนกลับ เครื่องมืออัตโนมัติไม่สนใจความคิดเห็น (และเพื่อนร่วมงานก็ทำได้เช่นกัน) ความคิดเห็นเกี่ยวกับเอกสาร XMLสามารถนำมาใช้เพื่อให้ Visual Studio นับการอ้างอิงเพิ่มเติมถึงวิธีการ / คอนสตรัคเตอร์: อนุญาตให้MyPluginคลาสที่ตัวสร้างเรียกใช้ผ่านการสะท้อนกลับ สมมติว่าโค้ดการสะท้อนที่กล่าวอ้างค้นหาคอนสตรัคเตอร์ที่รับintพารามิเตอร์ …

3
วิธีการทดสอบสำหรับการทดสอบฟังก์ชั่นโดยการทดสอบฟังก์ชั่นที่เรียกว่ายังคงทดสอบหน่วย?
ถ้าเราทดสอบฟังก์ชั่น B โดยการทดสอบฟังก์ชั่น C ซึ่งเรียกฟังก์ชั่น B นั่นคือการเขียนโปรแกรมทดสอบเพื่อทดสอบฟังก์ชั่น C ซึ่งเรียกฟังก์ชั่น B นั้นเป็นวิธีทดสอบยังคงเรียกว่าการทดสอบหน่วยหรืออย่างอื่น? เมื่อใดจึงจะต้องการทดสอบทางอ้อมในฟังก์ชันที่เรียกใช้ฟังก์ชันเป้าหมายและเมื่อใดจึงควรทดสอบฟังก์ชันโดยตรง

1
การสร้างคำแถลงปัญหาที่ดี
<backstory> ฉันคว้าหนังสือที่ชื่อว่า Code Complete ที่ร้านหนังสือมือสองในวันก่อนเพราะฉันได้ยินว่ามันเป็นหนังสือที่ยอดเยี่ยมและเริ่มอ่านมัน หลังจากผ่านไปประมาณ 10 หน้าฉันก็รู้ว่าฉันโง่มากเกี่ยวกับโปรเจ็กต์ล่าสุดที่ฉันทำงานอยู่ ความกระจ่างเล็กน้อยที่ฉันควรใส่ในจุดนี้: ฉันไม่ได้ทำงานและนี่ไม่ใช่โรงเรียน มันเป็นเรื่องที่ไม่เป็นทางการเท่าที่จะได้รับ (ฉันก็เป็นคนเดียวที่ทำงานกับมันแม้ว่าฉันจะได้ถามคำถามเกี่ยวกับ SO เป็นครั้งคราว) ฉันอยู่มัธยมและพยายามสร้างชิ้นส่วนของซอฟต์แวร์ เรื่องสั้นสั้นฉันกระโดดเข้าไปในการเข้ารหัส (และตอนนี้กำลังตั้งคำถามกับการตัดสินใจบางอย่างที่ฉันทำในจุดที่ว่าโค้ดทำงานอย่างไร) ดังนั้นฉันจึงพยายามเริ่มต้นใหม่อย่างถูกวิธี </ backstory> ตกลงดังนั้นฉันพยายามสร้างคำแถลงปัญหาและฉันต้องการรู้ว่าเคล็ดลับดี ๆ นั้นควรรู้ว่าฉันมีดีหรือไม่ โค้ดสมบูรณ์กล่าวว่ามันควรจะไม่ใช่ทางเทคนิคและจากมุมมองของผู้ใช้ซึ่งฉันพยายามทำ คำแนะนำใด ๆ ที่จะได้รับการชื่นชมในการทำให้ดีขึ้น เท่าที่ฉันรู้ขณะนี้ยังไม่มีวิธีที่ดีในการจำลองวงจรคำนวณควอนตัมขนาดใหญ่ที่ซับซ้อนรวมถึงคุณลักษณะเช่น decoherence การแก้ไขข้อผิดพลาดการพัวพันและอัลกอริทึมบนคอมพิวเตอร์แบบคลาสสิคปล่อยให้อยู่คนเดียว เป็นที่รู้จักและเข้าถึงได้ง่าย ขออภัยถ้ามันแย่จริง ๆ นี่เป็นครั้งแรกที่ฉันทำสิ่งนี้ แก้ไข - ร่าง 2: ฉันเขียนใหม่โดยใช้คำแนะนำในความคิดเห็นและคำตอบ ไม่มีทางสำหรับนักทฤษฎีนักวิจัยและนักเรียนในสาขาการคำนวณควอนตัมเพื่อจำลองและทดสอบวงจรควอนตัมขนาดใหญ่ในวิธีที่ง่ายและมีประสิทธิภาพโดยไม่ต้องสร้างรหัสสำหรับการสมัคร เว็บแอปพลิเคชันที่ทำงานในเบราว์เซอร์ยอดนิยมที่มีส่วนต่อประสานที่เรียบง่ายซึ่งสามารถสร้างผลลัพธ์ได้อย่างแม่นยำเกี่ยวกับผลลัพธ์ของอัลกอริธึมควอนตัมรหัสการแก้ไขข้อผิดพลาดพัวพัน decoherence และด้านอื่น ๆ ทดสอบแนวคิดของพวกเขาและทำความเข้าใจกับการคำนวณควอนตัมให้ดีขึ้น

2
วิธีการจัดการการอ้างอิงสำหรับโครงการ C / C ++ อย่างถูกต้อง?
ฉันมีโครงการที่ใช้ไลบรารี C / C ++ โอเพ่นซอร์ส 3-4 แบบ ฉันสร้างไลบรารีเหล่านี้สำหรับหลายแพลตฟอร์มและเช็คอินรวมไฟล์และ libs แบบคงที่สำหรับแพลตฟอร์มต่าง ๆ ในโครงการของฉัน อย่างไรก็ตามฉันต่อสู้กับปัญหาสองสามอย่าง โครงการทั้งหมดเหล่านี้เป็นการบริหารการพึ่งพา และฉันกำลังมองหาคำแนะนำวิธีปฏิบัติที่ดีที่สุด 1) ฉันจะรู้ได้อย่างไรว่าฉันใช้อะไรกันแน่ ฉันไม่มีทางที่จะไปรับ lib แบบคงที่ เป็นผลให้ฉันต้องติดตามอย่างใดอย่างหนึ่ง lib แบบคงที่ฉันใช้ (อาจ SHA ของการกระทำที่มันถูกสร้างขึ้น)? นี่เป็นสิ่งสำคัญอย่างยิ่งเมื่อฉันต้องคิดเมื่อต้องอัพเกรด libs เหล่านี้ 2) ฉันจะสร้างงานสร้างใหม่ได้อย่างไร ฉันอาจพยายามสร้างห้องสมุดเฉพาะสำหรับแพลตฟอร์มเฉพาะ ฉันใช้เวลาซักพักนึง ครั้งต่อไปที่ฉันจะต้องสร้างห้องสมุดเดียวกันอาจจะเป็นในครึ่งปี (เมื่อฉันจะต้องอัพเกรดด้วยเหตุผลใดก็ตามอย่างไรก็ตามในเวลานั้นฉันจะไม่จำอะไรและสภาพแวดล้อมที่มันถูกสร้างขึ้น จะหายไปนาน 3) ฉันควรแยกไลบรารี่เหล่านี้ให้มีซอร์สโค้ดหรือไม่ นี่เป็นข้อกังวลที่น้อยกว่า อย่างไรก็ตามมันยังคงเป็นปัญหา เป็นเรื่องดีที่จะตรวจสอบให้แน่ใจว่าบิลด์นั้นสามารถทำซ้ำได้ (และประเภทนั้นต้องการซอร์สโค้ด)

2
แอปพลิเคชันบริการเรียกฟังก์ชันฐานข้อมูลชั้น สถาปัตยกรรมไม่ดี?
สถานการณ์: สแต็ค: Java, Spring, Hibernate รุ่น: แอปพลิเคชันไคลเอนต์ - เซิร์ฟเวอร์ รูปแบบ: Model-View-Controller (MVC) คลาส Service Layer มีพฤติกรรมสามอย่าง: บริการบางอย่างมีกฎเกณฑ์ทางธุรกิจภายในวิธีการและมอบสิทธิ์ให้กับแอปพลิเคชัน ชอบ: EntityManager.save (นิติบุคคล); บริการบางอย่างเรียกฟังก์ชันฐานข้อมูล (ผ่านพารามิเตอร์) ไลค์: CallableStatement cls = con.prepareCall ("{เรียก databaseFunction (args)}"); บริการบางอย่างมีวิธีการที่มีทั้งพฤติกรรม คำถามของฉัน: มีปัญหาในการรับสายบริการโดยตรงหรือไม่ - ฟังก์ชั่นฐานข้อมูล? นี่ถือว่าเป็นการกระทำที่ไม่ดีหรือไม่? แบบจำลองสถาปัตยกรรมจะใช้กับโครงการเช่นนี้ได้อย่างไร มีปัญหาใดบ้างหรือไม่ที่มีการผสมผสานพฤติกรรมในบริการเดียวกัน เช่นการทำธุรกรรมและความสอดคล้อง? ในกรณีของการบำรุงรักษาการห่อหุ้มนี้ทำให้ผู้พัฒนาไม่ชัดเจนว่าเขาควรเปลี่ยนฟังก์ชั่นในฐานข้อมูลหรือไม่? จะหลีกเลี่ยงสิ่งนี้ได้อย่างไร สถานการณ์นี้เกิดขึ้นในแอปพลิเคชันอื่น ๆ ทั่วโลกหรือเป็นเพียงข้อผิดพลาดทางสถาปัตยกรรมหรือไม่?

3
ใน Java 8 จะดีกว่าการใช้นิพจน์การอ้างอิงเมธอดหรือเมธอดที่ส่งคืนการใช้อินเตอร์เฟสการทำงานหรือไม่?
Java 8 เพิ่มแนวคิดของส่วนต่อประสานการทำงานรวมถึงวิธีการใหม่มากมายที่ออกแบบมาเพื่อใช้งานส่วนต่อประสานการทำงาน อินสแตนซ์ของอินเทอร์เฟซเหล่านี้สามารถสร้างได้อย่างกระชับโดยใช้นิพจน์การอ้างอิงเมธอด (เช่นSomeClass::someMethod) และนิพจน์แลมบ์ดา (เช่น(x, y) -> x + y) เพื่อนร่วมงานและฉันมีความคิดเห็นที่แตกต่างกันเมื่อควรใช้แบบฟอร์มเดียวหรือแบบอื่น (ซึ่ง "ดีที่สุด" ในกรณีนี้จะทำให้ "อ่านได้ง่ายที่สุด" และ "สอดคล้องกับมาตรฐานการปฏิบัติทั่วไป" มากที่สุด เทียบเท่า) โดยเฉพาะกรณีนี้เกี่ยวข้องกับกรณีที่ข้อมูลต่อไปนี้เป็นจริงทั้งหมด: ฟังก์ชั่นที่เป็นปัญหาไม่ได้ใช้งานนอกขอบเขตเดียว การตั้งชื่อให้ช่วยให้สามารถอ่านได้ (ตรงข้ามกับตรรกะที่เรียบง่ายพอที่จะดูว่าเกิดอะไรขึ้นอย่างรวดเร็ว) ไม่มีเหตุผลการเขียนโปรแกรมอื่นทำไมรูปแบบหนึ่งจะดีกว่าอีกรูปแบบหนึ่ง ความเห็นของฉันในปัจจุบันเกี่ยวกับเรื่องนี้คือการเพิ่มวิธีการส่วนตัวและการอ้างอิงโดยวิธีการอ้างอิงเป็นวิธีที่ดีกว่า รู้สึกว่านี่เป็นวิธีที่คุณสมบัติถูกออกแบบมาให้ใช้และดูเหมือนง่ายขึ้นในการสื่อสารสิ่งที่เกิดขึ้นผ่านชื่อวิธีการและลายเซ็น (เช่น "บูลีน isResultInFuture (ผลผลลัพธ์)" ชัดเจนว่ากำลังส่งคืนบูลีน) นอกจากนี้ยังทำให้วิธีการส่วนตัวนำมาใช้ซ้ำได้มากขึ้นหากการปรับปรุงในอนาคตให้กับชั้นเรียนต้องการใช้ประโยชน์จากการตรวจสอบเดียวกัน แต่ไม่ต้องการเครื่องมือห่อหุ้มส่วนต่อประสานการทำงาน การตั้งค่าของเพื่อนร่วมงานของฉันคือการมีวิธีการที่ส่งกลับอินสแตนซ์ของอินเทอร์เฟซ (เช่น "Predicate resultInFuture ()") สำหรับฉันแล้วมันรู้สึกว่ามันไม่ได้เป็นวิธีที่จะใช้คุณสมบัติรู้สึก clunkier เล็กน้อยและดูเหมือนว่ามันยากที่จะสื่อสารความตั้งใจผ่านการตั้งชื่อ เพื่อให้ตัวอย่างคอนกรีตนี้นี่คือรหัสเดียวกันเขียนในสไตล์ที่แตกต่าง: public class ResultProcessor { public void …

2
ใน MVVM, ViewModel หรือ View ควรรับผิดชอบในการสร้างมุมมองใหม่หรือไม่?
ในแอปพลิเคชัน WPF ของฉันฉันต้องการสร้างมุมมองใหม่ ฉันควรทำเช่นนั้น - ในViewModel or Model ? แอปพลิเคชั่นนี้เป็นเครื่องมือที่มีลักษณะคล้ายหน้าต่างเดียว (ง่ายมากสำหรับตอนนี้ด้วยปุ่ม "ส่ง" เดียว ในกรณีที่เลือกช่องทำเครื่องหมายหนึ่งหน้าต่างใหม่ที่ใช้ ViewModel เดียวกันควรปรากฏขึ้นเพื่อขอรายละเอียดเพิ่มเติมจากผู้ใช้ สำหรับจุดประสงค์ของคำถามนี้ลองพิจารณาเพียงวิธีเข้าหน้าต่างใหม่โดยไม่พิจารณาวิธีอื่นเช่นแสดง / ซ่อนแผง ในอุดมคติแล้วในมุมมองไม่ควรมีรหัสใด ๆ นอกจากนี้เนื่องจาก View ไม่ได้มีตรรกะใด ๆ ในนั้น VM จะต้องตรวจสอบก่อนว่าการสร้างมุมมองใหม่นั้นจำเป็นหรือไม่ - และเมื่อมีการสะท้อนความรับผิดชอบนี้กลับไปที่ View ซึ่งนำไปสู่การขยายโค้ด ในทางกลับกันการสร้างมุมมองใหม่ใน ViewModel ละเมิดหลักการที่ ViewModel ไม่ควรรู้เกี่ยวกับมุมมอง ดังนั้นจะเป็นการดีกว่าหรือที่จะสร้างมุมมองใหม่ใน View หรือ ViewModel?
11 c#  design  wpf  mvvm 

1
หลักการตั้งชื่อสำหรับแพ็คเกจทดสอบ
เรากำลังตั้งชื่อแพคเกจการทดสอบของเราเหมือนกับชุดทดสอบที่จะทดสอบ ดังนั้นเราจึงจบลงด้วยโครงสร้างนี้: src/main/java com.hello.world helloWorld.java src/test/java com.hello.world helloWorldTest.java ฉันมักจะรู้สึกเช่นนี้ไม่ได้ฉลาดเพราะคุณไม่สามารถแยกความแตกต่างระหว่าง "ทดสอบ" และ "ทดสอบ" ถ้าให้กับชื่อแพคเกจเท่านั้น ในทางกลับกันฉันไม่ได้พบกรณีที่จริงเรื่องนี้อย่างใด เป็นการดีที่จะมีการตั้งชื่อแบบแผนเดียวกันสำหรับทั้งสองแพ็คเกจ (สำหรับกรณีทดสอบและคลาสที่มา)? ถ้าไม่สิ่งที่จะเป็นวิธีที่ดีกว่า
11 naming  packages 

4
การสร้างคีย์เรียงลำดับเมื่อเรียงลำดับรายการใหม่
เรามีรายการจำนวนหนึ่งที่ผู้ใช้จะสามารถจัดระเบียบตามลำดับที่ต้องการได้ ชุดของไอเท็มไม่ได้เรียงลำดับ แต่แต่ละไอเท็มมีคีย์การเรียงซึ่งสามารถแก้ไขได้ เรากำลังมองหาอัลกอริทึมที่จะอนุญาตให้สร้างคีย์การเรียงลำดับใหม่สำหรับรายการที่เพิ่มหรือย้ายให้เป็นรายการแรกรายการสุดท้ายหรือระหว่างสองรายการ เราหวังว่าจะต้องแก้ไขคีย์การเรียงลำดับของรายการที่จะถูกย้าย อัลกอริทึมตัวอย่างจะมีแต่ละคีย์การเรียงลำดับเป็นหมายเลขทศนิยมและเมื่อวางรายการระหว่างสองรายการให้ตั้งค่าคีย์การเรียงเป็นค่าเฉลี่ย การวางรายการแรกหรือสุดท้ายจะใช้ค่านอกสุด + - 1 ปัญหาที่นี่คือความแม่นยำจุดลอยตัวอาจทำให้การเรียงลำดับล้มเหลว การใช้จำนวนเต็มสองจำนวนแทนจำนวนเศษส่วนในทำนองเดียวกันอาจทำให้ตัวเลขมีขนาดใหญ่จนไม่สามารถแสดงได้อย่างแม่นยำในประเภทตัวเลขปกติ (เช่นเมื่อถ่ายโอนเป็น JSON) เราไม่ต้องการใช้ BigInts มีอัลกอริทึมที่เหมาะสมสำหรับสิ่งนี้ที่จะใช้งานได้ตัวอย่างเช่นการใช้สตริงซึ่งจะไม่ได้รับผลกระทบจากข้อบกพร่องเหล่านี้หรือไม่? เราไม่ได้มองหาการสนับสนุนการเคลื่อนไหวจำนวนมาก แต่อัลกอริทึมที่อธิบายไว้ข้างต้นอาจล้มเหลวในจำนวนจุดลอยตัวที่มีความแม่นยำสองเท่าหลังจากผ่านไป 50 ครั้ง
11 algorithms 

5
จะรักษาความน่าเชื่อถือของการอ้างอิงระหว่างมวลรวมได้อย่างไร?
ฉันกำลังดิ้นรนเล็กน้อยกับการอ้างอิงระหว่างมวลรวม สมมติรวมมีการอ้างอิงถึงการรวมCar อ้างอิงนี้จะได้รับการสร้างแบบจำลองโดยมีDriverCar.driverId ตอนนี้ปัญหาของฉันคือไกลแค่ไหนฉันควรจะไปในการตรวจสอบการสร้างที่รวมอยู่ในCar CarFactoryฉันควรจะเชื่อหรือไม่ว่าการส่งผ่านDriverIdหมายถึงที่มีอยู่ Driverหรือฉันควรตรวจสอบค่าคงที่หรือไม่ สำหรับการตรวจสอบฉันเห็นความเป็นไปได้สองประการ: ฉันสามารถเปลี่ยนลายเซ็นของโรงงานรถยนต์เพื่อยอมรับเอนทิตีของคนขับทั้งหมด จากนั้นโรงงานก็จะเลือกรหัสจากเอนทิตีนั้นและสร้างรถด้วย ที่นี่ค่าคงที่มีการตรวจสอบโดยปริยาย ฉันจะมีการอ้างอิงของDriverRepositoryในและชัดเจนโทรCarFactorydriverRepository.exists(driverId) แต่ตอนนี้ฉันสงสัยว่าการตรวจสอบไม่แปรปรวนมากเกินไปใช่ไหม ฉันสามารถจินตนาการได้ว่ามวลรวมเหล่านั้นอาจอาศัยอยู่ในบริบทที่มีขอบเขตแยกกันและตอนนี้ฉันจะทำให้มลภาวะทางรถยนต์ของ BC กับการพึ่งพาใน DriverRepository หรือเอนทิตีของผู้ขับขี่ของไดรเวอร์ BC นอกจากนี้ถ้าฉันจะพูดคุยกับผู้เชี่ยวชาญในโดเมนพวกเขาจะไม่ถามถึงความถูกต้องของข้อมูลอ้างอิงดังกล่าว ฉันรู้สึกว่าฉันทำให้รูปแบบโดเมนของฉันสกปรกด้วยความกังวลที่ไม่เกี่ยวข้อง แต่แล้วอีกครั้งในบางจุดการป้อนข้อมูลผู้ใช้ควรได้รับการตรวจสอบ

2
ทำไม ifstream.eof () ไม่ส่งคืน TRUE หลังจากอ่านบรรทัดสุดท้ายของไฟล์
เมื่อมือใหม่เริ่มอ่าน ifstreams สัญชาตญาณของเขา / เธอคือการอ่านไฟล์โดยใช้ลูปที่มักจะมีลักษณะดังนี้ while (!ifstream.eof() { ... } อย่างไรก็ตามเมื่อฉันใช้รหัสนี้ฉันสังเกตว่ามันไม่หยุดจนกว่าจะได้อ่านบรรทัดสุดท้ายของไฟล์สองครั้ง โปรแกรมเมอร์ C ++ โปรดทราบว่านี่ไม่ใช่วิธีการอ่านไฟล์ แต่พวกเขามักจะแนะนำว่าใครก็ตามที่ต้องการอ่านไฟล์ให้ใช้การวนซ้ำเช่นนี้แทน: while (ifstream >> someVar) { ... } ทำไมรหัสชิ้นแรกไม่สามารถทำงานได้อย่างถูกต้อง?
11 c++ 

5
“ ตัวเลขแฝงที่โปรแกรมเมอร์ทุกคนควรรู้” ของ Jeff Dean จะแม่นยำอย่างไรในบริบทของการปรับใช้ฮาร์ดแวร์ที่แตกต่างกัน
ฉันหมายถึงผังหมายเลขแฝงนี้จาก Jeff Dean ที่ Google สิ่งที่ฉันไม่เข้าใจคือตัวเลขเหล่านี้ไม่แตกต่างจากชุดหนึ่งไปยังอีกชุดหรือไม่? สิ่งเหล่านี้มีความถูกต้องสำหรับ RAM, CPU, เมนบอร์ด, ฮาร์ดไดรฟ์หรือไม่?
11 hardware 

4
วิธีที่ดีที่สุดในการใช้ตัวดำเนินการเงื่อนไขแบบ null ในนิพจน์บูลีน
คุณกำลังเขียนนิพจน์บูลีนที่อาจมีลักษณะเช่นนี้: team.Category == "A Team" && team?.Manager?.IsVietnamVet public class Manager { public bool IsVietnamVet { get; set; } } public class Team { public string Category { get; set; } public Manager Manager { get; set; } } ... และคุณได้รับข้อผิดพลาด: ผู้ประกอบการ '&&' ไม่สามารถใช้กับผู้ดำเนินการประเภท 'bool' และ 'bool?' วิธีที่ดีที่สุด / สะอาดที่สุดในการจัดการคืออะไร? team.Category …
11 c# 

3
“ รูปแบบการใช้งาน” คืออะไร?
ขณะนี้ฉันกำลังศึกษา. NET Core และในเอกสารต้นซึ่งเปิดตัว. NET Core ครั้งแรกเราจะเห็นว่าการพูดคุยเกี่ยวกับแนวดิ่งที่แตกต่างกันมากมาย สามารถดูได้ในภาพนี้: ในแนวดิ่งทั้งหมดที่เราเห็นรันไทม์เฟรมเวิร์ก แต่ก็มี "แอพโมเดล" นอกจากนี้การดูวิดีโอเกี่ยวกับ. NET Core CLI ได้มีการกล่าวว่า "DNX มีรูปแบบแอปพลิเคชันของตัวเอง" และ ". NET Core CLI สร้างรูปแบบแอปพลิเคชัน. NET เดี่ยวสำหรับไลบรารีข้ามแพลตฟอร์ม. NET และการพัฒนาแอปพลิเคชันคอนโซล" คำถามของฉันคืออะไร "รุ่นของแอปพลิเคชัน" คืออะไร รูปแบบของแอปพลิเคชั่นคืออะไรและทำมาจากคอนกรีตอย่างเป็นรูปธรรม?

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