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

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

1
ทำไมไม่มีเครื่องหมายสำหรับขีดเส้นใต้? [ปิด]
ฉันสงสัยว่าทำไมไม่มีไวยากรณ์มาร์กอัปสำหรับการขีดเส้นใต้? ฉันรู้ว่าแท็ก html พื้นฐานสามารถฝังเพื่อให้บรรลุสิ่งนี้ แต่ฉันพยายามที่จะเข้าใจว่าทำไมunderlineถูกละเว้นเมื่อตัวหนาและตัวเอียงมีอยู่
133 syntax  editor 

5
ฉันก็ 'ฉลาด' เหมือนกันที่จูเนียร์ devs สามารถอ่านได้หรือไม่? การเขียนโปรแกรมที่ใช้งานได้มากเกินไปใน JS ของฉัน? [ปิด]
ฉันเป็นนักพัฒนาซอฟต์แวร์ระดับสูงที่เข้ารหัสใน Babel ES6 ส่วนหนึ่งของแอปของเราทำการเรียก API และตามแบบจำลองข้อมูลที่เราได้รับกลับมาจากการเรียก API ต้องกรอกแบบฟอร์มบางอย่าง แบบฟอร์มเหล่านั้นจะถูกเก็บไว้ในรายการที่เชื่อมโยงเป็นสองเท่า (ถ้าส่วนหลังระบุว่าข้อมูลบางอย่างไม่ถูกต้องเราสามารถนำผู้ใช้กลับไปที่หน้าหนึ่งที่พวกเขาทำผิดพลาดได้อย่างรวดเร็วแล้วนำกลับมาที่เป้าหมาย รายการ.) อย่างไรก็ตามมีฟังก์ชั่นมากมายที่ใช้ในการเพิ่มหน้าและฉันสงสัยว่าตัวเองฉลาดเกินไปหรือเปล่า นี่เป็นเพียงภาพรวมพื้นฐาน - อัลกอริทึมที่เกิดขึ้นจริงมีความซับซ้อนมากขึ้นโดยมีหน้าและประเภทหน้าเว็บที่แตกต่างกันมากมาย แต่นี่จะเป็นตัวอย่างให้คุณ นี่คือวิธีที่ฉันคิดว่าโปรแกรมเมอร์มือใหม่จะจัดการกับมัน export const addPages = (apiData) => { let pagesList = new PagesList(); if(apiData.pages.foo){ pagesList.add('foo', apiData.pages.foo){ } if (apiData.pages.arrayOfBars){ let bars = apiData.pages.arrayOfBars; bars.forEach((bar) => { pagesList.add(bar.name, bar.data); }) } if (apiData.pages.customBazes) { let …

5
ประเด็นสำคัญของการทำงานอย่างมีประสิทธิภาพด้วยรหัสมรดกคืออะไร [ปิด]
ฉันเคยเห็นหนังสือทำงานอย่างมีประสิทธิภาพด้วยรหัสมรดกแนะนำสองสามครั้ง ประเด็นสำคัญของหนังสือเล่มนี้คืออะไร? มีการจัดการกับรหัสดั้งเดิมมากกว่าการเพิ่มการทดสอบหน่วย / การรวมและการเปลี่ยนโครงสร้างอีกครั้งหรือไม่

6
ความคล่องตัวสำหรับนักพัฒนาเดี่ยว
บางคนจะใช้แนวคิดกระบวนการ Agile ในฐานะนักพัฒนาเดี่ยวได้อย่างไร Agile ดูเหมือนจะมีประโยชน์สำหรับการพัฒนาแอพพลิเคชั่นในเวลาอันรวดเร็ว แต่ก็ดูเหมือนว่าทีมจะมุ่งเน้น ...

17
ฉันจะรู้ได้อย่างไรว่าวิธีการของฉันควรใช้ซ้ำได้อย่างไร [ปิด]
ฉันกำลังคิดถึงธุรกิจของตัวเองที่บ้านและภรรยาของฉันมาหาฉันและพูดว่า ที่รัก .. คุณสามารถพิมพ์ Day Light Saving ทั่วโลกสำหรับปี 2018 ในคอนโซลได้หรือไม่? ฉันต้องตรวจสอบบางอย่าง และฉันก็มีความสุขสุด ๆ เพราะนั่นคือสิ่งที่ฉันรอมาตลอดทั้งชีวิตกับประสบการณ์ Java ของฉันและเกิดขึ้นกับ: import java.time.*; import java.util.Set; class App { void dayLightSavings() { final Set<String> availableZoneIds = ZoneId.getAvailableZoneIds(); availableZoneIds.forEach( zoneId -> { LocalDateTime dateTime = LocalDateTime.of( LocalDate.of(2018, 1, 1), LocalTime.of(0, 0, 0) ); ZonedDateTime now = ZonedDateTime.of(dateTime, …

13
ความแตกต่างของเวลาระหว่างการพัฒนาด้วยการทดสอบหน่วยเทียบกับการทดสอบที่ไม่มี
ฉันเป็นนักพัฒนาเดี่ยวที่มีสภาพแวดล้อมการทำงานที่ค่อนข้าง จำกัด เวลาซึ่งช่วงเวลาในการพัฒนามักจะอยู่ในช่วง 1-4 สัปดาห์ต่อโครงการขึ้นอยู่กับข้อกำหนดความเร่งด่วนหรือทั้งสองอย่าง ฉันจัดการกับโครงการประมาณ 3-4 ครั้งบางคนมีไทม์ไลน์ที่ทับซ้อนกัน คาดว่าคุณภาพของรหัสจะลดลง ฉันยังไม่มีการทดสอบที่เป็นทางการ มันมักจะลงไปเดินผ่านระบบจนกว่ามันจะหยุดพักบ้าง เป็นผลให้ข้อบกพร่องจำนวนมากหลบหนีไปสู่การผลิตซึ่งฉันต้องแก้ไขและในทางกลับกันก็กำหนดโครงการอื่น ๆ ของฉัน นี่คือจุดที่การทดสอบหน่วยเข้ามาเมื่อทำถูกต้องแล้วควรเก็บบั๊กอย่างน้อยคนที่หนีการผลิต ในทางตรงกันข้ามการทดสอบการเขียนอาจใช้เวลานานซึ่งไม่ได้ผลดีกับโครงการที่ จำกัด เวลาเช่นของฉัน คำถามคือเท่าไหร่เวลาที่แตกต่างกันจะเขียนรหัสทดสอบหน่วยผ่านรหัสไม่ได้ทดสอบและวิธีการที่แตกต่างเวลาที่ขยายขอบเขตโครงการขยาย?

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

5
จุดประสงค์ของการใช้ DTO คืออะไร (Data Transfer Objects)?
จุดประสงค์ของการใช้DTOคืออะไรและเป็นแนวคิดล้าสมัยหรือไม่ ฉันใช้POJOในเลเยอร์มุมมองเพื่อถ่ายโอนและเก็บข้อมูล POJO เหล่านี้ถือเป็นทางเลือกแทน DTO ได้หรือไม่

16
ทำไมผู้คนถึงใช้ C ถ้ามันอันตรายมาก?
ฉันกำลังพิจารณาการเรียนรู้ C. แต่ทำไมคนใช้ C (หรือ C ++) ถ้ามันสามารถใช้ 'อันตราย'? โดยอันตรายฉันหมายถึงตัวชี้และสิ่งอื่นที่คล้ายคลึงกัน เช่นเดียวกับคำถาม Stack Overflow ทำไมฟังก์ชั่นที่ได้รับมีอันตรายมากจนไม่ควรใช้? . ทำไมโปรแกรมเมอร์ไม่เพียง แต่ใช้ Java หรือ Python หรือภาษาอื่นที่รวบรวมเช่น Visual Basic?
132 c++  c 

17
การเรียนรู้การชุมนุมช่วยในการเขียนโปรแกรมได้อย่างไร [ปิด]
ฉันเขียนโปรแกรมในภาษาระดับสูงกว่า (Python, C #, VBA, VB.NET) เป็นเวลาประมาณ 10 ปีและฉันไม่มีความเข้าใจอย่างสมบูรณ์เกี่ยวกับสิ่งที่เกิดขึ้น "ภายใต้ประทุน" ฉันสงสัยว่าการประชุมการเรียนรู้มีประโยชน์อย่างไรและจะช่วยฉันในฐานะโปรแกรมเมอร์ได้อย่างไร คุณช่วยให้ฉันมีทรัพยากรที่จะแสดงให้ฉันเห็นการเชื่อมต่อระหว่างสิ่งที่ฉันเขียนในรหัสระดับที่สูงขึ้นกับสิ่งที่เกิดขึ้นในการชุมนุม?
132 assembly 

10
นี่เป็นการละเมิดหลักการทดแทน Liskov หรือไม่?
สมมติว่าเรามีรายการของเอนทิตีงานและProjectTaskประเภทย่อย สามารถปิดงานได้ตลอดเวลายกเว้นงานProjectTasksที่ไม่สามารถปิดได้เมื่อพวกเขามีสถานะเป็นเริ่มต้น UI ควรตรวจสอบให้แน่ใจว่าไม่มีตัวเลือกในการปิดการเริ่มต้นทำงานProjectTaskแต่มีการป้องกันบางอย่างในโดเมน: public class Task { public Status Status { get; set; } public virtual void Close() { Status = Status.Closed; } } public class ProjectTask : Task { public override void Close() { if (Status == Status.Started) throw new Exception("Cannot close a started Project Task"); base.Close(); } …

6
คุณจะทำโครงร่างการกำหนดตัวเลขด้วย Git ได้อย่างไร
องค์กรของฉันกำลังพิจารณาย้ายจาก SVN เป็น Git การโต้แย้งหนึ่งเรื่องการเคลื่อนย้ายมีดังนี้: เราจะทำเวอร์ชันอย่างไร เรามีการเผยแพร่ SDK ตามแพลตฟอร์ม NetBeans เนื่องจากการแก้ไข SVN เป็นตัวเลขอย่างง่ายเราจึงสามารถใช้พวกเขาเพื่อขยายหมายเลขรุ่นของปลั๊กอินและการสร้าง SDK ของเรา เราจะจัดการกับสิ่งนี้ได้อย่างไรเมื่อเราย้ายไปที่ Git การแก้ปัญหาที่เป็นไปได้: การใช้หมายเลขบิลด์จากฮัดสัน (ปัญหา: คุณต้องตรวจสอบฮัดสันเพื่อเชื่อมโยงกับเวอร์ชัน Git จริง) upping เวอร์ชันด้วยตนเองสำหรับทุกคืนและมีเสถียรภาพ (ปัญหา: เส้นโค้งการเรียนรู้ข้อผิดพลาดของมนุษย์) หากคนอื่นพบปัญหาที่คล้ายกันและแก้ไขมันเรายินดีที่จะได้ยินว่า

10
TDD กับผลผลิต
ในโครงการปัจจุบันของฉัน (เกมใน C ++) ฉันตัดสินใจว่าฉันจะใช้ Test Driven Development 100% ในระหว่างการพัฒนา ในแง่ของคุณภาพของรหัสนี่ยอดเยี่ยมมาก รหัสของฉันไม่เคยได้รับการออกแบบมาอย่างดีหรือปราศจากข้อผิดพลาด ฉันไม่ได้ประจบประแจงเมื่อดูรหัสที่ฉันเขียนเมื่อปีที่แล้วที่จุดเริ่มต้นของโครงการและฉันได้รับความรู้สึกที่ดีขึ้นมากเกี่ยวกับวิธีการจัดโครงสร้างสิ่งต่าง ๆ ไม่เพียง แต่จะทดสอบได้ง่ายขึ้นเท่านั้น . อย่างไรก็ตาม ... เป็นเวลาหนึ่งปีแล้วที่ฉันเริ่มโครงการ จริงอยู่ที่ฉันสามารถทำงานได้ในเวลาว่าง แต่ TDD ยังคงทำให้ฉันช้าลงอย่างมากเมื่อเทียบกับสิ่งที่ฉันเคยทำ ฉันอ่านว่าความเร็วในการพัฒนาช้าลงจะดีขึ้นเมื่อเวลาผ่านไปและฉันคิดว่าจะทำการทดสอบได้ง่ายกว่าที่ฉันเคยทำ แต่ฉันอยู่ที่นี่มาหนึ่งปีแล้วและฉันก็ยังทำงานด้วยความเร็วของหอยทาก ทุกครั้งที่ฉันคิดถึงขั้นตอนต่อไปที่ต้องทำงานฉันต้องหยุดทุกครั้งและคิดว่าฉันจะเขียนแบบทดสอบอย่างไรเพื่อให้ฉันสามารถเขียนรหัสจริงได้ บางครั้งฉันจะติดอยู่หลายชั่วโมงรู้ว่าฉันต้องการเขียนโค้ดอะไร แต่ไม่รู้ว่าจะพังมันให้ละเอียดพอที่จะครอบคลุมการทดสอบได้อย่างไร บางครั้งฉันจะคิดอย่างรวดเร็วถึงการทดสอบโหลและใช้เวลาหนึ่งชั่วโมงในการเขียนการทดสอบเพื่อครอบคลุมโค้ดจริง ๆ ชิ้นเล็ก ๆ ที่อาจใช้เวลาสองสามนาทีเพื่อเขียน หรือหลังจากเสร็จสิ้นการทดสอบครั้งที่ 50 เพื่อให้ครอบคลุมเอนทิตีเฉพาะในเกมและทุกแง่มุมของการสร้างและการใช้งานฉันมองไปที่รายการสิ่งที่ต้องทำและดูเอนทิตีถัดไปเพื่อเขียนโค้ดและประจบประแจงด้วยความกลัวเมื่อนึกถึงการเขียน อีก 50 แบบทดสอบที่คล้ายกันเพื่อนำไปใช้งาน มันถึงจุดที่เมื่อมองถึงความคืบหน้าของปีที่แล้วฉันกำลังพิจารณาที่จะละทิ้ง TDD เพราะเห็นว่า "การทำให้โครงการเสร็จสิ้นลง" อย่างไรก็ตามการยอมแพ้คุณภาพของรหัสที่มาพร้อมกับมันไม่ใช่สิ่งที่ฉันรอคอย ฉันกลัวว่าถ้าฉันหยุดเขียนการทดสอบฉันก็จะออกจากนิสัยในการทำให้โค้ดเป็นโมดูลและทดสอบได้ ฉันอาจจะทำสิ่งผิดปกติเพื่อยังช้าอยู่หรือ? มีทางเลือกอื่น ๆ ที่เร่งความเร็วในการผลิตโดยไม่สูญเสียผลประโยชน์ทั้งหมดหรือไม่? …
131 unit-testing  tdd 

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

1
ทำความเข้าใจกับความแตกต่าง: ล่ามแบบดั้งเดิมคอมไพเลอร์ JIT ล่าม JIT และคอมไพเลอร์ AOT
ฉันพยายามที่จะเข้าใจความแตกต่างระหว่างล่ามแบบดั้งเดิมคอมไพเลอร์ JIT ล่าม JIT และคอมไพเลอร์ AOT ล่ามเป็นเพียงเครื่อง (เสมือนหรือทางกายภาพ) ที่ดำเนินการคำสั่งในภาษาคอมพิวเตอร์บางภาษา ในแง่นี้ JVM เป็นล่ามและ CPU จริงเป็นล่าม การคอมไพล์ล่วงหน้าเวลาหมายถึงการคอมไพล์โค้ดเป็นภาษาบางภาษาก่อนดำเนินการ (ตีความ) มัน อย่างไรก็ตามฉันไม่แน่ใจเกี่ยวกับคำจำกัดความที่แน่นอนของผู้แปล JIT และล่าม JIT ตามคำนิยามผมอ่าน, JIT รวบรวมเป็นเพียงการรวบรวมรหัสเพียงก่อนที่จะแปลความหมายของมัน ดังนั้นโดยทั่วไปการรวบรวม JIT ก็คือการรวบรวม AOT เสร็จสิ้นก่อนดำเนินการ (ตีความ) ใช่ไหม และล่าม JIT เป็นโปรแกรมที่มีทั้งคอมไพเลอร์ JIT และล่ามและรวบรวมรหัส (JITs มัน) ก่อนที่มันจะตีความมัน? โปรดอธิบายความแตกต่าง

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