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

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

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

13
จะทำอย่างไรถ้าเพื่อนร่วมงานกำลังแก้ไขรหัสของคุณเพื่อเปลี่ยนรูปลักษณ์?
คุณควรทำอย่างไรถ้าเพื่อนร่วมงานกำลังแก้ไขรหัสของคุณ โดยไม่มีวัตถุประสงค์ในการเพิ่มฟังก์ชันการทำงานหรือแก้ไขข้อบกพร่องเพียงเพื่อเปลี่ยนรูปลักษณ์ ...

8
ฉันจะติดตามประสิทธิภาพการเขียนโปรแกรมในชีวิตประจำวันได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันจะติดตามได้อย่างไรว่าฉันกำลังพัฒนาซอฟต์แวร์มากขึ้นหรือน้อยลงกว่าเดิมเมื่อวันก่อน?

8
เมื่อไหร่ที่ฉันควรใส่ใจเกี่ยวกับการแสดง?
เป็นเวลานานที่สุดในสถานที่ต่าง ๆ เช่นช่องทาง IRC ของ Java , SO และสถานที่อื่น ๆ ที่ฉันได้รับการบอกเล่าบางอย่างตามแนวของ "กังวลเกี่ยวกับลักษณะของโค้ดและการอ่าน / การทำความเข้าใจในตอนนี้และประสิทธิภาพในภายหลัง ดังนั้นเป็นเวลานานที่สุดที่ฉันไม่ได้เป็น OCD เกี่ยวกับประสิทธิภาพการทำงานสำหรับเดสก์ท็อปขนาดเล็กหรือเว็บแอปของฉันเพียงแค่ลบสิ่งที่ไม่มีประสิทธิภาพออกไปอย่างเห็นได้ชัด คำตอบส่วนใหญ่คือ "แล้วความสามารถในการปรับขยายได้?" นั่นเป็นจุดที่ถูกต้อง แต่ถ้าแอพของฉันถูกสร้างขึ้นเพื่อแยกวิเคราะห์พูดยาว 10,000 บรรทัดไฟล์ฉันควรทำให้โค้ดของฉันยุ่งเหยิงสำหรับคนส่วนน้อยที่กำลังจะผลักไฟล์ 1,000,000 บรรทัดหรือไม่ คำถามหลักของฉันคือเมื่อใดที่ฉันควรแลกเปลี่ยนวิธีที่ง่าย แต่ไม่มีประสิทธิภาพในการทำงานกับสัตว์ยักษ์ที่ซับซ้อนขนาดใหญ่ที่ทำสิ่งต่าง ๆ อย่างรวดเร็ว แต่ทำลายวิธีที่เป็นไปได้ในการอัพเกรดและทำให้รหัสยากเกินไป

5
ตกลงหรือไม่ที่จะใส่ลิงค์ไปยังเว็บไซต์ถาม - ตอบในความคิดเห็นของโปรแกรม
ในบาง codebase คุณสามารถเห็นความคิดเห็นที่ระบุเช่น: // Workaround for defect 'xxx', (See bug 1434594 on Sun's bugparade) ดังนั้นฉันมีคำถามสองสามข้อ แต่ทั้งหมดเกี่ยวข้องกัน ตกลงหรือไม่ที่จะใส่ลิงก์ไปยังคำถาม SO ในความคิดเห็นของโปรแกรม: // We're now mapping from the "sorted-on column" to original indices. // // There's apparently no easy way to do this in Java, so we're // re-inventing a wheel. // // …
16 comments 

8
การทำงานในทีมการเขียนโปรแกรมขนาดใหญ่เป็นอย่างไร
ฉันรู้สึกโชคดีที่ได้ทำงานเป็นทีมเล็ก ๆ ฉันคิดว่าสิ่งที่ฉันทำงานด้วยมากที่สุดคือโปรแกรมเมอร์ 11 คน การทำงานกับโครงการที่มีนักพัฒนาหลายร้อยคนเป็นอย่างไร พัน? ขนาดและสิ่งที่ไม่อะไร แก้ไข: ขอบคุณสำหรับคำตอบทั้งหมด! ดูเหมือนจะมีผลบวกน้อยมาก: เป็นไปได้ที่จะทำงานบนรหัสฐานขนาดใหญ่ การพัฒนาอาชีพภายในที่ดีขึ้น การคุ้มครองพนักงานจากการจัดการที่ไม่เหมาะสม มีประโยชน์อื่นใดอีกหรือไม่สำหรับทีมใหญ่?

