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

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

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

8
ขอตัวอย่างโค้ดของ บริษัท ในระหว่างการสัมภาษณ์ [ปิด]
การขอคนหางานให้แสดงรหัสเป็นเรื่องธรรมดาสำหรับ บริษัท ซอฟต์แวร์ อย่างไรก็ตามจะเป็นที่ยอมรับหรือไม่สำหรับผู้สมัครที่จะขอให้ผู้สัมภาษณ์แสดงรหัสชิ้นเล็ก ๆ ที่เขาคิดว่าเขียนได้ดี?

18
ทำไมไม่วิจัยเอกสารที่กล่าวถึงซอฟต์แวร์ที่กำหนดเองปล่อยซอร์สโค้ด? [ปิด]
มีเหตุผลหรือไม่ที่ซอร์สโค้ดของซอฟต์แวร์ที่กล่าวถึงในรายงานการวิจัยไม่ได้ถูกเปิดเผย? ฉันเข้าใจว่างานวิจัยเป็นเรื่องเกี่ยวกับแนวคิดทั่วไปของการทำอะไรบางอย่างให้สำเร็จกว่ารายละเอียดการใช้งาน แต่ฉันไม่เข้าใจว่าทำไมพวกเขาถึงไม่ปล่อยโค้ด ตัวอย่างเช่นกระดาษนี้ลงท้ายด้วย: ผล ระบบการวาดเส้นมนุษย์ถูกนำไปใช้ผ่านเฟรมเวิร์ก Qt ใน C ++ โดยใช้ OpenGL และรันบนเวิร์กสเตชันโปรเซสเซอร์ Dual Core 2.00 GHz Intel โดยไม่ต้องใช้ฮาร์ดแวร์เพิ่มเติมใด ๆ เราสามารถวาดเส้นแบบโต้ตอบในขณะที่ระบบสังเคราะห์เส้นทางและพื้นผิวใหม่ พวกเขาปิดซอร์สโค้ดโดยเจตนาเนื่องจากการสร้างรายได้ที่พวกเขาตั้งใจจะทำกับมันหรือเพราะลิขสิทธิ์
69 research 

3
“ GPL ที่มีข้อยกเว้น classpath” หมายถึงอะไรในทางปฏิบัติ
ออราเคิลดูเหมือนว่าจะอนุญาตให้ใช้รหัสเปิดแหล่งที่มาของพวกเขาทั้งหมดที่เกี่ยวข้องกับ Java ภายใต้GPL มีข้อยกเว้น จากสิ่งที่ฉันเข้าใจดูเหมือนว่าจะอนุญาตให้รวมไลบรารีเหล่านี้เข้ากับโค้ดของคุณเองเข้ากับผลิตภัณฑ์ที่ GPL ไม่ต้องครอบคลุม มันทำงานอย่างไร ตัวอย่างอะไรบ้างที่ฉันสามารถและไม่สามารถใช้คลาสเหล่านี้ได้? เหตุใดใบอนุญาตใหม่นี้จึงถูกใช้แทน LGPL ซึ่งดูเหมือนว่าจะอนุญาตในสิ่งเดียวกัน แต่ค่อนข้างเป็นที่ยอมรับและเข้าใจดีกว่า LGPL แตกต่างกันอย่างไร?
69 java  licensing  gpl  lgpl 

