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

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

4
การเชื่อมต่อฐานข้อมูลจะถูกปิดหรือไม่ถ้าเราให้ผลแถวของ data datader และไม่อ่านบันทึกทั้งหมด?
ในขณะที่ทำความเข้าใจวิธีการyieldทำงานของคำหลักฉันเจอlink1และlink2บน StackOverflow ซึ่งสนับสนุนการใช้งานyield returnในขณะวนซ้ำ DataReader และเหมาะสมกับความต้องการของฉันเช่นกัน แต่มันทำให้ฉันสงสัยว่าเกิดอะไรขึ้นถ้าฉันใช้yield returnดังที่แสดงด้านล่างและถ้าฉันไม่ทำซ้ำใน DataReader ทั้งหมดการเชื่อมต่อฐานข้อมูลจะเปิดตลอดไปหรือไม่ IEnumerable<IDataRecord> GetRecords() { SqlConnection myConnection = new SqlConnection(@"..."); SqlCommand myCommand = new SqlCommand(@"...", myConnection); myCommand.CommandType = System.Data.CommandType.Text; myConnection.Open(); myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); try { while (myReader.Read()) { yield return myReader; } } finally { myReader.Close(); } } void AnotherMethod() { foreach(var …
15 c#  database  .net  resources 

1
Collection.stream (). filter (). forEach () ไม่มีประสิทธิภาพเปรียบเทียบกับมาตรฐานสำหรับแต่ละลูปหรือไม่
IntelliJ IDEA แนะนำให้ฉันตอนนี้เพื่อแทนที่ลูปสำหรับแต่ละลูปต่อไปนี้ด้วยการเรียก Java 8 "forEach": for (Object o : objects) { if (o instanceof SomeObject) { doSomething(); } } การโทรที่แนะนำจะเป็นเช่นนี้: objects.stream().filter(o -> o instanceof SomeObject).forEach(o -> doSomething()); เว้นแต่ว่าฉันเข้าใจผิดว่าฟังก์ชันการทำงานพื้นฐานของ Stream ทำงานอย่างไรฉันดูเหมือนว่าการใช้ stream เป็นการดำเนินการ O (2n) ซึ่งตรงข้ามกับการดำเนินการ O (n) สำหรับมาตรฐานสำหรับแต่ละลูป

2
คำติชมของ OCaml: มันยังใช้ได้หรือไม่
ฉันเป็นมือใหม่อย่างสมบูรณ์กับ OCaml ฉันเพิ่งเข้ามาในหน้านี้ซึ่งแสดงให้เห็นถึงการวิพากษ์วิจารณ์ที่ดีต่อ OCaml เห็นไหมว่าหน้ามันค่อนข้างเก่า (2550): จุดใดที่แสดงรายการสัญลักษณ์วันนี้ยังคงเป็นจริง ตัวอย่างเช่น: มันยังคงเป็นจริงหรือไม่ที่จะพิมพ์วัตถุทั่วไป? ฉันต้องการทำให้ชัดเจนว่าฉันไม่ได้มองหาความคิดเห็นที่แสดงไว้ในนั้น ฉันถามว่าข้อมูลที่ระบุไว้เช่นความจริงที่ว่าจำนวนเต็มล้นโดยไม่มีคำเตือนยังคงถูกต้องสำหรับ OCaml รุ่นล่าสุด
15 ocaml 

5
XSLT เทียบเท่ากับ JSON
ฉันสนใจในการค้นหา (หรือหากจำเป็นต้องพัฒนา) เทียบเท่า XSLT สำหรับ JSON เนื่องจากฉันไม่พบใด ๆ ฉันกำลังพิจารณาภาษาคิวรีที่เป็นไปได้ที่จะใช้สำหรับการจับคู่พา ธ JSON เพื่อใช้เทมเพลต (จาก JavaScript) เมื่อมีการจับคู่ (อาจแค่ตรวจสอบอาร์เรย์ของรูปแบบการจับคู่ตามลำดับและหยุดที่ แม่แบบแรกที่ตรงกับแม้ว่าอนุญาตให้เทียบเท่ากับ xsl: Apply-templates เพื่อให้แม่แบบไปสำหรับเด็ก) ฉันรับรู้ถึง JSONPath, JSONQuery และ RQL เป็นภาษาคิวรี JSON (แม้ว่าฉันจะไม่ชัดเจนว่า RQL สนับสนุนเส้นทางสัมบูรณ์และเส้นทางสัมพัทธ์หรือไม่) ข้อเสนอแนะเกี่ยวกับปัจจัยที่ต้องพิจารณาและความได้เปรียบของแต่ละข้อต่อการใช้งานดังกล่าว
15 javascript  json  xslt 

1
AngularJS Directive เทียบกับ Service vs Controller
ฉันกำลังจะเริ่มดำเนินการตามคำขอเปลี่ยนแปลงในเว็บไซต์ภายใน บริษัท ของฉันซึ่งจะตรวจสอบฟิลด์จำนวนมากและเน้นพวกเขาหากพวกเขาตรงกับหลักเกณฑ์บางอย่าง ตัวอย่างเช่นหากวันเกิดคือวันนี้ฟิลด์นั้นจะถูกระบุไว้และคำแนะนำเครื่องมือจะพูดว่า "ขอให้พวกเขามีความสุขในวันเกิด!" รายละเอียดขอให้โหลดสิ่งนี้หลังจากที่ส่วนอื่น ๆ ของหน้าถูกสร้างการแสดงผลดังนั้นมันจะไม่เพิ่มความเร็วในการโหลด เนื่องจากฉันใหม่กับ angularJS ฉันไม่แน่ใจว่าวิธีการ 'ถูกต้อง' ที่ควรทำ ปัญหาที่พบ: เนื่องจากสิ่งนี้รวมถึงการเพิ่มเส้นขอบและรูปภาพและแอตทริบิวต์ของชื่อเรื่อง (การจัดการ DOM) ดูเหมือนว่าฉันควรใช้คำสั่ง อย่างไรก็ตามสิ่งนี้จะไม่สามารถใช้ซ้ำได้หรือสั้นเหมือนคำสั่งส่วนใหญ่ ข้อมูลครึ่งหนึ่งที่ฉันต้องตรวจสอบจะถูกส่งคืนในการโทรดั้งเดิมเมื่อโหลดหน้าเว็บดังนั้นฉันจึงต้องการบันทึกและไม่เสียสายอีกครั้งที่จะได้รับอีกครั้งซึ่งทำให้ฉันคิดว่าบริการจะดีสำหรับการจัดเก็บข้อมูลทั้งหมด ฉันรู้วิธีการทำสิ่งนี้ทั้งหมดในคอนโทรลเลอร์ แต่นั่นคือรหัสที่ไม่ดี: P ความคิดใด ๆ เกี่ยวกับวิธีที่ดีที่สุดที่สามารถทำได้? โดยทั่วไปฉันจะต้องมีการโทร http เพื่อตรวจสอบข้อมูลทั้งหมดซึ่งจะส่งคืนวัตถุที่มีค่าบูลสำหรับ 'โทรออก' แต่ละประเภทที่ฉันต้องทำ จากนั้นฉันจะเรียกใช้รายการนี้และถ้าค่าเป็นจริงให้เพิ่มเส้นขอบรูปภาพและข้อความคำแนะนำเครื่องมือ ฉันไม่แน่ใจว่าคำถามนี้ชัดเจนเพียงพอหรือไม่ถ้าคุณต้องการให้ฉันเพิ่มรายละเอียดโปรดถาม ขอขอบคุณ!
15 angularjs 

4
วิธีจัดการกับ“ การพึ่งพาแบบวงกลม” ในการฉีดแบบพึ่งพา
ชื่อกล่าวว่า "การพึ่งพาหนังสือเวียน" แต่มันไม่ได้เป็นถ้อยคำที่ถูกต้องเพราะสำหรับฉันการออกแบบดูเหมือนจะแข็ง อย่างไรก็ตามให้พิจารณาสถานการณ์ต่อไปนี้ซึ่งชิ้นส่วนสีน้ำเงินได้รับจากคู่ค้าภายนอกและสีส้มคือการนำไปปฏิบัติของฉันเอง นอกจากนี้สมมติว่ามีมากกว่าหนึ่งConcreteMainแต่ฉันต้องการใช้เฉพาะ (ในความเป็นจริงแต่ละชั้นมีการพึ่งพาอาศัยกันมากกว่านี้ แต่ฉันพยายามทำให้มันง่ายขึ้นที่นี่) ฉันต้องการเริ่มต้นทั้งหมดนี้ด้วย Depency Injection (Unity) แต่เห็นได้ชัดว่าฉันได้รับStackOverflowExceptionรหัสต่อไปนี้เนื่องจาก Runner พยายามยกตัวอย่าง ConcreteMain และ ConcreteMain ต้องการนักวิ่ง IUnityContainer ioc = new UnityContainer(); ioc.RegisterType<IMain, ConcreteMain>() .RegisterType<IMainCallback, Runner>(); var runner = ioc.Resolve<Runner>(); ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร มีวิธีการสร้างโครงสร้างนี้เพื่อให้ฉันสามารถใช้กับ DI? สถานการณ์ที่ฉันทำอยู่ในขณะนี้คือการตั้งค่าทุกอย่างด้วยตนเอง แต่นั่นทำให้การพึ่งพาอย่างหนักConcreteMainในชั้นเรียนที่ทำให้อินสแตนซ์มัน นี่คือสิ่งที่ฉันพยายามหลีกเลี่ยง (ด้วยการลงทะเบียน Unity ในการกำหนดค่า) รหัสแหล่งที่มาทั้งหมดด้านล่าง (ตัวอย่างง่ายมาก!); public class Program { public static void Main(string[] …

2
ที่เก็บควรทำอะไรจริงๆ
ฉันได้ยินรูปแบบที่เก็บจำนวนมาก แต่ฉันไม่เข้าใจว่าที่เก็บควรทำอะไร เมื่อฉันพูดว่า "พื้นที่เก็บข้อมูลควรทำอะไรจริงๆ" ฉันกังวลเกี่ยวกับวิธีการที่ควรใช้เป็นหลัก ตัวอย่างเช่นที่เก็บควรให้วิธีการ CRUD หรือควรให้วิธีการที่แตกต่างกัน? ฉันหมายถึงที่เก็บควรมีตรรกะทางธุรกิจหรือควรประกอบด้วยตรรกะในการสื่อสารกับแหล่งข้อมูลและจัดการเอนทิตีที่จะบันทึกหรือโหลด? นอกจากนี้ฉันเคยได้ยินว่าที่เก็บเป็นหน่วยของการคงอยู่ของมวลรวม แต่นั่นเป็นอย่างไร ฉันล้มเหลวที่จะเข้าใจวิธีการทำงานในทางปฏิบัติ ฉันคิดว่าเราควรมีเพียงหนึ่งอินเตอร์เฟสIRepositoryที่มีเมธอด CRUD และสำหรับเอนทิตีใด ๆ การใช้งานจะมีตรรกะในการบันทึกและดึงข้อมูลประเภทนั้นจากแหล่งข้อมูล

6
มลพิษที่ "ใช้ namespace" คืออะไร?
ฉันกำลังดูคู่มือการเขียนโค้ดของ Google [ที่นี่]และพวกเขาไม่แนะนำให้ใช้using namespaceหรือnamespace::function- ถ้าฉันไม่ได้ตีความผิด สิ่งนี้ใช้ได้กับstdเช่นกันหรือไม่? cout<<ไม่ทำงานหากไม่มีมัน หนังสือเล่มนี้แนะนำเหมือนกัน ดังนั้นฉันจะไปเกี่ยวกับการใช้cout<<โดยไม่ต้องusing namespace std;หรือstd::cout<<อย่างไร วิธีที่แนะนำคืออะไร? std::cout<<? หนังสือเรียน c ++ ส่วนใหญ่สอนผู้เริ่มต้นด้วยusing namespace std;พวกเขาเผยแพร่วิธีการเข้ารหัสที่ไม่ดีหรือไม่?
15 c++  coding-style 

3
MVC: อะไรคือความแตกต่างระหว่างรุ่นและบริการ?
เหตุใดในบางเฟรมเวิร์กลอจิกจึงเรียกว่า "Model" ในขณะที่บางเฟรมเรียกว่า "Service" พวกเขาแตกต่างกันหรือแตกต่างกันโดยการตั้งชื่อแบบแผน? อัพเดท 1 เหตุผลที่ฉันถามคือเพราะใน Zend Framework กรอบ MVC คลาสสิกทุกคนใช้แนวคิดของ Model ตอนนี้ฉันกำลังเรียนรู้ AngularJS และดูเหมือนว่าคำว่ารุ่นหายไปและถูกแทนที่ด้วยบริการคำว่า สิ่งที่ฉันสังเกตเห็นคือการบริการเป็นเหมือนซิงเกิลตันที่สามารถนำกลับมาใช้ซ้ำแล้วซ้ำอีก (ตัวอย่าง: ไคลเอนต์ REST) ​​ในขณะที่แบบจำลองมีความสัมพันธ์กับการจัดการข้อมูลที่มาจากตัวควบคุมในรูปแบบ MVC มากกว่า
15 mvc  model  service 

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

5
วิธีเริ่มโครงการพัฒนาเมื่อมีผู้มีส่วนได้ส่วนเสียมากเกินไป
ฉันเพิ่งเริ่มงานใหม่ที่วิทยาลัยในฐานะนักพัฒนาโปรแกรมประยุกต์บนเว็บ วิทยาลัยมีระบบที่แตกต่างกันจำนวนมาก แต่ทุกระบบที่สืบทอดกันมาค่อนข้างแย่ สร้างขึ้นส่วนใหญ่ใน PHP พวกเขาจัดการกับสิ่งต่าง ๆ เช่นการเข้าร่วมประชุมผลการสอบการทำเครื่องหมาย ฯลฯ งานแรกของฉันคือการสร้างระบบที่รวมข้อมูลจำนวนมากซึ่งกำลังวางอยู่ในฐานข้อมูลต่าง ๆ โดยไม่มี API ที่เป็นมิตรใด ๆ ที่จะดึงมันออกมา (ระบบที่มีอยู่จะถูกเข้ารหัสใน vanilla PHP โดยไม่มีการแยกข้อมูลและมุมมอง) ด้วยแพลตฟอร์มใหม่สำหรับการบันทึกข้อมูลเกี่ยวกับศิษยาภิบาลและนำเสนอให้อาจารย์ผู้สอนและเจ้าหน้าที่อาวุโสในลักษณะที่เป็นประโยชน์เพื่อให้พวกเขาสามารถตอบสนองต่อปัญหากับนักเรียนได้อย่างรวดเร็ว ในการพบกันครั้งแรกมี 18 คน! ไม่มีผู้นำหรือเสียงที่ชัดเจนที่เป็นตัวแทนของคนส่วนใหญ่ ไม่มีไคลเอ็นต์ที่ระบุตัวตนได้ การประชุมเปลี่ยนจากแนวคิดการใช้งานโดยละเอียดเกี่ยวกับคุณสมบัติเล็กน้อยจากหัวหน้าคณะไปสู่การโต้แย้งว่าเราควรใช้สเปรดชีต Excel หรือไม่สำหรับการป้อนข้อมูล! อย่างที่คุณจินตนาการได้ว่าหัวของฉันหมุนไปตอนท้าย จริง ๆ แล้วฉันมีความคิดที่ดีมากมาย แต่ฉันไม่สามารถได้ยินพวกเขา นี่เป็นบทบาทใหม่สำหรับฉันก่อนที่ฉันจะเป็นส่วนหนึ่งของทีมพัฒนาในหน่วยงานการตลาด เรามีบทบาทที่ชัดเจนมาก: ผู้จัดการโครงการลูกค้านักออกแบบนักพัฒนา ฉันต้องการทราบว่านักพัฒนาหรือผู้จัดการที่มีประสบการณ์สามารถให้คำแนะนำกับฉันเกี่ยวกับวิธีที่ฉันสามารถชักจูงเพื่อนร่วมงานของฉันให้เป็นสิ่งที่คล้ายกับทีมงานโครงการ เป็นวิธีที่คล่องตัวหรือไม่? คุณจะจัดการกับเสียงที่ต่างกันอย่างไร? เป็นที่ชัดเจนว่ากระบวนการบางอย่างจะต้องดำเนินการอย่างรวดเร็วฉันไม่แน่ใจว่ามันคืออะไร

1
การทดสอบหน่วยสำหรับไลบรารีการคำนวณทางวิทยาศาสตร์
ฉันเคยมีประสบการณ์เล็กน้อยเกี่ยวกับการทดสอบหน่วยมาก่อนในสิ่งที่ฉันเรียกว่า (ไม่ใช่ดูถูก) โครงการวิศวกรรมซอฟต์แวร์แบบคลาสสิก: MVC ที่มี GUI ผู้ใช้ฐานข้อมูลตรรกะทางธุรกิจในชั้นกลางเป็นต้นตอนนี้ฉันก็เลย m กำลังเขียนไลบรารี่การคำนวณทางวิทยาศาสตร์ใน C # (ใช่ฉันรู้ว่า C # ช้าเกินไปใช้ C ไม่ต้องพลิกโฉมวงล้อและทั้งหมดนั้น แต่เรามีคนจำนวนมากที่ทำการคำนวณทางวิทยาศาสตร์ในคณะของฉันใน C # และเราต้องการมัน) มันเป็นโครงการขนาดเล็กในแง่ของอุตสาหกรรมการพัฒนาซอฟต์แวร์เพราะฉันเขียนด้วยตัวเองเป็นส่วนใหญ่และเป็นครั้งคราวด้วยความช่วยเหลือจากเพื่อนร่วมงานไม่กี่คน นอกจากนี้ฉันไม่ได้รับเงินและที่สำคัญที่สุดคือโครงการทางวิชาการ ฉันหมายถึงฉันคาดหวังว่ามันจะมีคุณภาพระดับมืออาชีพสักวันเพราะฉันวางแผนที่จะเปิดแหล่งที่มา อย่างไรก็ตามโครงการกำลังใหญ่ขึ้น (มีรหัสประมาณ 18,000 บรรทัดซึ่งฉันคิดว่าใหญ่สำหรับโครงการของชายคนหนึ่ง) และมันก็หลุดออกจากมือฉันแล้ว ฉันใช้ git เพื่อควบคุมแหล่งข้อมูลและฉันคิดว่าฉันทำได้ดี แต่ฉันกำลังทดสอบเหมือนโรงเรียนเก่าฉันหมายถึงการเขียนแอปพลิเคชั่นคอนโซลแบบเต็มรูปแบบที่ทดสอบส่วนใหญ่ของระบบส่วนใหญ่เป็นเพราะฉันไม่รู้ ทำการทดสอบหน่วยในสถานการณ์นี้แม้ว่าฉันรู้สึกว่าเป็นสิ่งที่ฉันควรทำ ปัญหาคือห้องสมุดมีอัลกอริธึมเป็นส่วนใหญ่เช่นอัลกอริธึมกราฟตัวแยกประเภทตัวแก้ตัวเลขการแจกแจงแบบสุ่ม ฯลฯ ฉันไม่ทราบวิธีระบุกรณีทดสอบเล็ก ๆ สำหรับอัลกอริธึมเหล่านี้ สุ่มฉันไม่รู้วิธีตรวจสอบความถูกต้อง ตัวอย่างเช่นสำหรับการจำแนกประเภทมีตัวชี้วัดบางอย่างเช่นความแม่นยำและการเรียกคืน แต่ตัวชี้วัดเหล่านี้ดีกว่าสำหรับการเปรียบเทียบอัลกอริธึมสองกว่าการตัดสินอัลกอริธึมเดียว ดังนั้นฉันจะกำหนดความถูกต้องได้อย่างไรที่นี่ ในที่สุดก็มีปัญหาประสิทธิภาพการทำงาน ฉันรู้ว่ามันเป็นชุดทดสอบที่แตกต่างกันโดยสิ้นเชิง แต่ประสิทธิภาพเป็นหนึ่งในคุณสมบัติที่สำคัญของเครื่องมือทางวิทยาศาสตร์มากกว่าความพึงพอใจของผู้ใช้หรือการวัดทางวิศวกรรมซอฟต์แวร์อื่น ๆ หนึ่งในปัญหาที่ใหญ่ที่สุดของฉันคือโครงสร้างข้อมูล การทดสอบเดียวที่ฉันสามารถทำได้สำหรับต้นไม้ kd …
15 c#  unit-testing 

3
ฟิลเตอร์บลูมที่ปรับขนาดได้ทำงานอย่างไร
ฉันอ่านค่าตัวกรองบลูมที่ปรับขนาดได้และไม่สามารถเข้าใจได้ว่าแต่ละครั้งที่ตัวกรองบลูมที่เป็นองค์ประกอบเติมเต็มตัวกรองบลูมใหม่ที่มีขนาดใหญ่ขึ้นจะถูกเพิ่มเข้าไป องค์ประกอบที่สนับสนุนชุดบิตในตัวกรองที่สร้างขึ้นครั้งแรกไม่สามารถค้นหาว่ามีอยู่หรือไม่ บางทีฉันอาจเข้าใจผิดในเรื่องนี้? ฉันเข้าใจตัวกรองบลูมพื้นฐาน อย่างไรก็ตามฉันไม่สามารถคลุมศีรษะด้วยฟิลเตอร์บลูมแบบไดนามิก

1
การสร้างพารามิเตอร์วัตถุใน {}?
ฉันกำลังพยายามถอดรหัสรหัสจากหนังสือ: List<Person> people = new List<Person>() { new Person {FirstName="Homer",LastName="Simpson",Age=47}, new Person {FirstName="Marge",LastName="Simpson",Age=45} }; บุคคลเป็นเพียงคลาสง่ายๆที่พวกเขาสร้างขึ้นโดยมีฟิลด์มากมาย: ชื่อนามสกุล ฯลฯ ... สิ่งที่ฉันไม่เข้าใจคือเราไม่ส่งพารามิเตอร์ไปที่นวกรรมิกของบุคคลในวงเล็บปีกกาใช่ไหม ฉันลองทำซ้ำรหัสนี้ แต่ดูเหมือนว่าจะไม่บินผู้ใด? ขอบคุณสำหรับการป้อนข้อมูล
15 c# 

7
วัตถุประสงค์ของการเรียนการสอน NOP และจัดแนวคำสั่งในชุดประกอบ x86
เป็นเวลาหนึ่งปีหรือมากกว่านั้นตั้งแต่ที่ฉันเข้าเรียนในชั้นเรียน ในชั้นเรียนนั้นเราใช้ MASM กับห้องสมุด Irvine เพื่อให้การเขียนโปรแกรมง่ายขึ้น หลังจากที่เราได้ทำตามคำแนะนำส่วนใหญ่แล้วเขาบอกว่าคำสั่ง NOP นั้นไม่ได้ทำอะไรเลยและไม่ต้องกังวลกับการใช้มัน อย่างไรก็ตามมันเกี่ยวกับมิดเทอมและเขามีโค้ดตัวอย่างบางตัวที่ทำงานไม่ถูกต้องดังนั้นเขาจึงบอกให้เราเพิ่มคำสั่ง NOP และทำงานได้ดี ฉันถามฉันว่าทำไมฉันถึงเรียนหลังเลิกเรียนและสิ่งที่ทำจริงและเขาบอกว่าเขาไม่รู้ มีใครรู้บ้าง
15 assembly  x86 

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