16
การพัฒนาซอฟต์แวร์เป็นสาขาวิศวกรรมหรือไม่?
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ การพัฒนาซอฟต์แวร์ถือเป็นวิศวกรรมได้หรือไม่? หากไม่มีสิ่งใดที่ขาดไปเพื่อให้มีคุณสมบัติเป็นวินัยทางวิศวกรรม ที่เกี่ยวข้องกับการนี้เป็นคำถามนี้ในกองมากเกินเกี่ยวกับความแตกต่างระหว่างโปรแกรมเมอร์และวิศวกรซอฟต์แวร์ มีสถาบันวิศวกรรมซอฟต์แวร์ที่ Carnigie Mellon University ที่กำหนดและรักษามาตรฐาน CMMI นี่เป็นสิ่งที่จะเปลี่ยนการพัฒนาเป็นวิศวกรรมหรือไม่

1
ทำไม 'การรวมตัว' ไม่รองรับโซลูชั่น API เกตเวย์ส่วนใหญ่?
เมื่ออ่านเกี่ยวกับ API เกตเวย์สิ่งหนึ่งที่เกิดขึ้นทุกครั้งคือ API เกตเวย์เป็นสถานที่ที่คุณควรรวมผลลัพธ์จากจุดปลายหลายจุด ฟังดูดีจริงๆ อย่างไรก็ตามโซลูชันเกตเวย์ API ยอดนิยมจำนวนมากเช่น AWS API Gateway, Kongo และ Netflix Zuul ไม่สนับสนุนคุณสมบัติดังกล่าว คุณต้องแฮ็คหรือใช้ตัวกรองที่กำหนดเองได้ การรวมตัวกันถือว่าเป็นการปฏิบัติที่ไม่ดีหรือไม่? ผู้คนส่งคืนผลลัพธ์จากหลายจุดสิ้นสุดได้อย่างไร

4
รหัสตรวจสอบเวิร์กโฟลว์ที่ผู้เขียนคำขอดึงจะต้องผสาน
หลาย ๆ ทีมที่ บริษัท ของฉันฝึกฝนเวิร์กโฟลว์การตรวจสอบโค้ดที่ฉันไม่เคยเห็นมาก่อน ฉันพยายามเข้าใจความคิดเบื้องหลังด้วยความคิดที่ว่ามีคุณค่าในการทำให้ บริษัท ทั้งหมดสอดคล้องกัน (ฉันมีส่วนร่วมกับรหัสฐานหลายและถูกเพิ่มขึ้นตามความแตกต่างในอดีต) ผู้เขียนโค้ดส่งคำขอการดึง ผู้ตรวจสอบตรวจสอบรหัส หากผู้ตรวจสอบอนุมัติพวกเขาจะแสดงความคิดเห็นตามบรรทัดของ "ดูดีรู้สึกอิสระที่จะผสาน" หากผู้ตรวจสอบมีข้อกังวลพวกเขาแสดงความคิดเห็นเช่น "โปรดแก้ไขปัญหาเล็กน้อย X และ Y จากนั้นรวม" (สำหรับการเปลี่ยนแปลงที่สำคัญกลับไปที่ขั้นตอนที่ 2) ผู้สร้างรหัสทำการเปลี่ยนแปลงหากจำเป็นจากนั้นรวมคำขอดึงของเขาหรือเธอเอง ฉันมีข้อกังวลดังต่อไปนี้: ในกรณีที่ได้รับการอนุมัติในขั้นตอนที่ 3 เวิร์กโฟลว์นี้จะสร้างการเดินทางไปกลับที่ไม่จำเป็นสำหรับผู้เขียนคำขอดึง ผู้ตรวจทานซึ่งกำลังดูรหัสอยู่แล้วสามารถรวมมันได้ทันที ในกรณีที่มีการร้องขอการเปลี่ยนแปลงในขั้นตอนที่ 3 หน่วยงานที่จะรวมคำขอดึงข้อมูลจะอยู่กับผู้แต่งของ PR เท่านั้น ไม่มีใครนอกจากผู้เขียนจะดูการเปลี่ยนแปลงก่อนที่จะรวม อะไรคือข้อดีหรือข้อเสียของเวิร์กโฟลว์นี้ เวิร์กโฟลว์นี้เป็นเรื่องปกติในทีมวิศวกรรมอื่น ๆ หรือไม่

5
เหตุใดจึงต้องใช้คำขอดึงแทนการรวม
อะไรคือข้อดีของการใช้คำขอดึงแทนที่จะรวมสาขาเข้ากับต้นแบบโดยไม่มี โดยเฉพาะอย่างยิ่งในทีมที่นักพัฒนาซอฟต์แวร์ทุกคนสามารถเข้าถึงมาสเตอร์ได้อย่างสมบูรณ์