4
อัลกอริทึม / โครงสร้างข้อมูลใดที่ฉันควร "รู้จัก" และรู้จักด้วยชื่อ? [ปิด]
ฉันต้องการพิจารณาตัวเองเป็นโปรแกรมเมอร์ที่มีประสบการณ์พอสมควร ฉันเขียนโปรแกรมมานานกว่า 5 ปีแล้ว จุดอ่อนของฉันแม้ว่าจะเป็นคำศัพท์ ฉันเรียนรู้ด้วยตนเองดังนั้นในขณะที่ฉันรู้วิธีการเขียนโปรแกรมฉันไม่ทราบถึงแง่มุมที่เป็นทางการของวิทยาศาสตร์คอมพิวเตอร์ ดังนั้นอัลกอริธึมเชิงปฏิบัติ / โครงสร้างข้อมูลที่ฉันรู้จักและรู้จักด้วยชื่อคืออะไร? หมายเหตุฉันไม่ได้ขอคำแนะนำหนังสือเกี่ยวกับการใช้อัลกอริทึม ฉันไม่สนใจเกี่ยวกับการนำไปใช้ฉันแค่อยากรู้ว่าเมื่อใดอัลกอริทึม / โครงสร้างข้อมูลจะเป็นวิธีแก้ปัญหาที่ดี ฉันขอเพิ่มเติมเกี่ยวกับรายการอัลกอริทึม / โครงสร้างข้อมูลที่ฉันควร "จดจำ" เช่นฉันรู้วิธีแก้ปัญหาเช่นนี้ คุณจัดการชุดล็อกเกอร์ที่มีข้อความ 0-999 ผู้คนมาหาคุณเพื่อเช่าตู้เก็บของและจากนั้นกลับมาเพื่อส่งคืนกุญแจตู้เก็บของ คุณจะสร้างซอฟต์แวร์ชิ้นหนึ่งเพื่อจัดการกับการรู้ว่าตู้เก็บของฟรีและที่ใช้อยู่อย่างไร การแก้ปัญหาจะเป็นคิวหรือสแต็ค สิ่งที่ฉันกำลังมองหาคือสิ่งที่ "ในสถานการณ์ที่ควรใช้ B-Tree - อัลกอริทึมการค้นหาใดควรใช้ที่นี่" เป็นต้นและอาจเป็นการแนะนำอย่างรวดเร็วว่าโครงสร้างข้อมูลที่ซับซ้อนมากขึ้น (แต่ใช้กันทั่วไป) / อัลกอริทึมทำงาน ฉันลองดูรายการโครงสร้างข้อมูลและอัลกอริทึมของ Wikipedia แต่ฉันคิดว่ามันเกินความจริงเล็กน้อย ดังนั้นฉันจึงมองหาสิ่งสำคัญที่ฉันควรรู้

7
ลองจับจาวาสคริปต์ ... ไม่ใช่วิธีที่ดีใช่มั้ย
มีบทบัญญัติให้เป็นลองจับกระชากจาวาสคริปต์ ในขณะที่เป็นจาวาหรือภาษาอื่น ๆ มันเป็นข้อบังคับที่จะต้องมีการจัดการข้อผิดพลาดฉันไม่เห็นใครใช้พวกเขาในจาวาสคริปต์ในระดับที่สูงขึ้น มันไม่ใช่วิธีปฏิบัติที่ดีหรือเพียงแค่เราไม่ต้องการใช้งานจาวาสคริปต์

4
ทำไมคอลเลกชัน Java จึงถูกนำไปใช้กับ“ วิธีการเสริม” ในอินเตอร์เฟส
ในระหว่างการนำไปใช้ครั้งแรกของฉันการขยายเฟรมเวิร์กคอลเลกชัน Java ฉันค่อนข้างประหลาดใจที่เห็นว่าอินเตอร์เฟสการรวบรวมมีวิธีการประกาศเป็นทางเลือก ผู้ดำเนินการคาดว่าจะโยน UnsupportedOperationExceptions หากไม่ได้รับการสนับสนุน สิ่งนี้ทำให้ฉันกลายเป็นตัวเลือกการออกแบบ API ที่แย่ทันที หลังจากอ่านหนังสือ "Effective Java" ที่ยอดเยี่ยมของ Joshua Bloch แล้วหลังจากเรียนรู้ว่าเขาอาจต้องรับผิดชอบต่อการตัดสินใจเหล่านี้ ฉันคิดว่าการประกาศอินเทอร์เฟซสองรายการ: คอลเลกชันและ MutableCollection ซึ่งขยายคอลเลกชันด้วยวิธีการ "ทางเลือก" จะทำให้รหัสลูกค้าที่บำรุงรักษาได้มากขึ้น มีบทสรุปที่ดีของปัญหาที่เป็นที่นี่ มีเหตุผลที่ดีหรือไม่ที่เลือกวิธีเสริมแทนที่จะใช้สองอินเตอร์เฟส

