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

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

7
จำเป็นที่จะต้องทำการทดสอบฟังก์ชั่นที่เรียบง่าย (มีอยู่ในตัวเอง) หรือไม่?
พิจารณาสิ่งนี้: public function polynominal($a, $b, $c, $d) { return $a * pow($x, 3) + $b * pow($x, 2) + $c * $x + $d; } สมมติว่าคุณเขียนการทดสอบต่าง ๆ สำหรับฟังก์ชั่นด้านบนและพิสูจน์ตัวเองและคนอื่น ๆ ว่า "ใช้งานได้" ทำไมไม่ลองลบการทดสอบเหล่านั้นออกและใช้ชีวิตอย่างมีความสุขตลอดไป ประเด็นของฉันคือฟังก์ชั่นบางอย่างไม่จำเป็นต้องมีการทดสอบอย่างต่อเนื่องหลังจากที่พวกเขาได้รับการพิสูจน์แล้วว่าทำงานได้ ฉันกำลังมองหาตัวนับคะแนนที่บอกว่าใช่ฟังก์ชั่นเหล่านี้ยังต้องได้รับการทดสอบเพราะ: ... หรือว่าใช่สิ่งเหล่านี้ไม่จำเป็นต้องผ่านการทดสอบ ...

2
ภาษาการเขียนโปรแกรมรุ่นที่ 4 และ 5 คืออะไร มีอะไรอีกบ้าง? [ปิด]
เนื่องจากมันถูกจำแนกในระดับโรงเรียน / วิทยาลัยภาษาการเขียนโปรแกรมยอดนิยม (C #, Java, C ++) เป็นภาษาที่ 3 ทั้งหมด (ด้วยระดับที่สูงกว่าของนามธรรมจากชิ้นส่วนทางกายภาพของเครื่อง) นอกจากนี้ภาษาแอสเซมบลีถูกจัดประเภทเป็นภาษาที่ 2 และภาษาเครื่องเป็นภาษาที่ 1 ตอนแรกฉันคิดว่า SQL ควรถูกพิจารณาว่าเป็นภาษาเจนเนอเรชั่นที่ 4 เพราะมันเป็นนามธรรมและห่างไกลจากรายละเอียดของการวนซ้ำและการอธิบายเพิ่มเติม ตอนนี้ฉันพบว่ามีภาษารุ่นที่ 4 และรุ่นที่ 5 แต่อะไรคือพื้นฐานของภาษาโปรแกรมหรือเทคโนโลยีใด ๆ ที่จะจัดประเภทเป็นภาษารุ่นที่ 4 หรือ 5 นอกจากนี้ยังมีภาษารุ่นที่ 6 หรือ 7 เช่นกัน?

9
ทำไมโรงเรียนสอนอาร์เรย์มากกว่ารายการ? [ปิด]
งานมอบหมายส่วนใหญ่ในโรงเรียนของฉันสำหรับชั้นเรียนการเขียนโปรแกรมเริ่มต้นนั้นทำให้ฉันต้องใช้อาร์เรย์ ฉันทำงานเต็มเวลาแล้วและฉันไม่เคยใช้อาร์เรย์สำหรับโครงการใด ๆ ที่ฉันได้ทำงานมา แม้แต่ในโครงการที่มีอยู่ฉันก็ไม่เคยเห็นการใช้อาร์เรย์ที่ไหนเลย ในความคิดของฉันรายการใช้งานง่ายกว่าและเป็นมาตรฐาน เหตุใดอาจารย์บอกให้นักเรียนใช้อาร์เรย์ในการบ้าน เป็นเพียงเพื่อให้นักเรียนเข้าใจพื้นฐานหรือไม่ เนื่องจากมหาวิทยาลัยส่วนใหญ่สอน Java คำถามนี้เฉพาะกับ Java

7
วิธีการตัดสินใจทางเทคนิคที่สำคัญให้เวลาน้อยมาก
ฉันมีเวลา 2 วันในการตัดสินใจอย่างจริงจังเกี่ยวกับเครื่องมือและแพลตฟอร์มที่ บริษัท ของฉันกำลังจะใช้เพื่อพอร์ตแอปพลิเคชัน WPF ไปยัง Linux / Android / iOS เห็นได้ชัดว่าฉันสามารถชี้ไปที่รุ่นพี่ของฉันว่า 2 วันนั้นแทบจะไม่เพียงพอสำหรับการอ่านเกี่ยวกับตัวเลือกที่เป็นไปได้ทั้งหมดและสิ่งที่เกี่ยวกับความพยายามทำต้นแบบเป็นต้นฉันสามารถบอกได้ว่ามันจะไม่ช่วยฉันสักหน่อย หลังจาก 2 วันจะมีการตัดสินใจ ระยะเวลา จากด้านหนึ่งที่ฉันรู้สึกท้อแท้จากอีกด้านฉันคิดว่ามีความจริงในวิธีนี้ไม่อย่างนั้นฉันสามารถหาตัวเองได้อย่างง่ายดายภายใต้ SDK ที่ดาวน์โหลดกรอบงาน APIs บล็อกบทความ ฯลฯ และอื่น ๆ และลืมในสิ่งที่มันมีไว้สำหรับ แต่ฉันก็ยังกลัวว่าการตัดสินใจที่ผิดจะทำให้ บริษัท เสียค่าใช้จ่าย คุณคิดว่าเป็นกระบวนการ "อุดมคติ" ในการตัดสินใจเช่นนี้หรือไม่?

1
หมายเลข 92233720368547800 ของ paypal มาจากไหน [ปิด]
มีข่าวในเรื่องเกี่ยวกับผู้ชายคนหนึ่งที่บัญชี Paypal ได้รับเครดิตโดยไม่ตั้งใจกับ $ 92,233,720,368,547,800 หมายเลขนี้มาจากไหน ข้อผิดพลาดในการเขียนโปรแกรมแบบใดที่ทำให้ตัวเลขนี้มีจำนวนมากขึ้น?

3
มีข้อดีของ SASS มากกว่า LESS หรือไม่? [ปิด]
ฉันพยายามค้นคว้าเกี่ยวกับ css preprocessors เหล่านี้ มีข้อดีของการใช้ sass น้อยกว่าในฐานะ preprocessor css หรือไม่ ปัจจัยที่ฉันกำลังมองหารวมถึงขนาดชุมชนการกำหนดโครงการซอฟต์แวร์ ฯลฯ ฉันรู้ว่ามีคำถามอื่นที่เกี่ยวข้องกับเรื่องนี้ แต่มันไม่ได้เขียนและปิดอย่างสร้างสรรค์ ปรับปรุง ดูเหมือนว่าbootstrap ตอนนี้ผ่านไปแล้วเพื่อใช้ Sass
36 css  less 

5
มันเหมาะสมที่จะมีความคิดเห็นในเชิงบวกในการตรวจสอบรหัสหรือมันเป็นเพียงการวิจารณ์ที่สร้างสรรค์?
เมื่อไม่นานมานี้ฉันได้ทำการตรวจสอบโค้ดจำนวนมากและฉันไม่แน่ใจเกี่ยวกับผลในเชิงบวกและเชิงลบและความเป็นมืออาชีพในการแสดงความคิดเห็นเชิงบวกและ / หรือตลกในการตรวจสอบรหัส เราใช้ Github เป็นแพลตฟอร์มตรวจสอบโค้ดของเราในทีมของฉันดังนั้นทุกคนสามารถแสดงความคิดเห็นได้ ฉันมักจะพยายามใช้แพลตฟอร์มนี้เพื่อให้กระบวนการทั้งหมดตั้งแต่ต้นจนจบสามารถมองเห็นและประวัติศาสตร์

6
คุณควรจะเล่นเกม Yahtzee อย่างไร?
สมมติว่าคุณกำลังเขียนสไตล์เกม TDT ของ Yahtzee คุณต้องการทดสอบส่วนของรหัสที่กำหนดว่าชุดแม่พิมพ์ห้าม้วนเป็นบ้านเต็มหรือไม่ เท่าที่ฉันรู้เมื่อทำ TDD คุณทำตามหลักการเหล่านี้: เขียนแบบทดสอบก่อน เขียนสิ่งที่ง่ายที่สุดที่เป็นไปได้ ปรับแต่งและ refactor ดังนั้นการทดสอบครั้งแรกอาจมีลักษณะเช่นนี้: public void Returns_true_when_roll_is_full_house() { FullHouseTester sut = new FullHouseTester(); var actual = sut.IsFullHouse(1, 1, 1, 2, 2); Assert.IsTrue(actual); } เมื่อทำตาม "เขียนสิ่งที่ง่ายที่สุดที่เป็นไปได้" คุณควรเขียนIsFullHouseวิธีดังนี้: public bool IsFullHouse(int roll1, int roll2, int roll3, int roll4, int roll5) { if (roll1 …
36 unit-testing  tdd 

6
จะหลีกเลี่ยง UITableViewController ขนาดใหญ่และเงอะงะบน iOS ได้อย่างไร
ฉันมีปัญหาเมื่อใช้รูปแบบ MVC บน iOS ฉันค้นหาทางอินเทอร์เน็ต แต่ดูเหมือนจะไม่พบทางออกที่ดีสำหรับปัญหานี้ UITableViewControllerการใช้งานหลายอย่างดูเหมือนจะค่อนข้างใหญ่ ตัวอย่างส่วนใหญ่ที่ฉันได้เห็นช่วยให้UITableViewControllerการดำเนินการและ<UITableViewDelegate> <UITableViewDataSource>การติดตั้งใช้งานเหล่านี้เป็นเหตุผลสำคัญว่าทำไมจึงUITableViewControllerเริ่มมีขนาดใหญ่ ทางออกหนึ่งที่จะสร้างการเรียนที่แยกต่างหากที่ดำเนินการและ<UITableViewDelegate> ของหลักสูตรการเรียนเหล่านี้จะต้องมีการอ้างอิงถึง<UITableViewDataSource> UITableViewControllerมีข้อเสียใด ๆ ในการใช้โซลูชันนี้หรือไม่? โดยทั่วไปฉันคิดว่าคุณควรมอบสิทธิ์การใช้งานให้กับชั้นเรียนอื่น ๆ "ผู้ช่วย" หรืออื่น ๆ ที่คล้ายกันโดยใช้รูปแบบตัวแทน มีวิธีใดในการแก้ปัญหานี้เป็นที่ยอมรับหรือไม่? ฉันไม่ต้องการให้แบบจำลองมีฟังก์ชั่นมากเกินไปหรือมุมมอง ฉันเชื่อว่าตรรกะควรอยู่ในคลาสตัวควบคุมเนื่องจากนี่เป็นหนึ่งในเสาหลักของรูปแบบ MVC แต่คำถามใหญ่คือ: คุณควรแบ่งตัวควบคุมของการใช้ MVC เป็นชิ้นส่วนที่จัดการได้อย่างไร (ใช้กับ MVC ใน iOS ในกรณีนี้) อาจมีรูปแบบทั่วไปสำหรับการแก้ปัญหานี้แม้ว่าฉันกำลังมองหาโซลูชันสำหรับ iOS โดยเฉพาะ โปรดยกตัวอย่างรูปแบบที่ดีสำหรับการแก้ไขปัญหานี้ โปรดระบุเหตุผลที่โซลูชันของคุณยอดเยี่ยม

6
ควรหลีกเลี่ยงตัวแปรเซสชันหรือไม่
ฉันเคยพึ่งพาตัวแปรเซสชั่นอย่างมากในอดีต แต่เมื่อเร็ว ๆ นี้พบว่าหลายคนไม่จำเป็นต้องใช้สิ่งต่าง ๆ เช่นพารามิเตอร์สตริงแบบสอบถาม เพื่อนร่วมงานของฉันปฏิเสธที่จะใช้ตัวแปรเซสชั่น นี่เป็นเป้าหมายที่เป็นจริงและควรหลีกเลี่ยงตัวแปรเซสชันด้วยเหตุผลเชิงปฏิบัติหรือไม่? สามารถหลีกเลี่ยงตัวแปรเซสชันได้อย่างสมบูรณ์ (ยกเว้นคุกกี้เซสชันเพื่ออนุญาตให้เข้าสู่ระบบ) และผลลัพธ์นี้จะทำให้การออกแบบดีขึ้นหรือไม่ เหตุผลบางอย่างที่เพื่อนร่วมงานของฉันไม่ได้ใช้: ลักษณะที่ไม่ได้พิมพ์ของตัวแปรเซสชัน การหมดเวลาของเซสชันทำให้สูญเสียสถานะ ลักษณะขอบเขตส่วนกลางของตัวแปรเซสชัน โหลดเซิร์ฟเวอร์ที่ทำโหลดบาลานซ์จะสูญเสียเซสชัน (เฉพาะ. Net?) แอพลิเคชันพูล / เซิร์ฟเวอร์เริ่มต้นใหม่ พวกเขาไม่จำเป็น

10
ฉันเป็นผู้เริ่มต้น ฉันสามารถเริ่มต้นเรียนรู้ C ++ 11 ได้โดยตรงหรือไม่ หรือฉันต้องเรียนรู้ C ++ เก่า ๆ ? [ปิด]
ฉันเป็นผู้เริ่มต้นและมีความรู้เพียงเล็กน้อยในการเขียนโปรแกรม มันจะดีหรือไม่ถ้าฉันเรียนรู้ C ++ โดยตรงจากหนังสือที่ครอบคลุม C ++ 11 ใหม่หรือฉันควรเรียนผ่านหนังสือ C ++ ที่ดีที่สุด? ฉันควรมีความรู้เล็กน้อยเกี่ยวกับ C ++ ก่อนเรียน C ++ 11 หรือไม่ หรือฉันสามารถเริ่มต้นได้โดยตรงจากที่นั่น? มันจะทำให้เกิดปัญหาหรือไม่ถ้าฉันเริ่มต้นจาก C ++ 11 โดยตรง ถ้าไม่เช่นนั้นแนะนำหนังสือบางเล่มใน C ++ 11
36 c++  c++11 

10
จะตรวจสอบว่า 4 คะแนนเป็นสี่เหลี่ยมได้อย่างไร?
สมมติว่าฉันมี 4 คะแนน (เป็น 2 มิติ) ซึ่งแตกต่างจากกันและฉันต้องการทราบว่าพวกเขาเป็นรูปสี่เหลี่ยมจัตุรัสหรือไม่ ทำอย่างไร? (ให้กระบวนการง่ายที่สุดเท่าที่จะทำได้)

7
มีวิธีปฏิบัติที่เลิกใช้แล้วสำหรับการเขียนโปรแกรมมัลติเธรดและมัลติโปรเซสเซอร์ซึ่งฉันไม่ควรใช้อีกต่อไปหรือไม่?
ในวันแรก ๆ ของ FORTRAN และ BASIC โปรแกรมทั้งหมดถูกเขียนด้วยคำสั่ง GOTO ผลลัพธ์คือโค้ดสปาเก็ตตี้และวิธีแก้ปัญหาคือการเขียนโปรแกรมแบบมีโครงสร้าง ตัวชี้อาจมีลักษณะควบคุมได้ยากในโปรแกรมของเรา C ++ เริ่มต้นด้วยตัวชี้มากมาย แต่แนะนำให้ใช้การอ้างอิง ไลบรารี่อย่าง STL สามารถลดการพึ่งพาของเราได้บ้าง นอกจากนี้ยังมีสำนวนในการสร้างสมาร์ทพอยน์เตอร์ที่มีคุณสมบัติดีกว่าและ C ++ บางรุ่นจะอนุญาตให้อ้างอิงและจัดการโค้ด วิธีปฏิบัติในการเขียนโปรแกรมเช่นการสืบทอดและ polymorphism ใช้ตัวชี้จำนวนมากเบื้องหลัง ภาษาเช่น Java กำจัดพอยน์เตอร์และใช้การรวบรวมขยะเพื่อจัดการข้อมูลที่จัดสรรแบบไดนามิกแทนที่จะขึ้นอยู่กับโปรแกรมเมอร์เพื่อจับคู่คำสั่งใหม่และลบทั้งหมด ในการอ่านของฉันฉันได้เห็นตัวอย่างของการเขียนโปรแกรมแบบหลายกระบวนการและหลายเธรดที่ดูเหมือนจะไม่ใช้เซมาฟอร์ พวกเขาใช้สิ่งเดียวกันกับชื่อที่แตกต่างกันหรือพวกเขามีวิธีการใหม่ในการจัดโครงสร้างการปกป้องทรัพยากรจากการใช้งานพร้อมกันหรือไม่? ตัวอย่างเช่นตัวอย่างเฉพาะของระบบสำหรับการเขียนโปรแกรมมัลติเธรดที่มีตัวประมวลผลมัลติคอร์คือ OpenMP มันแสดงให้เห็นถึงภูมิภาคที่สำคัญดังต่อไปนี้โดยไม่ต้องใช้เซมาฟอร์ซึ่งดูเหมือนจะไม่รวมอยู่ในสภาพแวดล้อม th_id = omp_get_thread_num(); #pragma omp critical { cout << "Hello World from thread " << th_id << '\n'; …

4
JVM มีข้อ จำกัด อะไรในการเพิ่มประสิทธิภาพการโทรแบบหาง
Clojure ไม่ได้ดำเนินการเพิ่มประสิทธิภาพการโทรหางในตัวเอง: recurเมื่อคุณมีหางฟังก์ชันเวียนและคุณต้องการที่จะมีมันที่ดีที่สุดที่คุณจะต้องใช้รูปแบบพิเศษ ในทำนองเดียวกันถ้าคุณมีสองฟังก์ชั่น recursive trampolineร่วมกันคุณสามารถเพิ่มประสิทธิภาพพวกเขาเท่านั้นโดยใช้ คอมไพเลอร์ Scala สามารถดำเนินการ TCO สำหรับฟังก์ชันแบบเรียกซ้ำ แต่ไม่ใช่สำหรับสองฟังก์ชันแบบเรียกซ้ำ เมื่อใดก็ตามที่ฉันได้อ่านเกี่ยวกับข้อ จำกัด เหล่านี้พวกเขามักจะกำหนดข้อ จำกัด ที่แท้จริงให้กับตัวแบบ JVM ฉันไม่รู้อะไรเลยเกี่ยวกับคอมไพเลอร์ แต่มันทำให้ฉันสับสนเล็กน้อย Programming Scalaผมขอใช้ตัวอย่างจาก ฟังก์ชั่นที่นี่ def approximate(guess: Double): Double = if (isGoodEnough(guess)) guess else approximate(improve(guess)) ถูกแปลเป็น 0: aload_0 1: astore_3 2: aload_0 3: dload_1 4: invokevirtual #24; //Method isGoodEnough:(D)Z 7: ifeq 10: …
36 scala  clojure  jvm  tail-call 

4
มารยาทเมื่อถามคำถามในช่อง IRC [ปิด]
โครงการ OSS ขนาดใหญ่จำนวนมากจะรักษาช่องสัญญาณ IRC เพื่อหารือเกี่ยวกับการใช้งานหรือการพัฒนา เมื่อฉันติดขัดกับการใช้งานโปรเจคต์การพยายามและล้มเหลวในการค้นหาข้อมูลบนเว็บซึ่งเป็นหนึ่งในวิธีที่ฉันพยายามจะคิดออกว่าจะทำอย่างไรเพื่อไปที่ช่อง IRC และถาม แต่คำถามของฉันถูกเพิกเฉยอย่างสมบูรณ์โดยผู้คนในช่อง หากมีความเงียบเมื่อฉันเข้าจะยังคงมีความเงียบ หากมีการสนทนาอย่างต่อเนื่อง ฉันเปิดช่องทิ้งไว้สองสามชั่วโมงโดยหวังว่าในที่สุดบางคนอาจจะชวนฉัน แต่ก็ไม่มีอะไรเกิดขึ้น ดังนั้นฉันกังวลว่าฉันเป็นคนหยาบคายในทางที่ฉันไม่เข้าใจหรือทำผิดกฎที่ไม่ได้พูดและไม่สนใจมัน ฉันพยายามที่จะทำให้คำถามของฉันสุภาพตรงประเด็นและไวยากรณ์และพยายามระบุว่าฉันได้ลองวิธีแก้ปัญหาที่ชัดเจนและทำไมพวกเขาถึงไม่ทำงาน ฉันเข้าใจว่าเห็นได้ชัดว่าฉันเป็นคนแปลกหน้าคนหนึ่งในช่องทางที่สมบูรณ์ แต่ฉันไม่แน่ใจว่าจะแก้ไขได้อย่างไร ฉันควรแฝงตัวในช่องโดยไม่พูดอะไรเลยเป็นเวลาหนึ่งสัปดาห์? นั่นดูไร้สาระเหมือนกัน ข้อความทั่วไปที่ฉันส่งอาจเป็น "สวัสดีทุกคน - ฉันพยายามทำให้ Foo ทำงาน แต่ฉันยังได้รับ BarException ต่อไปฉันลองรีเซ็ต Quux แต่ดูเหมือนจะไม่ทำอะไรเลย ข้อเสนอแนะเกี่ยวกับสิ่งที่ฉันจะลอง?

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