6
ฉันจะส่งเสริมและสนับสนุนรหัสคุณภาพสูงได้อย่างไร
ฉันทำงานเป็นผู้พัฒนา iOS ใน บริษัท เอาท์ซอร์สขนาดเล็กในทีมขนาด 4 คน เราทำงานในโครงการที่เริ่มเมื่อสองสามปีก่อนที่ฉันและนักพัฒนาอีกสองคนจะเข้าร่วม บริษัท ก่อนหน้านี้โครงการส่วนใหญ่ดำเนินการโดยบุคคลเดียว เมื่อฉันเริ่มทำงานในโครงการมันเป็นความยุ่งเหยิงอย่างสมบูรณ์ มีการทำซ้ำรหัสจำนวนมาก ฉันเห็นโค้ด 500 ตัวเดียวกันกับไฟล์ที่แตกต่างกัน 20 ไฟล์โดยมีการเปลี่ยนแปลงเล็กน้อย นอกจากนี้มันไม่ได้ถูกจัดระเบียบอย่างถูกต้อง: รหัสการสร้าง UI ทั้งหมดถูกผสมในตัวควบคุมมุมมองพร้อมกับตรรกะ ฉันพยายามอย่างที่สุดในการทำสิ่งต่าง ๆ ที่นี่และที่นั่นกำจัดรหัสซ้ำซ้อนปรับปรุงโครงสร้างไฟล์ของโครงการและอื่น ๆ รู้สึกเหมือนผู้พัฒนาก่อนหน้าไม่สนใจสิ่งเหล่านี้ทั้งหมดหรือไม่มีประสบการณ์ มีเวลาที่ฉันทำงานคนเดียวกับคุณสมบัติที่ยิ่งใหญ่สักสองสามเดือน เนื่องจากลักษณะของคุณสมบัตินี้ฉันต้องสัมผัสโค้ดจำนวนมากในแอพทั้งหมดดังนั้นฉันจึงพยายามปรับปรุงบางอย่าง เมื่อนักพัฒนารายอื่นเข้าร่วมโครงการฉันสังเกตเห็นว่าพวกเขาใช้รูปแบบการเข้ารหัสที่แตกต่างกัน (บางครั้งก็เป็นสไตล์ที่แตกต่างอย่างสิ้นเชิง) และมักจะไม่ใช้คุณสมบัติภาษาสมัยใหม่เช่นตัวเข้าถึงคุณสมบัติ บางครั้งพวกเขาจะประดิษฐ์จักรยานของตัวเองแทนที่จะใช้คุณสมบัติที่คล้ายกันของกรอบงานหรือถ่ายโอนแนวคิดจากภาษาโปรแกรมหรือ patters อื่น ๆ ที่พวกเขาเรียนรู้ลงในฐานรหัสของเรา บ่อยครั้งที่พวกเขาไม่สามารถตั้งชื่อวิธีการหรือตัวแปรได้อย่างเหมาะสมเนื่องจากภาษาอังกฤษไม่ดี (Objective-C เป็นภาษาที่คุณใช้ชื่อยาว) บางครั้งฉันคิดว่าถ้าไม่ใช่สำหรับ IDE ฉันคิดว่าพวกเขาจะเขียนโค้ดทั้งหมดโดยไม่มีการเยื้องหรือการจัดรูปแบบเลย โดยทั่วไปฉันเกลียดโค้ดที่เขียน มันมีการจัดรูปแบบ / จัดระเบียบไม่ดีและบางครั้งก็แตกต่างอย่างสิ้นเชิงจากส่วนที่เหลือของโครงการ ฉันรู้สึกหงุดหงิดมากเมื่อพวกเขาเพิ่มสปาเก็ตตี้ในงานศิลปะของฉันและมันส่งผลต่ออารมณ์ในที่ทำงานและประสิทธิภาพการทำงานของฉัน มันให้ความรู้สึกมากขึ้นเรื่อย ๆ เช่นพวกเขาไม่สามารถใส่ใจเรียนรู้หรือไม่สนใจพวกเขาทำสิ่งที่พวกเขาต้องการและกลับบ้าน …