13
เกิดอะไรขึ้นกับ Borland Delphi? [ปิด]
ฉันมีความประทับใจที่ Delphi ไม่ได้รับความนิยมอีกต่อไป แต่ในที่ทำงานฉันต้องทำการเปลี่ยนแปลงบางอย่างกับโปรแกรม Delphi รุ่นเก่าที่เรายังคงใช้อยู่ ฉันใช้ Borland Developer Studio 2006 และมันก็ดีมากและใช้งานง่ายแม้ว่าฉันจะไม่เคยสัมผัสมันมาก่อน Delphi ยังคงใช้กันอย่างแพร่หลายและฉันก็ไม่ได้ตระหนักถึงมันหรือมีเหตุผลอื่น ๆ สำหรับการลดลงของมัน?
69 delphi 

7
การศึกษาภาษาแบบไดนามิกกับแบบคงที่ vs [ปิด]
มีการศึกษาเกี่ยวกับประสิทธิภาพของภาษาที่พิมพ์แบบคงที่และแบบไดนามิกหรือไม่? โดยเฉพาะอย่างยิ่ง: การวัดผลผลิตโปรแกรมเมอร์ อัตราข้อบกพร่อง รวมถึงผลกระทบของการทดสอบหน่วยหรือไม่ ฉันเคยเห็นการถกเถียงกันถึงข้อดีของทั้งสองด้านแล้ว แต่ฉันก็สงสัยว่าใครมีการศึกษาบ้างไหม

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


8
ฉันควรบันทึกข้อผิดพลาดที่พบและแก้ไขหรือไม่
ฉันคิดว่านี่เป็นสถานการณ์ทั่วไป: ฉันทดสอบบางรหัสค้นหาข้อผิดพลาดแก้ไขและยอมรับข้อผิดพลาดแก้ไขไปยังที่เก็บ สมมติว่ามีหลายคนที่ทำงานในโครงการนี้ฉันควรสร้างรายงานข้อผิดพลาดก่อนกำหนดให้กับตัวเองและอ้างถึงในข้อความกระทำ (เช่น "แก้ไขข้อผิดพลาด # XYZ ข้อผิดพลาดเกิดจาก X และ Y. แก้ไขโดย Q และ R ")? อีกทางหนึ่งฉันสามารถข้ามรายงานข้อผิดพลาดและส่งข้อความเช่น "แก้ไขข้อผิดพลาดที่ทำให้เกิด A เมื่อ B ข้อผิดพลาดเกิดจาก X และ Y. แก้ไขโดย Q และ R" การปฏิบัติที่ดีกว่าคืออะไร?

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

13
เป็นความคิดที่ดีหรือไม่ที่จะเรียกใช้ตัวจัดรูปแบบรหัสเป็นระยะในที่เก็บ?
ฉันกำลังคิดที่จะสร้างงาน cron ที่ตรวจสอบรหัสเรียกใช้ตัวจัดรูปแบบโค้ดบนมันและหากมีสิ่งใดเปลี่ยนแปลงไปก็ให้ยอมรับการเปลี่ยนแปลงและผลักพวกเขากลับมา โครงการส่วนใหญ่ที่ใช้ตัวจัดรูปแบบอัตโนมัติวางไว้ในตะขอคอมไพล์ แต่การทำโดยอัตโนมัติทุก ๆ สองสามชั่วโมงจะช่วยลดภาระสำหรับแต่ละ dev ในการติดตั้งตะขอคอมไพล์ ฉันยังคงสนับสนุนให้ทุกคนเขียนโค้ดที่สะอาดและมีรูปแบบที่ดีและบางทีฉันสามารถให้ระบบ ping devs โดยอัตโนมัติเมื่อโค้ดที่พวกเขาเขียนได้รับการฟอร์แมตใหม่ดังนั้นพวกเขาจึงรู้ว่าจะต้องทำอะไรในอนาคต

3
เราควรรวมโฟลเดอร์ Nuget PACKAGE ไว้ในการควบคุมเวอร์ชันหรือไม่?
ผมอยากจะรู้ว่า ในโครงการ C # หรือ VB.NET เราควรรวมโฟลเดอร์ PACKAGE (โฟลเดอร์แพคเกจ nugget ที่สร้างขึ้นเพื่อรูทของโครงการของฉันที่มีไฟล์ nupkg และเนื้อหาอื่น ๆ ) ไปยังแหล่งเก็บข้อมูลแหล่งควบคุม (Git เป็นต้น)

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