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

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

3
ทำไมไม่มีประเภทของฟังก์ชัน?
ในปัญหาการเรียนรู้ที่ฉันทำไปด้วยฉันรู้ว่าฉันต้องการประเภทของฟังก์ชันที่มีการใช้งานการเขียนเป็นต้นเหตุผล ... มันจะสะดวกในการปฏิบัติต่อการเป็นตัวแทนของฟังก์ชั่นราวกับว่ามันเป็นฟังก์ชั่นของตัวเองเพื่อให้การใช้ฟังก์ชั่นโดยนัยใช้ล่ามและฟังก์ชั่นการแต่งได้คำอธิบายใหม่ เมื่อคุณมี typeclass สำหรับฟังก์ชั่นคุณสามารถได้รับ typeclass สำหรับฟังก์ชั่นพิเศษ - ในกรณีของฉันฉันต้องการฟังก์ชั่นกลับด้าน ตัวอย่างเช่นฟังก์ชั่นที่ใช้การชดเชยจำนวนเต็มอาจแสดงโดย ADT ที่มีจำนวนเต็ม การใช้ฟังก์ชั่นเหล่านั้นหมายถึงการเพิ่มจำนวนเต็ม องค์ประกอบถูกนำมาใช้โดยการเพิ่มจำนวนเต็มห่อ ฟังก์ชันผกผันมีจำนวนเต็มค่าเป็นลบ ฟังก์ชั่นเอกลักษณ์ห่อศูนย์ ไม่สามารถจัดหาฟังก์ชั่นคงที่ได้เนื่องจากไม่มีตัวแทนที่เหมาะสมสำหรับมัน แน่นอนว่ามันไม่จำเป็นต้องสะกดสิ่งต่าง ๆ ราวกับว่ามันเป็นค่าของฟังก์ชั่น Haskell ของแท้ แต่เมื่อฉันมีความคิดฉันคิดว่าห้องสมุดแบบนั้นต้องมีอยู่แล้วและอาจใช้การสะกดมาตรฐาน แต่ฉันไม่สามารถหาประเภทของงานพิมพ์ในห้องสมุด Haskell ได้ ฉันพบโมดูลData.Functionแต่ไม่มีประเภทของงานพิมพ์ - มีเพียงฟังก์ชันทั่วไปบางส่วนที่มีให้จาก Prelude ดังนั้น - ทำไมไม่มี typeclass สำหรับฟังก์ชั่น? เป็น "เพียงเพราะไม่มี" หรือ "เพราะไม่มีประโยชน์อย่างที่คุณคิด" หรืออาจมีปัญหาพื้นฐานกับความคิด? ปัญหาที่เป็นไปได้ที่ใหญ่ที่สุดที่ฉันเคยคิดมาก่อนก็คือฟังก์ชั่นแอปพลิเคชั่นในฟังก์ชั่นที่เกิดขึ้นจริงอาจจะต้องได้รับการใส่รหัสเป็นพิเศษโดยคอมไพเลอร์เพื่อหลีกเลี่ยงปัญหาการวนซ้ำ และเพื่อที่ฉันจะต้องเรียกใช้ฟังก์ชั่นแอปพลิเคชั่นและเพื่อที่จะทำ ... เบาะแสเพิ่มเติม โค้ดตัวอย่างเพื่อแสดงสิ่งที่ฉันตั้งใจจะ ... {-# LANGUAGE MultiParamTypeClasses …

8
Is Dependency Injection คุ้มค่านอก UnitTesting
เมื่อมีคอนสตรัคเตอร์ที่ไม่เคยจะต้องใช้การใช้งานที่แตกต่างกันของวัตถุหลายอย่างที่มันเริ่มต้นมันยังใช้งาน DI ได้หรือไม่? ท้ายที่สุดเราอาจยังต้องการทดสอบหน่วย คลาสที่มีปัญหาเริ่มต้นคลาสอื่น ๆ ในคอนสตรัคเตอร์และคลาสที่ใช้นั้นค่อนข้างเฉพาะเจาะจง มันจะไม่ใช้การใช้งานอื่น เรามีเหตุผลในการหลีกเลี่ยงการพยายามโปรแกรมไปยังส่วนต่อประสานหรือไม่?

4
ฉันจำเป็นต้องใช้ ID ในฐานข้อมูลของฉันหรือไม่หากบันทึกสามารถระบุวันที่ได้
ฉันกำลังเขียนแอปพลิเคชันแรกสำหรับ Android และจะใช้ฐานข้อมูล SQLite ดังนั้นจะพยายาม จำกัด ขนาดให้มากที่สุด แต่ฉันคิดว่าคำถามนี้ใช้กับการออกแบบฐานข้อมูลโดยทั่วไป ฉันวางแผนที่จะจัดเก็บบันทึกที่จะมีข้อความและวันที่สร้าง แอพนี้เป็นแอพแบบสแตนด์อะโลนนั่นคือจะไม่เชื่อมโยงกับอินเทอร์เน็ตและมีผู้ใช้เพียงรายเดียวเท่านั้นที่จะอัปเดตดังนั้นจึงไม่มีโอกาสที่จะมีมากกว่าหนึ่งรายการพร้อมวันที่ที่กำหนด ตารางของฉันยังต้องการคอลัมน์ ID หรือไม่ ถ้าเป็นเช่นนั้นข้อดีของการใช้ ID เป็นตัวระบุบันทึกซึ่งตรงข้ามกับวันที่คืออะไร?
17 database 

2
การเขียนรหัสการรู้จำเสียงของฉันเอง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว คำอธิบายปัญหา ฉันต้องการที่จะใช้การจดจำเสียงเป็นส่วนหนึ่งของโครงการฮาร์ดแวร์ซึ่งฉันต้องการที่จะประกอบด้วยตนเองอย่างสมบูรณ์ (ฉันใช้พลังงานต่ำขนาดเล็กอุปกรณ์ความเร็วต่ำเช่น Arduino และ Raspberry Pi, Kinects ฯลฯ ไม่ใช้คอมพิวเตอร์แบบดั้งเดิมด้วย ระบบปฏิบัติการที่เกี่ยวข้องดังนั้นโครงการปิด / ตนเองประกอบด้วย) การจดจำเสียงสามารถซับซ้อนมากขึ้นอยู่กับระดับของความซับซ้อนที่คุณต้องการ ฉันมีสิ่งที่ฉันเชื่อว่าเป็นข้อกำหนดที่เรียบง่าย ฉันแค่อยากจะจำเสียงของตัวเองและฉันมีพจนานุกรมเล็ก ๆ จำนวน 20 คำขึ้นไปที่ฉันอยากจะจำ ดังนั้นฉันไม่จำเป็นต้องมีห้องสมุดรู้จำเสียงพูดเป็นข้อความและเสียงที่ซับซ้อนหรือซอฟต์แวร์บุคคลที่สามที่ยอดเยี่ยมใด ๆ ที่ฉันค้นหาผ่านเครื่องมือค้นหาทางอินเทอร์เน็ต (ไม่มีปัญหาเหล่านี้!) ฉันเชื่อว่าความต้องการของฉัน "ง่ายพอ" (ภายในเหตุผล) ที่ฉันสามารถเขียนรหัสโซลูชันของตัวเอง ฉันสงสัยว่าถ้าใครเขียนกระบวนการของตัวเองแบบนี้และวิธีการของฉันนั้นมีข้อบกพร่องอย่างมากมายหรือไม่? มีวิธีที่ดีกว่าในการทำเช่นนี้โดยไม่ต้องใช้คณิตศาสตร์ในระดับสูงหรือต้องเขียนอัลกอริทึมที่ซับซ้อนหรือไม่? นั่นคือทางออกที่ฉันได้ลองคิดดูด้านล่าง คำอธิบายโซลูชัน ฉันจะเขียนสิ่งนี้ในภาษา C แต่ฉันต้องการที่จะพูดคุยเกี่ยวกับกระบวนการที่ไม่เชื่อเรื่องภาษาโดยเพ่งความสนใจไปที่กระบวนการของตนเอง ถ้าอย่างนั้นเราก็สามารถเพิกเฉยได้ 1. ฉันจะบันทึกพจนานุกรมคำศัพท์ล่วงหน้าเพื่อให้ตรงกับที่พูด เราสามารถจินตนาการได้ว่าฉันมีการบันทึก 20 คำจาก 20 คำที่แตกต่างกันหรืออาจเป็นวลีสั้น …

7
การส่งวัตถุเป็นวิธีที่เปลี่ยนวัตถุมันเป็นรูปแบบทั่วไป (ต่อต้าน -) หรือไม่?
ฉันอ่านเกี่ยวกับรหัสที่พบบ่อยมีกลิ่นในหนังสือ Refactoring Martin Fowler ของ ในบริบทนั้นฉันสงสัยเกี่ยวกับรูปแบบที่ฉันเห็นในฐานรหัสและไม่มีใครสามารถคิดว่ามันเป็นรูปแบบการต่อต้าน รูปแบบเป็นสิ่งหนึ่งที่วัตถุถูกส่งผ่านเป็นอาร์กิวเมนต์หนึ่งหรือหลายวิธีซึ่งทั้งหมดนี้เปลี่ยนสถานะของวัตถุ แต่ไม่มีใครกลับวัตถุ ดังนั้นจึงขึ้นอยู่กับการส่งผ่านโดยอ้างอิงธรรมชาติของ (ในกรณีนี้) C # /. NET var something = new Thing(); // ... Foo(something); int result = Bar(something, 42); Baz(something); ฉันพบว่า (โดยเฉพาะอย่างยิ่งเมื่อวิธีการไม่ได้ตั้งชื่ออย่างเหมาะสม) ฉันต้องมองหาวิธีการดังกล่าวเพื่อทำความเข้าใจว่าสถานะของวัตถุมีการเปลี่ยนแปลง มันทำให้เข้าใจรหัสมากขึ้นเนื่องจากฉันต้องการติดตาม call-stack หลายระดับ ฉันต้องการเสนอให้ปรับปรุงโค้ดดังกล่าวเพื่อส่งคืนออบเจ็กต์อื่น (โคลน) ด้วยสถานะใหม่หรืออะไรก็ตามที่จำเป็นในการเปลี่ยนออบเจ็กต์ที่ไซต์การโทร var something1 = new Thing(); // ... // Let's return a new instance …

4
ทำไม mod (%) เป็นผู้ดำเนินการทางคณิตศาสตร์ขั้นพื้นฐานในภาษาการเขียนโปรแกรมหลายภาษา?
มีเหตุผลประวัติศาสตร์หรืออย่างอื่นทำไมผู้ประกอบการโมดูลัสเป็นส่วนหนึ่งของผู้ประกอบการมาตรฐานขนาดเล็กในสิ่งที่ดูเหมือนว่าหลายภาษา? (+, -, *, /และ%สำหรับ Java และ C ด้วย**ใน Ruby และ Python) ดูเหมือนจะแปลกที่จะรวม mod เป็น "พื้นฐาน" (ไม่ต้องเคาะมันฉันใช้มันมากมาย แต่ฉันยังใช้การยกกำลัง, ค่าสัมบูรณ์, พื้น / เพดานหรืออื่น ๆ - ดูเหมือนว่ามีประโยชน์และจำเป็น) นี่เป็นการตัดสินใจแบบเก่าในข้อกำหนดบางอย่างที่ Java, C, Ruby และ Python ติดตามหรือภาษาที่สืบทอดมาทั้งหมดหรือไม่ เท่าที่ผมสามารถบอกได้มากที่สุดภาษาเสียงกระเพื่อมรวมเฉพาะและ+, -, /* ในตอนแรกฉันสงสัยว่า mod นั้นง่ายต่อการนำไปใช้ในระดับไบนารี่ (หรือว่าจะทำให้เกิดความแตกต่างเกี่ยวกับการตัดสินใจเกี่ยวกับสิ่งที่ควรจะเป็นโอเปอเรเตอร์ "พื้นฐาน" และสิ่งที่ไม่ควร?) แต่ดูเหมือนว่า มันใช้กันทั่วไปในการเขียนโปรแกรมมากกว่าที่ฉันคิดหรือเปล่า?

4
จำเป็นหรือไม่ที่จะต้องปฏิบัติตามมาตรฐานใช้มาตรฐาน C สำหรับเรื่องนั้น?
มีบางคนที่มีประสบการณ์มากใน Stack Overflow ที่พูดถึงมาตรฐาน C เสมอ ผู้คนดูเหมือนจะไม่ชอบโซลูชันที่ไม่สามารถพกพาได้แม้ว่าพวกเขาจะทำงานให้ฉันก็ตาม ตกลงฉันเข้าใจว่าต้องปฏิบัติตามมาตรฐาน แต่ไม่ได้ใส่ความคิดสร้างสรรค์ของโปรแกรมเมอร์หรือไม่ อะไรคือประโยชน์ที่เป็นรูปธรรมที่มาจากการทำตามมาตรฐาน? โดยเฉพาะอย่างยิ่งเนื่องจากคอมไพเลอร์อาจใช้มาตรฐานแตกต่างกันเล็กน้อย

5
เมื่อใดจึงจะใช้อินเทอร์เฟซ (การทดสอบหน่วย, IoC?)
ฉันสงสัยว่าฉันทำผิดพลาดกับเด็กนักเรียนที่นี่และกำลังมองหาการชี้แจง เรียนจำนวนมากในโซลูชันของฉัน (C #) - ฉันกล้าพูดส่วนใหญ่ - ฉันสิ้นสุดการเขียนอินเทอร์เฟซที่สอดคล้องกันสำหรับ เช่นอินเทอร์เฟซ "ICalculator" และคลาส "เครื่องคิดเลข" ที่ใช้งานแม้ว่าฉันจะไม่เคยเปลี่ยนเครื่องคิดเลขนั้นด้วยการใช้งานที่แตกต่างกัน นอกจากนี้คลาสเหล่านี้ส่วนใหญ่อาศัยอยู่ในโครงการเดียวกันกับการพึ่งพาของพวกเขา - พวกเขาเพียง แต่จะต้องเป็นinternalจริง แต่ได้กลายpublicเป็นผลข้างเคียงของการใช้อินเทอร์เฟซที่เกี่ยวข้องของพวกเขา ฉันคิดว่าวิธีนี้ในการสร้างส่วนต่อประสานสำหรับทุกสิ่งที่เกิดขึ้นจากความผิดพลาดเล็กน้อย: - 1) ตอนแรกฉันคิดว่าอินเตอร์เฟสจำเป็นต้องสร้างหน่วยทดสอบ mocks (ฉันใช้ Moq) แต่ตั้งแต่ฉันค้นพบว่าคลาสสามารถเยาะเย้ยถ้าสมาชิกเป็นสมาชิกvirtualและมีคอนสตรัคเตอร์แบบไม่ใช้พารามิเตอร์ (แก้ไขฉันถ้า ฉันผิด). 2) ตอนแรกฉันคิดว่าจำเป็นต้องใช้อินเทอร์เฟซในการลงทะเบียนชั้นเรียนด้วยกรอบ IoC (Castle Windsor) เช่น Container.Register(Component.For<ICalculator>().ImplementedBy<Calculator>()... เมื่อในความเป็นจริงฉันสามารถลงทะเบียนประเภทคอนกรีตกับตัวเอง: Container.Register(Component.For<Calculator>().ImplementedBy<Calculator>()... 3) การใช้อินเตอร์เฟสเช่นพารามิเตอร์คอนสตรัคเตอร์สำหรับการฉีดแบบพึ่งพาผลลัพธ์ใน "การเชื่อมต่อแบบหลวม" ดังนั้นฉันจึงโกรธกับอินเทอร์เฟซ! ฉันตระหนักถึงสถานการณ์ที่คุณจะ "ปกติ" ใช้อินเทอร์เฟซเช่นเปิดเผย API สาธารณะหรือสิ่งต่าง ๆ เช่นฟังก์ชัน "เสียบได้" โซลูชันของฉันมีคลาสจำนวนเล็กน้อยที่เหมาะสมกับกรณีการใช้งานดังกล่าว …

4
ใช้โครงสร้างข้อมูลถาวรในภาษาที่ไม่สามารถใช้งานได้
ภาษาที่ใช้งานได้จริงหรือใกล้เคียงกับการทำงานล้วนได้รับประโยชน์จากโครงสร้างข้อมูลถาวรเนื่องจากมีความไม่เปลี่ยนรูปแบบและเหมาะสมกับรูปแบบการเขียนโปรแกรมเชิงหน้าที่ แต่ในบางครั้งเราจะเห็นไลบรารีของโครงสร้างข้อมูลถาวรสำหรับภาษา (ตามรัฐ, OOP) เช่น Java การอ้างสิทธิ์ที่มักได้ยินในความโปรดปรานของโครงสร้างข้อมูลแบบถาวรคือเนื่องจากพวกมันไม่เปลี่ยนรูปพวกมันจึงปลอดภัยต่อเธรด อย่างไรก็ตามเหตุผลที่โครงสร้างข้อมูลถาวรนั้นมีความปลอดภัยต่อเธรดคือหากเธรดหนึ่งต้องการ "เพิ่ม" องค์ประกอบให้กับคอลเลกชันถาวรการดำเนินการจะส่งกลับคอลเลกชันใหม่เช่นเดิม แต่มีองค์ประกอบที่เพิ่มเข้ามา เธรดอื่นจึงเห็นคอลเลกชันดั้งเดิม แน่นอนว่าคอลเล็กชั่นทั้งสองนี้มีสถานะภายในเป็นจำนวนมาก - นั่นคือสาเหตุที่โครงสร้างถาวรเหล่านี้มีประสิทธิภาพ แต่เนื่องจากเธรดที่แตกต่างกันเห็นสถานะของข้อมูลที่แตกต่างกันจึงดูเหมือนว่าโครงสร้างข้อมูลถาวรนั้นไม่เพียงพอที่จะจัดการกับสถานการณ์ที่เธรดหนึ่งทำการเปลี่ยนแปลงที่สามารถมองเห็นเธรดอื่นได้ สำหรับเรื่องนี้ดูเหมือนว่าเราจะต้องใช้อุปกรณ์เช่นอะตอมการอ้างอิงหน่วยความจำทรานแซคชันของซอฟต์แวร์หรือแม้กระทั่งการล็อคแบบคลาสสิกและกลไกการซิงโครไนซ์ ทำไมจึงเป็นไปไม่ได้ที่ PDSs จะกลายเป็นสิ่งที่มีประโยชน์ต่อ "ความปลอดภัยของเธรด" หรือไม่? มีตัวอย่างจริงที่ PDS ช่วยในการซิงโครไนซ์หรือแก้ไขปัญหาการทำงานพร้อมกันหรือไม่? หรือ PDS เป็นเพียงวิธีหนึ่งในการจัดหาอินเตอร์เฟสแบบไร้รัฐให้กับวัตถุเพื่อสนับสนุนสไตล์การเขียนโปรแกรมที่ใช้งานได้หรือไม่

4
ทำไม Scala ใช้โอเปอเรเตอร์ '_' สำหรับการนำเข้าแพ็คเกจแทน '*' เหมือนกับใน Java
ในความคิดของฉันสิ่งหนึ่งที่ยิ่งใหญ่ที่สุดเกี่ยวกับ Scala คือความสามารถในการทำงานร่วมกันกับ Java และไวยากรณ์ที่คล้ายคลึงกัน สิ่งหนึ่งที่ฉันพบว่าแปลกคือการใช้ตัว_ดำเนินการสำหรับการนำเข้าแพคเกจ wilcard แทนตัว*ดำเนินการที่ใช้ใน Java มีเหตุผลทางเทคนิคสำหรับการใช้_แทน*หรือไม่? ถ้าไม่เช่นนั้นทำไมการเปลี่ยนแปลงนี้ถึงเกิดขึ้น?
17 java  scala 

5
การจัดเก็บข้อมูลในรหัส
ในอดีตของฉันสองสามครั้งฉันต้องการเก็บข้อมูลในรหัส นี่จะเป็นข้อมูลที่ไม่ค่อยมีการเปลี่ยนแปลงและถูกนำไปใช้ในสถานที่ที่ไม่สามารถเข้าถึงฐานข้อมูลได้ในทางปฏิบัติหรือเป็นที่ต้องการ ตัวอย่างเล็ก ๆ จะเก็บรายชื่อประเทศ เพื่อที่คุณสามารถทำสิ่งที่ชอบ: public class Country { public string Code { get; set; } public string EnglishName {get;set;} } public static class CountryHelper { public static List<Country> Countries = new List<Country> { new Country {Code = "AU", EnglishName = "Australia"}, ... new Country {Code = "SE", EnglishName …
17 c# 

5
มันสมเหตุสมผลไหมที่จะใช้อ็อบเจกต์ (แทนที่จะเป็นชนิดดั้งเดิม) สำหรับทุกสิ่งใน C ++?
ในช่วงโปรเจ็กต์ล่าสุดที่ฉันทำงานอยู่ฉันต้องใช้ฟังก์ชั่นมากมายเช่นนี้: static bool getGPS(double plane_latitude, double plane_longitude, double plane_altitude, double plane_roll, double plane_pitch, double plane_heading, double gimbal_roll, double gimbal_pitch, double gimbal_yaw, int target_x, int target_y, double zoom, int image_width_pixels, int image_height_pixels, double & Target_Latitude, double & Target_Longitude, double & Target_Height); ดังนั้นฉันต้องการ refactor เพื่อให้มีลักษณะเช่นนี้: static GPSCoordinate getGPS(GPSCoordinate plane, Angle3D planeAngle, Angle3D …

7
Python จะช้าเกินไปสำหรับการใช้งานฝั่งไคลเอ็นต์ในเบราว์เซอร์หรือไม่?
ฉันได้ยินคำแถลงว่า Python จะช้าเกินกว่าจะใช้งานได้ในเบราว์เซอร์ ฉันคิดว่า Javascript เหนือกว่าในแง่นี้เพราะ บริษัท อย่าง Google ที่ต้องการมันเร็ว (และทำให้เร็ว) เพราะพวกเขาต้องการมันเพื่อความอยู่รอด แต่ฉันอาจผิด มีความแตกต่างในการออกแบบของ Python และ Javascript หรือไม่ที่มีผลกระทบต่อประสิทธิภาพของเบราว์เซอร์ ตั้งแต่ตอนนี้ยังไม่มีการใช้งาน Python ในฝั่งไคลเอนต์คำถามของฉันมาจากคำแถลงที่คนทำดังนั้นบางทีมันอาจจะมีบางอย่างที่เกี่ยวกับภาษาของตัวเอง (แม้ว่าฉันจะไม่เชื่อ)

9
โครงสร้างข้อมูลสำหรับการเข้าถึงหน่วยวัด
TL; DR - ฉันพยายามออกแบบโครงสร้างข้อมูลที่ดีที่สุดเพื่อกำหนดหน่วยภายในหน่วยการวัด Unit of measureเป็นหลักvalue(หรือปริมาณ) unitที่เกี่ยวข้องกับ หน่วย SIมีเจ็ดฐานหรือขนาด กล่าวคือความยาวมวลเวลากระแสไฟฟ้าอุณหภูมิปริมาณสาร (โมล) และความเข้มการส่องสว่าง สิ่งนี้จะตรงไปตรงมามากพอ แต่มีหน่วยที่ได้รับมาจำนวนมากรวมทั้งอัตราที่เราใช้บ่อย ตัวอย่างรวมหน่วยจะเป็นนิวตัน: และอัตราตัวอย่างจะเป็นkg * m / s^2tons / hr เรามีแอปพลิเคชั่นที่ต้องอาศัยหน่วยงานโดยนัย เราจะฝังหน่วยภายในชื่อตัวแปรหรือคอลัมน์ แต่สิ่งนี้จะสร้างปัญหาเมื่อเราจำเป็นต้องระบุหน่วยการวัดด้วยหน่วยที่แตกต่างกัน ใช่เราสามารถแปลงค่าที่อินพุทและจอแสดงผล แต่สิ่งนี้จะสร้างรหัสค่าใช้จ่ายจำนวนมากที่เราต้องการห่อหุ้มในคลาสของตัวเอง มีโซลูชั่นจำนวนมากเกี่ยวกับ codeplex และสภาพแวดล้อมการทำงานร่วมกันอื่น ๆ การอนุญาตให้ใช้สิทธิ์สำหรับโครงการนั้นเป็นที่ยอมรับ แต่โดยทั่วไปแล้วโครงการมักจะมีน้ำหนักเบาหรือหนักเกินไป เรากำลังไล่ตามยูนิคอร์นของเรา "ถูกต้อง" เป็นการดีที่ฉันสามารถกำหนดหน่วยวัดใหม่โดยใช้สิ่งนี้: UOM myUom1 = UOM ใหม่ (10, โวลต์); UOM myUom2 = UOM ใหม่ (43.2, …

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

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