3
API Gateway (REST) ​​+ Microservices ที่ขับเคลื่อนด้วยเหตุการณ์
ฉันมี microservices มากมายที่มีฟังก์ชั่นที่ฉันเปิดเผยผ่าน REST API ตามรูปแบบเกตเวย์ API เนื่องจาก microservices เหล่านี้เป็นแอปพลิเคชั่น Spring Boot ฉันจึงใช้ Spring AMQP เพื่อให้เกิดการสื่อสารแบบซิงโครนัสสไตล์ RPC ระหว่างไมโครไซต์เหล่านี้ สิ่งต่าง ๆ ราบรื่นไปแล้ว อย่างไรก็ตามยิ่งฉันอ่านเกี่ยวกับสถาปัตยกรรม microservice ที่ขับเคลื่อนด้วยเหตุการณ์มากขึ้นและดูโครงการเช่น Spring Cloud Stream ยิ่งฉันเชื่อมั่นมากขึ้นว่าฉันอาจทำสิ่งที่ผิดกับ RPC วิธีการแบบซิงโครนัส เพื่อตอบสนองการร้องขอนับร้อยหรือพันต่อวินาทีจากแอปพลิเคชันไคลเอนต์) ฉันเข้าใจจุดหลังสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ สิ่งที่ฉันไม่ค่อยเข้าใจคือวิธีการใช้รูปแบบดังกล่าวจริงเมื่อนั่งอยู่ข้างหลังแบบจำลอง (REST) ​​ที่คาดว่าจะตอบสนองต่อทุกคำขอ ตัวอย่างเช่นถ้าฉันมีเกตเวย์ API เป็น microservice และอีกบริการหนึ่งที่เก็บและจัดการผู้ใช้ฉันจะสร้างแบบจำลองเช่นGET /users/1ในเหตุการณ์ที่ขับเคลื่อนด้วยเหตุการณ์ได้อย่างหมดจดได้อย่างไร

4
จะใส่แอป Angular ในโซลูชัน ASP.NET Web API ได้ที่ไหน
ฉันเริ่มแอพกรีนฟิลด์และฉันต้องการใช้ ASP.NET (4.6) และ Angular 2 สำหรับแบ็กเอนด์ฉันได้สร้างโครงการใน Visual Studio และตอนนี้ฉันสงสัยว่าจะวางแอพ Angular ไว้ที่ไหน ฉันต้องการใช้ npm และ node-tools สำหรับ front-end แต่ท้ายที่สุดมันจะถูกโฮสต์ในอินสแตนซ์ Azure App Service เดียวกันกับแอป Angular ที่domain.com/และ api ภายใต้domain.com/api/หรือเช่นนั้น ฉันจะแยกแอพต่าง ๆ ใน Visual Studio ได้อย่างไร? แอพเชิงมุมควรอยู่ในโครงการของตัวเองหรือไม่ ฉันควรมีแอปพลิเคชัน Angular ในโครงการเดียวกันกับ API หรือไม่ แม้ว่าฉันไม่ต้องการใช้ nuget และเครื่องมือ VS อื่น ๆ (สำหรับส่วนหน้า VS จะเป็นตัวแก้ไขรหัสที่ได้รับเกียรติมากขึ้นหรือน้อยลง) ฉันไม่พบวิธีปฏิบัติที่ดีที่สุดสำหรับชุดค่าผสมนี้

11
IllegalStateException ที่ดีกว่าหรือการดำเนินการเมธอดแบบเงียบคืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา สมมติว่าฉันมีคลาส MediaPlayer ซึ่งมีวิธีเล่น () และหยุด () อะไรคือกลยุทธ์ที่ดีที่สุดที่จะใช้เมื่อใช้วิธีการหยุดในกรณีที่ยังไม่ได้เรียกวิธีการเล่นมาก่อน ฉันเห็นสองตัวเลือก: โยนข้อยกเว้นเนื่องจากผู้เล่นไม่อยู่ในสถานะที่เหมาะสมหรือเพิกเฉยต่อการโทรไปยังวิธีการหยุดอย่างเงียบ ๆ สิ่งที่ควรเป็นกฎทั่วไปเมื่อเมธอดไม่ควรถูกเรียกในบางสถานการณ์ แต่การดำเนินการมันไม่เป็นอันตรายต่อโปรแกรมโดยทั่วไป?

4
อะไรคือความแตกต่างระหว่างตัวแปรคลาสและตัวแปรอินสแตนซ์ใน Java? [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันใหม่กับ Java และต้องการเข้าใจความแตกต่างระหว่างตัวแปรคลาสและตัวแปรอินสแตนซ์ ตัวอย่างเช่น: class Bicycle { static int cadence = 0; int speed = 0; int gear = 1; } ตัวแปรอินสแตนซ์และตัวแปรคลาสแตกต่างจากกันอย่างไร ตัวแปรใดที่นี่คือตัวแปรคลาสและตัวแปรอินสแตนซ์ใด สิ่งนี้มีผลต่อขอบเขตอย่างไร
16 java  class  object  instance 

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