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

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

3
ฉันต้องคิดถึงรหัสเครื่องที่คอมไพล์เมื่อฉันเขียนรหัสหรือไม่?
ตัวอย่างเช่นฉันได้รับรหัสต่อไปนี้: auto z = [](int x) -> int { if (x > 0) { switch (x) { case 2: return 5; case 3: return 6; default: return 1; } } return 0; }; และต่อมาฉันเรียกสิ่งนี้หลายครั้ง ในรหัส asm ฉันเห็นสายภายนอกด้วยแลมบ์ดา .... บางสิ่งบางอย่าง ... มันกลายเป็นเรื่องง่ายที่จะอ่านและฉันคิดว่ามันอาจทำให้ประสิทธิภาพ ดังนั้นฉันอาจชนะในการเขียนโปรแกรม meta แต่ฉันเสียในการดีบัก asm และประสิทธิภาพหรือไม่ ฉันควรหลีกเลี่ยงฟีเจอร์ภาษาที่ทันสมัยมาโครและด้านการเขียนโปรแกรมเมตาอื่น ๆ เพื่อให้แน่ใจในประสิทธิภาพและการแก้ไขข้อบกพร่องอย่างง่ายหรือไม่?

3
ทำไมฉันถึงต้องใช้ Angular [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 เดือนที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ จากแบบฝึกหัด Angular เบื้องต้นดูเหมือนว่าทุกอย่างที่ทำได้คือดึง JSON บางส่วนจาก API และแสดงผล นอกจากนี้ยังมีเวทย์มนตร์ผูกพันสองครั้ง แต่ทำไมฉันถึงใช้มันแทนโซลูชันแบ็กเอนด์ (เช่น Rails) ที่สร้างมุมมองในแบ็กเอนด์และให้บริการกับผู้ใช้โดยมีทุกอย่างในที่แล้ว? กรณีการใช้งานคืออะไร?
20 javascript 

5
ผู้ทดสอบควรอนุมัติการปล่อยหรือเพียงแค่รายงานการทดสอบ?
มันสมเหตุสมผลไหมที่จะมอบอำนาจการออกจากระบบให้แก่ผู้ทดสอบ? ควรมีทีมทดสอบ เพียงทดสอบคุณสมบัติปัญหา ฯลฯ และเพียงรายงานตามเกณฑ์การผ่าน / ไม่ผ่านปล่อยให้ผู้อื่นดำเนินการกับผลลัพธ์เหล่านั้นหรือ มีอำนาจในการระงับการเผยแพร่ตัวเองตามผลลัพธ์เหล่านั้นหรือไม่ กล่าวอีกนัยหนึ่งผู้ทดสอบควรจะต้องออกจากระบบจริงหรือไม่? ทีมทดสอบที่ฉันทำงานด้วยรู้สึกว่าพวกเขาทำและเรากำลังมีปัญหากับเรื่องนี้เพราะ "การทดสอบขอบเขตคืบคลาน" - การปฏิเสธการอนุมัติการปล่อยบางครั้งก็ขึ้นอยู่กับปัญหาที่ไม่ได้รับการแก้ไขอย่างชัดเจน

8
Java - ทำไมเราจึงเรียกอาร์เรย์ว่า“ เวกเตอร์”?
ฉันกำลังอ่านหนังสือเกี่ยวกับ Java Programming และต้องการยืนยันว่าฉันเข้าใจคำจำกัดความของคำว่า "vector" วิกิพีเดียบอกว่าเวกเตอร์คือ "อาร์เรย์หนึ่งมิติ" แหล่งhttp://en.wikipedia.org/wiki/Vector การเรียกอาเรย์นั้นง่ายกว่านี้หรือไม่? มีเหตุผลใดบ้างที่เราจำเป็นต้องใช้ภาษาแฟนซีเช่น "เวกเตอร์"? มีความแตกต่างระหว่างอาร์เรย์และเวกเตอร์หรือไม่? ที่มา: แคร็กสัมภาษณ์การเข้ารหัสรุ่นที่ 4 โดย Gayle McDowell หน้า 47 คำถามที่พบบ่อย Q - ทำไมคุณไม่โพสต์สิ่งนี้บน english.stackexchange.com? - เพราะฉันคิดว่ามี แต่วิทยาการคอมพิวเตอร์ที่มุ่งเน้นผู้คนเท่านั้นที่จะได้คำตอบที่ดี
20 java 

5
วิธีการโน้มน้าวใจสมาชิกในทีมถึงการมี“ mandelbug”
เรากำลังพัฒนาแอปพลิเคชัน มันมีห้องสมุดที่พัฒนาโดย coder อื่นห้องสมุดนี้สื่อสารกับเซิร์ฟเวอร์ผ่านการเชื่อมต่อเครือข่ายที่หลากหลายและสิ่งนี้เกี่ยวข้องกับการทำงานร่วมกันหลายหัวข้อ รหัสฝั่งเซิร์ฟเวอร์ค่อนข้างซับซ้อนและเราไม่สามารถเข้าถึงซอร์สโค้ดได้ เมื่อเร็ว ๆ นี้ฉันได้ค้นพบmandelbug ที่ทำให้แอปพลิเคชันขัดข้องบางครั้ง ฉันสามารถทำซ้ำได้ครั้งเดียวและได้รับการติดตามสแต็กดังนั้นฉันจึงเปิดรายงานข้อผิดพลาด ข้อผิดพลาดเองนั้นง่ายต่อการแก้ไข (ไม่ได้ยกเว้นข้อยกเว้นทางเว็บในหนึ่งในเธรดพื้นหลังซึ่งทำให้ CLR ยุติโปรแกรม) ปัญหาคือผู้พัฒนาปฏิเสธที่จะแก้ไขข้อผิดพลาดเพราะ "เขาไม่เชื่อว่ามีอยู่" น่าเสียดายสำหรับฉันเจ้านายกำลังเข้าข้างเขาและบอกว่าข้อผิดพลาดนี้ไม่สามารถแก้ไขได้เว้นแต่ฉันจะสร้าง "กรณีทดสอบที่เป็นของแข็ง" เพื่อพิสูจน์การมีอยู่ของข้อบกพร่องและทำการทดสอบหน่วยเพื่อยืนยันว่ามันหายไป สิ่งที่เป็นไปไม่ได้โดยทั่วไปเนื่องจากลักษณะของข้อบกพร่อง คำแนะนำใด ๆ?

5
วิธีที่มีประสิทธิภาพในการสลับวัตถุ
ฉันกำลังเขียนโปรแกรมสำหรับซอฟต์แวร์ตอบคำถาม ฉันมีชั้นคำถามที่มี ArrayLists สำหรับคำถามคำตอบตัวเลือกเครื่องหมายและเครื่องหมายลบ บางสิ่งเช่นนี้ class question { private ArrayList<Integer> index_list; private ArrayList<String> question_list; private ArrayList<String> answer_list; private ArrayList<String> opt1_list; private ArrayList<String> opt2_list; } ฉันต้องการสลับคำถามทั้งหมด แต่สำหรับคำถามที่จะสับได้วัตถุทั้งหมดต้องถูกสับ ฉันจะเข้าหาปัญหานี้ด้วยวิธีนี้: ก่อนอื่นฉันจะไม่ใช้การออกแบบนี้และใช้ String ที่ไม่ArrayList<String>พิมพ์เป็นตัวแปรอินสแตนซ์และจากนั้นจะใช้Collections.shuffleวิธีการสลับวัตถุ แต่ทีมของฉันยืนยันในการออกแบบนี้ ตอนนี้คลาสคำถามจะมี ArrayLists ที่เพิ่มขึ้นเมื่อมีการป้อนคำถาม จะสลับคำถามได้อย่างไร
20 java  collections 

5
เป็นความคิดที่ดีหรือไม่ที่จะจัดรูปแบบโค้ดใน eclipse โดยใช้รูปแบบอัตโนมัติ
ฉันใช้ eclipse สำหรับการเขียนโค้ดและภาษาที่เราใช้คือ Java เมื่อมีคนแนะนำว่าให้จัดรูปแบบรหัสอย่างถูกต้องให้ใช้ตัวจัดรูปแบบอัตโนมัติ (CTRL + SHIFT + F) ในขณะที่คำสั่งนี้จัดรูปแบบรหัส แต่บางครั้งฉันรู้สึกว่ารูปลักษณ์โดยรวมนั้นแปลกและไม่สามารถอ่านได้จริง ดังนั้นนี่คือสิ่งที่แนะนำให้ทำ หากไม่ใช่สิ่งที่ดีกว่าในการจัดรูปแบบโค้ดของเราใน eclipse?

2
สถานะปัจจุบันของซอฟต์แวร์รองรับ JPEG-2000 คืออะไร
คำแนะนำทั่วไปในการบันทึกภาพที่สแกนต้นฉบับที่เคยเป็น "use TIFF" แต่โปรแกรมเมอร์ต้องการวิวัฒนาการของรูปแบบสำหรับ "วิวัฒนาการของซอฟต์แวร์" และฉันต้องพัฒนาระบบของฉันเพื่อเปลี่ยนจาก TIFF เป็น JP2 ฉันมีที่เก็บภาพขนาดใหญ่ (เทราไบต์) สำหรับเอกสารที่ถูกสแกนตามกฎหมายและวิทยาศาสตร์พวกเขาต้องการการบันทึกดั้งเดิม ฉันใช้กฎการแคชบางอย่าง แต่ระบบต้องแสดง (ผ่านการดาวน์โหลดทางเว็บ) หรือเพื่อจัดการข้อมูลดั้งเดิม (ImageMagick และอื่น ๆ ) ฉันได้อ่านบทความเกี่ยวกับการโยกย้ายการจัดเก็บภาพจาก TIFF-lossless เป็น JPEG-2000-losslessและข้อสรุปคืออยู่กับ TIFF อย่างไรก็ตามบทความนี้มาจากปี 2009 และในเวลาที่พวกเขาพบว่ารองรับฟอร์แมท JPEG-2000 โดยซอฟต์แวร์ที่มีอยู่ก็แย่มาก การแปลงเป็น JPEG-2000 นั้นเกิดความสูญเสียในซอฟต์แวร์ที่พวกเขาทดสอบและซอฟต์แวร์ที่มีให้สำหรับการใช้รูปภาพต่าง ๆ ไม่รองรับรูปแบบที่ดี ตอนนี้เป็นเวลาที่จะเปลี่ยนจาก TIFF เป็น JP2 หรือไม่? ซอฟต์แวร์สนับสนุนยังมีข้อบกพร่องเหมือนเดิมในปี 2552 หรือไม่?

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

6
การทำให้เป็นอันดับ Java - ข้อดีและข้อเสียใช้หรือหลีกเลี่ยง? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว การทำให้เป็นอนุกรมใช้สำหรับการคงอยู่ใน Java มันอาจไม่เป็นไรที่จะคงอยู่วัตถุบางอย่างที่ใช้เป็นอันดับ แต่สำหรับวัตถุจำนวนมาก ORM ฐานข้อมูล ฯลฯ อาจดีกว่า ดูเหมือนว่าการจัดลำดับจะมีประโยชน์สำหรับงานขนาดเล็กเท่านั้น อาจเป็นฉันผิด ดังนั้นโปรดบอกฉันว่าข้อดีของการทำให้เป็นอนุกรมมากกว่าวิธีที่ไม่เป็นอนุกรมนั้นคืออะไร ควรใช้เมื่อใดและควรหลีกเลี่ยงเมื่อใด คำถามนี้มาถึงใจหลังจากเห็นบทความ DZone Is Object Serialization Evil หรือไม่? และนี่คือบรรทัดที่ก่อให้เกิดคำถามของฉัน: หากคุณดูที่ Java และวัตถุเซสชันจะมีการใช้การทำให้เป็นอันดับวัตถุอย่างแท้จริง สมมติว่าเซสชันแอปพลิเคชันค่อนข้างสั้นซึ่งมีความหมายมากที่สุดในเวลาไม่กี่ชั่วโมงการทำให้เป็นอันดับวัตถุนั้นง่าย ๆ ได้รับการสนับสนุนอย่างดีและสร้างขึ้นในแนวคิด Java ของเซสชัน อย่างไรก็ตามเมื่อการคงอยู่ของข้อมูลเป็นระยะเวลานานอาจเป็นวันหรือหลายสัปดาห์และคุณต้องกังวลเกี่ยวกับแอพพลิเคชั่นใหม่ ๆ ตามที่นักพัฒนา Java ที่ดีทุกคนรู้ถ้าคุณวางแผนที่จะทำให้เป็นอันดับวัตถุแม้ในเซสชั่นคุณต้องมีซีเรียลไลซ์เซชั่น ID จริง ๆ (serialVersionUID) ไม่ใช่แค่ 1L และคุณต้องใช้อินเตอร์เฟส Serializable อย่างไรก็ตามผู้พัฒนาส่วนใหญ่ไม่ทราบกฎที่แท้จริงที่อยู่เบื้องหลังกระบวนการดีซีเรียลไลเซชั่น Java …

3
ทำไมไม่มีตัวดำเนินการกำหนดผสมสำหรับตัวดำเนินการเชิงตรรกะ (เช่น ||, && ฯลฯ )
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 6 ปีที่แล้ว ตาม ECMA-262 ซึ่งเป็นส่วนหนึ่ง 11.13 *= /= %= += -= <<= >>= >>>= &= ^= |=ต่อไปนี้เป็นรายการครบถ้วนสมบูรณ์ของผู้ประกอบการที่ได้รับมอบหมายสารประกอบ: ตามส่วนที่ 11.11 var c = a || bจะใส่aค่าลงในcถ้าToBoolean(a)เป็นจริงและจะใส่bค่าลงไปเป็นcอย่างอื่น เช่นนั้นเหตุผลหรือมักจะถูกใช้เป็นตัวดำเนินการรวมกันเช่น function (options) { options = options || {}; } a = a || bบ่อยพอรวมกันถูกใช้เพื่อระบุค่าเริ่มต้นสำหรับตัวแปรตามที่ได้แสดงไว้ด้านบน: ดูเหมือนว่าผู้ประกอบการที่ได้รับมอบหมายสารประกอบจะเป็นประโยชน์จริงๆที่ช่วยให้การเขียนโค้ดข้างต้นในแฟชั่นสั้นและทำความสะอาด:||= …

1
ทำไม Bootstrap 3 เปลี่ยน camelCase เป็นเครื่องหมายขีดกลาง - สามารถอ่านได้มากกว่าหรือไม่
ฉันสงสัยว่าเหตุผลใดที่อยู่เบื้องหลังการตัดสินใจของ Bootstrap ในการเปลี่ยนชื่อเคสอูฐทั้งหมดเป็นชื่อยัติภังค์ใน v3.0 ฉันค้นหาใน Google และดูหนังสือสองสามเล่ม แต่ฉันสามารถค้นหาความคิดเห็นได้ทางเดียวหรืออย่างอื่น - ไม่มีข้อมูลที่ยาก มีการศึกษาใดบ้างที่แนะนำชื่อตัวแปรของกรณีอูฐอ่านได้ดีกว่าเครื่องหมายขีดคั่นหรือเป็นเรื่องของการตั้งค่าส่วนตัวหรือไม่?

12
เหตุผลที่ใช้ตัวพิมพ์เล็กสำหรับคำแรกในตัวแปรโลคัล (เช่น employeeCount, firstName) คืออะไร
ฉันใช้การวิพากษ์วิจารณ์อย่างมากจากโปรแกรมเมอร์คนอื่น ๆ เนื่องจากฉันใช้ตัวเรือนที่เหมาะสมกับตัวแปรทั้งหมดของฉัน ยกตัวอย่างเช่นโปรแกรมเมอร์ของคุณโดยทั่วไปจะใช้employeeCountชื่อตัวแปร EmployeeCountแต่ฉันจะใช้ ฉันใช้ตัวเครื่องที่เหมาะสมสำหรับทุกอย่างไม่ว่าจะเป็นวิธีที่เป็นโมฆะวิธีคืนค่าตัวแปรคุณสมบัติหรือค่าคงที่ ฉันยังทำตามอนุสัญญานี้ใน Javascript สิ่งสุดท้ายที่ทำให้เกิดความสับสนวุ่นวายของคนจริงๆ เหตุผลทั่วไปที่กำหนดว่าทำไมฉันไม่ควรทำตามกรอบ "ที่ไม่ได้มาตรฐาน" นี้เป็นเพราะกรณีที่เหมาะสมควรถูกสงวนไว้สำหรับคุณสมบัติและวิธีการโมฆะ int employeeCount = getEmployeeCount()ตัวแปรท้องถิ่นและวิธีการที่ส่งกลับค่าควรมีคำแรกเป็นตัวพิมพ์เล็กเช่น อย่างไรก็ตามฉันไม่เข้าใจว่าทำไม เมื่อผมถามนี้ก็ดูเหมือนว่าฉันเพิ่งได้รับคำตอบโดยพลการของที่มาตรฐาน อะไรก็ตามที่คำตอบคือมันมักจะเดือดลงไปที่นั่นเป็นเพียงวิธีที่มันเป็นและฉันไม่ได้ถามมัน ฉันแค่ติดตามมัน . คำตอบโดยพลการไม่เคยดีพอสำหรับฉัน นับตั้งแต่วันแรกของการเขียนโปรแกรมแมโคร Excel 97 กับ Office IDE ฉันไม่เคยต้องการรูปแบบการเขียนเพื่อบอกฉันว่ามีบางสิ่งที่เป็นตัวแปรหรือคุณสมบัติในตัวเครื่องหรือไม่ นี่เป็นเพราะฉันมักจะใช้รูปแบบการตั้งชื่อที่ใช้งานง่ายมาก ตัวอย่างเช่นGetNuggetCount()แนะนำวิธีการที่จะไปที่ไหนสักแห่งและนับจำนวนนักเก็ตทั้งหมด SetNuggetCount(x)แนะนำว่าคุณกำลังกำหนดค่าใหม่ให้กับจำนวนนักเก็ต NuggetCountโดยตัวมันเองแนะนำคุณสมบัติหรือตัวแปรท้องถิ่นที่เป็นเพียงการเก็บค่า สำหรับคนสุดท้ายนั้นอาจถูกล่อลวงให้พูดว่า "อ้าฮ่า! นั่นคือคำถามทรัพย์สินหรือตัวแปร? เพื่อที่ฉันจะตอบด้วย "มันเป็นเรื่องสำคัญจริง ๆ ?" ดังนั้นนี่คือ tl; dr ;: อะไรคือวัตถุประสงค์เหตุผลเหตุผลที่ไม่มีเหตุผลในการใช้ตัวพิมพ์เล็กสำหรับคำแรกในตัวแปรหรือวิธีการส่งคืนของคุณ แก้ไข: สำหรับ MainMa แทนที่รหัสนี้ด้วยตัวอย่างรหัสแรกในคำตอบของคุณและดูว่าอาร์กิวเมนต์ของคุณดีขึ้นเพียงใด: public …

9
การจัดการข้อผิดพลาด - หากโปรแกรมล้มเหลวจากข้อผิดพลาดหรือเพิกเฉยต่อความเงียบ
ฉันกำลังเขียนโปรแกรมเล็ก ๆ ที่เรียบง่ายเพื่อส่ง MIDI ผ่านเครือข่าย ฉันรู้ว่าโปรแกรมจะพบปัญหาการส่งและ / หรือสถานการณ์ข้อยกเว้นอื่น ๆ ที่ฉันไม่สามารถทำนายได้ สำหรับการจัดการข้อยกเว้นฉันเห็นสองวิธี ฉันควรเขียนโปรแกรมเพื่อที่: ล้มเหลวด้วยการระเบิดเมื่อมีบางอย่างผิดปกติ หรือ มันควรเพียงแค่ละเว้นข้อผิดพลาดและดำเนินการต่อไปเสียค่าใช้จ่ายของความสมบูรณ์ของข้อมูลหรือไม่ ผู้ใช้คาดว่าจะใช้วิธีการใดอย่างสมเหตุสมผล มีวิธีที่ดีกว่าในการจัดการข้อยกเว้นหรือไม่ นอกจากนี้การตัดสินใจเกี่ยวกับการจัดการข้อยกเว้นของฉันควรได้รับผลกระทบจากการที่ฉันกำลังเผชิญกับการเชื่อมต่อเครือข่ายหรือไม่

8
“ Public APIs อยู่ตลอดกาล: โอกาสเดียวเท่านั้นที่จะทำให้ถูกต้อง”?
ในหนังสือ OS ฉันเพิ่งอ่านว่า "Public APIs อยู่ตลอดกาล: โอกาสเดียวเท่านั้นที่จะทำให้ถูกต้อง" จริงป้ะ? มันใช้ได้เฉพาะใน API ของระบบปฏิบัติการหรือ API อื่น ๆ ด้วยหรือไม่ ตัวอย่างเช่นสิ่งนี้จะเป็นจริงสำหรับ API ของแอปพลิเคชัน Android เช่น Tasker, Locale และ Pushover หรือไม่

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