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

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

2
ประโยชน์ของการใช้คลาสตัวสร้างภายในแบบคงที่
ในระหว่างการเขียนแนวทางรหัสสำหรับ บริษัท ฉันพบว่าตัวเองแนะนำให้ใช้รูปแบบตัวสร้างจาก Effective Java แทนที่จะเป็นตัวสร้างแบบ telescopic อย่างไรก็ตามหลังจากคิดไปอีกเล็กน้อยแน่นอนว่าทางออกที่ดีกว่าคือการลบคลาส builder ออกและยังลบ constructors พิเศษด้วยอาร์กิวเมนต์ที่เป็นทางเลือก ดังนั้นเพียงแค่มีคอนสตรัคเตอร์เดียวที่มีพารามิเตอร์ที่ต้องการ getters / setters ปกติและใส่รหัส เมื่อใช้งานเพียงสร้างอินสแตนซ์ใหม่ของวัตถุ yr จากนั้นตั้งค่า ความคิดดั้งเดิมของฉันคือประโยชน์ที่ได้รับมาจากการขจัดความสับสนว่าสิ่งที่เป็นพารามิเตอร์เป็นตัวเลือกและสิ่งที่จำเป็น; อย่างไรก็ตามประโยชน์ที่แท้จริงมาจากการใช้วิธีการผูกมัด / อินเตอร์เฟซได้อย่างคล่องแคล่ว รูปแบบตัวสร้างมีประโยชน์เมื่อคุณสร้างอินสแตนซ์ใหม่จำนวนมากเนื่องจาก IDE สามารถทำงานได้อย่างมีประสิทธิภาพและหากมีพารามิเตอร์ทางเลือกจำนวนมาก (15+) อย่างไรก็ตามมันคุ้มค่ากับการต่อเวลาพิเศษในการเขียนคลาสภายในแบบคงที่คุณจะแนะนำให้ใช้ตัวสร้างหรือเสียเวลาหรือไม่?
9 java 

2
Haskell GUI: Haskell สามารถทำได้มากแค่ไหน?
ฉันอยากลองใช้กราฟิกใน Haskell จากสิ่งที่ฉันเห็นห้องสมุดที่มีอยู่เป็นส่วนหน้าไปยังไลบรารี C / C ++ หรือสิ่งที่เป็นนามธรรมด้วยคุณสมบัติขั้นต่ำ ห้องสมุดระดับสูงดูเหมือนจะไม่เหมาะกับความต้องการของฉันดังนั้นฉันจึงเหลือไว้กับ front-end ระดับล่าง สิ่งที่ฉันต้องการคือการแสดงไทล์และข้อความ - พื้นฐานสำหรับเกมที่ง่ายมาก ฉันรู้วิธีการทำเช่นนี้กับ C และคิดว่าฉันสามารถเขียนกราฟิกใน C และเชื่อมต่อกับ Haskell ทางเลือกคือการเขียนกราฟิกโดยใช้ห้องสมุด Haskell คำถามของฉันคือห้องสมุด Haskell สามารถใช้งานได้ตามที่ฉันต้องการหรือไม่ ฉันไม่ต้องการงอไปข้างหลัง ถ้า C สามารถทำได้ดีกว่าที่ฉันอยากรู้

2
“ ปัญหาการหยิบพิซซ่า” แก้ไขได้อย่างไรโดยใช้เทคนิคการเขียนโปรแกรมแบบไดนามิก?
ปัญหาการเลือกพิซซ่าของ Winkler: พายพิซซ่าวงกลมของnชิ้นที่ชิ้นiมีพื้นที่S_iเช่นพื้นที่ที่แตกต่างกันสำหรับแต่ละชิ้นพาย ผู้เสพอลิซและบ๊อบผลัดกันหยิบชิ้น แต่มันหยาบคายที่จะสร้างช่องว่างหลายแห่งในวงกลม (พิจารณาว่าไม่ได้รับอนุญาต) ดังนั้นผู้กินแต่ละคนจะถูก จำกัด ให้รับหนึ่งในสองชิ้นติดกับพื้นที่เปิด อลิซไปก่อนแล้วผู้เสพทั้งคู่หาทางพายให้ได้มากที่สุด อัลกอริธึมการเขียนโปรแกรมแบบไดนามิกจะกำหนดได้อย่างไรว่าอลิซพายกินอย่างไรถ้าทั้งอลิซและบ๊อบเล่นได้อย่างสมบูรณ์แบบเพื่อเพิ่มการใช้พิซซ่าให้ได้มากที่สุด? ความเข้าใจของฉัน: ในปัญหา DP ทั่วไปเราดำเนินการต่อไปด้วยการค้นหาปัญหาย่อยซึ่งสามารถมองเห็นได้โดยใช้แผนผังการเรียกซ้ำหรือใช้ DAG ให้แน่นขึ้น ที่นี่ฉันไม่พบโอกาสในการค้นหาปัญหาย่อยที่นี่ ที่นี่สำหรับชุด S_i s หนึ่งชุดเราต้องเพิ่มพื้นที่ส่วนที่กินโดย Alice ให้มากที่สุด สิ่งนี้จะขึ้นอยู่กับการเลือกวิธีเรียงสับเปลี่ยนชิ้นพิซซ่า (n-1) เรียงสับเปลี่ยน การเลือกชิ้นส่วนพื้นที่สูงสุดจากสองตัวเลือกที่มีอยู่ในทุก ๆ n \ 2 ทำให้อลิซได้รับแล้วจะให้พื้นที่ทั้งหมดของชิ้นเพื่อเปลี่ยนรูป เราจำเป็นต้องค้นหาพื้นที่ของชิ้นสำหรับการเรียงสับเปลี่ยนทั้งหมด แล้วค่าสูงสุดจากสิ่งเหล่านี้ ใครสามารถช่วยฉันในการก้าวไปข้างหน้า?

4
ทำไมเราทำอะไรไม่สำเร็จ?
ฉันทำงานกับทีมเล็ก ๆ ใน บริษัท ขนาดกลางซึ่งส่วนใหญ่ไม่ได้เกี่ยวข้องกับการพัฒนาซอฟต์แวร์ ฉันเป็นนักพัฒนาซอฟต์แวร์รุ่นใหม่ล่าสุดและมีประสบการณ์น้อยที่สุดและไม่มีพื้นฐานด้านอาชีพหรือการศึกษาด้านซอฟต์แวร์ก่อนที่จะเริ่ม แต่ฉันรู้สึกยินดีเป็นอย่างยิ่งกับความเคารพที่ได้รับจากข้อมูลของฉัน แต่ถึงกระนั้นฉันรู้สึกว่าฉันควรจะทำมากขึ้นด้วยเวลาออกอากาศจำนวนใจกว้างนี้ ในฐานะทีมเราดูเหมือนจะมีปัญหาในการทำสิ่งต่างๆให้เสร็จ ฉันอยากจะแนะนำสิ่งที่จะปรับปรุงสถานการณ์และฉันคิดว่าฉันจะฟังถ้ามันเป็นความคิดที่ดี แต่ฉันสูญเสียสิ่งที่จะแนะนำ สิ่งที่ฉันสามารถระบุได้ว่าเป็นปัญหารวมถึง: รายละเอียดของงานในมือมีน้อย ส่วนหนึ่งเป็นเพราะการจัดการเป็นปัญหาคอขวดและเราไม่มีเงินหรือผู้คนที่จะทำตามข้อกำหนดรายละเอียดเท่าที่เราต้องการ ส่วนหนึ่งเป็นเพราะซอฟต์แวร์ที่เรากำลังพัฒนานั้นกำลังสืบสวนและวิธีการที่แม่นยำยังไม่ชัดเจนจนกว่าจะมีการสาธิตและนำมาใช้เพื่อกำหนดประสิทธิภาพ Lead Dev นั้นชื่นชอบสิ่งที่เขาเรียกว่า 'การสร้างต้นแบบ' จนถึงจุดที่เขาเริ่มยืนยันว่าทุกอย่างคือ 'prototyped' ซึ่งส่วนที่เหลือของเราดูเหมือนจะเขียนโค้ดไม่ดีและให้มันแก่ modellers เพื่อเล่นกับ ไม่ชัดเจนว่าเขาคาดหวังอะไรจากการออกกำลังกายนี้ในหลายกรณี การดำเนินการ 'ที่เกิดขึ้นจริง' นั้นได้รับความทุกข์ทรมานเนื่องจากการยืนยันของเขาว่าการปฏิบัติที่ดีต้องใช้เวลามากเกินไปจากการสร้างต้นแบบ ฉันยังไม่ได้เริ่มที่จะสามารถแก้ปริศนาตรรกะที่คลี่คลายนี้และฉันไม่แน่ใจว่าฉันต้องการลอง ผู้ดัดแปลงคาดว่าจะบอกทุกอย่างเกี่ยวกับวิธีการที่ต้องการในรายละเอียดที่แม่นยำและเชื่อมั่นอย่างแน่นอนว่าสิ่งที่พวกเขาออกมานั้นไม่มีเหตุผลในทางทฤษฎี เรื่องนี้แทบจะไม่เคยเกิดขึ้นจริง แต่ไม่มีการดำเนินการใด ๆ ที่จะแก้ไขสถานการณ์นี้ ไม่มีใครในด้านการสร้างแบบจำลองยกข้อกังวลใด ๆ ในลักษณะที่มีโครงสร้างที่มีแนวโน้มที่จะดำเนินการและพวกเขาไม่แสวงหาแนวทางในการใช้แนวทางปฏิบัติที่ดีที่สุด ไม่มีอะไรทำเกี่ยวกับความเฉยเมยเช่นกัน ฉันเคยพยายามที่จะผลักดัน TDD ในทีมก่อนหน้านี้ แต่พบว่ามันยากเพราะมันใหม่สำหรับฉันและในขณะที่ผู้ที่มีหน้าที่กำกับดูแลงานของฉันก็เต็มใจที่จะทนมันไม่มีความกระตือรือร้นมาจากคนอื่น ฉันไม่สามารถพิสูจน์ได้ว่าฉันใช้เวลาไปกับการหมกมุ่นและไม่ทำฟีเจอร์ให้จบดังนั้นความคิดนั้นก็ถูกทอดทิ้ง ฉันกังวลว่ามันจะไม่ถูกหยิบขึ้นมาอีกเพราะไม่มีใครชอบที่จะบอกวิธีการทำงานของพวกเขา ตอนนี้เรามีเซิร์ฟเวอร์รวมอย่างต่อเนื่อง แต่ส่วนใหญ่จะใช้เพื่อทดสอบการถดถอยหลายชั่วโมงเท่านั้น มันถูกเปิดทิ้งไว้ว่าควรจะใช้การทดสอบเต็มรูปแบบและการรวมเข้าด้วยกันเช่นกัน แต่ในขณะนี้ไม่มีใครเขียนมัน ทุกครั้งที่ฉันยกประเด็นเรื่องคุณภาพด้วยนักพัฒนานำฉันจะได้รับคำตอบเกี่ยวกับผลของ 'การทดสอบคุณสมบัติ …

4
ใช้“ ข้อยกเว้นที่จับได้” เพื่อปรับปรุงความสามารถในการอ่านดีหรือไม่ดี?
ในส่วนเวลาที่จะใช้ข้อยกเว้นในThe Pragmatic Programmerหนังสือเขียนว่า: retcode = OK; if (socket.read(name) != OK) { retcode = BAD_READ; } else { processName(name); if (socket.read(address) != OK) { retcode = BAD_READ; } else { processAddress(address); if (socket.read(telNo) != OK) { retcode = BAD_READ; } else { // etc, etc... } } } return retcode; พวกเขาชอบ: …

3
การติดตามการใช้แอพผ่าน REST API มันผิดจรรยาบรรณหรือไม่
ฉันกำลังสร้างแอพที่สื่อสารกับเว็บไซต์ของฉันกับ ASIHTTPRequest ไปยัง REST API บน PHP ทางฝั่งเซิร์ฟเวอร์ โดยปกติในแอปของฉันฉันมีจุดปลายที่แตกต่างกันในฝั่งเซิร์ฟเวอร์และมักจะส่งคืนข้อมูล JSON มันผิดจรรยาบรรณในการเข้าสู่ระบบเคาน์เตอร์ในแต่ละครั้งที่มีการชนกันของอุปกรณ์ปลายทางหรือไม่? ฉันต้องการจะจับภาพว่าแอพพลิเคชั่นนั้นถูกใช้งานอย่างไรโดยจับจุดที่ผู้ใช้เอเจนต์ของผู้ใช้ช่วงเวลาของวันนั้นอาจเป็น IP ของพวกเขา (ไปที่กลุ่มการเข้าชม ฯลฯ ) ฉันควรขออนุญาตทำสิ่งนี้หรือไม่?

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

3
คุณจัดโครงสร้างหน่วยการทดสอบสำหรับวัตถุหลายรายการที่มีพฤติกรรมเดียวกันได้อย่างไร
ในหลายกรณีฉันอาจมีคลาสที่มีอยู่แล้วซึ่งมีพฤติกรรมบางอย่าง: class Lion { public void Eat(Herbivore herbivore) { ... } } ... และฉันมีการทดสอบหน่วย ... [TestMethod] public void Lion_can_eat_herbivore() { var herbivore = buildHerbivoreForEating(); var test = BuildLionForTest(); test.Eat(herbivore); Assert.IsEaten(herbivore); } ตอนนี้สิ่งที่เกิดขึ้นคือฉันต้องสร้างคลาส Tiger ที่มีพฤติกรรมเฉพาะตัวของ Lion: class Tiger { public void Eat(Herbivore herbivore) { ... } } ... และเนื่องจากฉันต้องการพฤติกรรมเดียวกันฉันจึงต้องทำการทดสอบเดียวกันฉันจึงทำสิ่งนี้: interface IHerbivoreEater …

6
คุณติดตามโครงการที่ผ่านมาได้อย่างไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา หลังจากประสบความยากลำบากในการพยายามจดจำรายละเอียดของโครงการที่ผ่านมาเมื่อหลายปีก่อนฉันสงสัยว่าโปรแกรมเมอร์มักจะติดตามเรื่องนี้อย่างไร ข้อมูลประเภทนี้มีประโยชน์กับการสัมภาษณ์งานเป็นต้น คุณจดบันทึกเทคโนโลยีที่ใช้ความท้าทายที่ต้องเผชิญและอื่น ๆ กับ "jumbo CV" หรือไม่? หรือคุณเพียงแค่เชื่อในความทรงจำของคุณ?

5
วิธีการบัญชีสำหรับการแก้ไขข้อผิดพลาดซ้ำแล้วซ้ำอีก?
เราใช้งาน Scrum ได้สำเร็จในช่วง 5 เดือนที่ผ่านมา แม้ว่าเรามี 3 สัปดาห์ที่ห่างจากแยงโดยไม่เคยทำทดสอบใด ๆ รวมแบบ end-to-end โอ๊ย! ฉันต้องการความช่วยเหลือ. โดยไม่ต้องแก้ไขสาเหตุของปัญหานี้ (ณ จุดนี้) เราต้องวางแผนการทำซ้ำปัจจุบันซึ่งประกอบด้วยการปรับปรุงเล็กน้อยและ MANY ยังคงแก้ไขข้อผิดพลาดที่ไม่รู้จัก คุณบัญชีสำหรับสถานการณ์นี้ได้อย่างไร คุณวางแผนการทำซ้ำเพื่อแก้ไขข้อบกพร่องที่ยังไม่พบ?
9 scrum  bug  planning 

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

5
วิธีรวมนักพัฒนาหน้าใหม่ในโครงการของคุณอย่างไร
เรากำลังพิจารณาการสอนพนักงานบางคนที่มีประสบการณ์การเขียนโปรแกรมระดับศูนย์หรืองานอดิเรกทั่วไปเพื่อลดภาระงานให้กับฉัน เราใช้ Python / Django ซึ่งมีเอกสารที่เป็นมิตรรอบตัวและง่ายต่อการเรียนรู้ ตอนนี้ฉันเป็นแผนกไอทีสำหรับชายคนหนึ่งของ บริษัท และฉันไม่มีเวลามากพอที่จะพัฒนาทุกอย่างที่ บริษัท ต้องการ เราไม่ได้เป็น บริษัท ซอฟต์แวร์ แต่มีส่วนช่วยในเรื่องไอทีในการทำงานให้อัตโนมัติพัฒนาคุณสมบัติการบริการลูกค้าวิเคราะห์ข้อมูล ฯลฯ คุณจะรวมมือใหม่ที่ทำงานบน codebase ของคุณได้อย่างไร สมมติว่าคุณมีฝึกงาน - พวกเขาทำอะไร? ฉันลังเลอย่างยิ่งที่จะให้พวกเขาออกแบบหรือพัฒนารหัสหลักเนื่องจากเราจะจัดการกับข้อผิดพลาด / รูปแบบการออกแบบที่แปลกประหลาดของพวกเขามานานหลายปี ในฐานะนักพัฒนาหลักฉันจะเป็นคนที่ต้องแก้ไขรหัสของพวกเขา ความคิดของฉันคือการมีล่วงหน้าหน้าแก้ไขรหัสที่มีอยู่ไม่เคยสร้างคุณสมบัติหลัก ฉันสามารถ offload งานให้กับพวกเขาด้วยงานง่าย ๆหลังจากที่ฉันสร้างคุณลักษณะเอง เราต้องการให้พนักงานของเราเรียนรู้ / ค้นหาคุณค่าใน บริษัท และโดยทั่วไปเราจะมีผู้คน 'เลื่อนตำแหน่ง' มันเป็นมาตรฐานในการสอนคนที่มีการเขียนโปรแกรมระดับทั่วไป / งานอดิเรก? "การเลื่อนตำแหน่ง" ใน บริษัท ซอฟต์แวร์ทำงานอย่างไรกับโปรแกรมเมอร์ระดับต้น? พวกเขาเริ่มทำงานกับรหัสหลักเมื่อใด ฉันกำลังพยายามตัดสินใจว่าจะก่อให้เกิดความเสียหายมากกว่าความช่วยเหลือหรือไม่และมีวิธีที่เราสามารถใช้ความช่วยเหลือโดยไม่เสี่ยงรหัสไซต์หลัก (สภาพแวดล้อมที่แยกได้หรือไม่)
9 team  business 

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

1
ฉันจะอนุญาตให้ใช้สิทธิ์แบบคู่ได้อย่างไร
ฉันต้องการโอเพ่นซอร์สโครงการของฉันภายใต้ GPL v3 นอกจากนี้ฉันต้องการขายใบอนุญาตสำหรับผู้ที่ต้องการใช้รหัสในแอปพลิเคชันที่เป็นกรรมสิทธิ์ ฉันจะปล่อยซอร์สโค้ดของฉันภายใต้ GPL v3 ได้อย่างไรในขณะที่สงวนสิทธิ์ในการเผยแพร่ภายใต้สิทธิ์ใช้งานอื่นที่ฉันเลือก ฉันยังคงวางส่วนหัว GPL ไว้ที่ด้านบนของไฟล์ต้นฉบับของฉันหรือไม่ ฉันค่อนข้างใหม่กับด้านกฎหมายของซอฟต์แวร์

7
เจ้าของผลิตภัณฑ์เป็นผู้พัฒนาในทีมของคุณหรือไม่
ฉันสับสนเกี่ยวกับความรับผิดชอบของ PO ที่นี่ ฉันเป็นผู้พัฒนาเกมทีมคุณสมบัติ แต่ยังเป็น PO งานประจำวันของนักพัฒนาเกือบเต็มเวลาดังนั้นฉันต้องทำงานตลอดเวลาเพื่อดูแลหน้าที่ PO ของฉันและความรับผิดชอบของ PO ดูเหมือนจะขัดกับความคิดของนักพัฒนา ในฐานะที่เป็น PO ฉันจะเลือกคุณสมบัติเพิ่มเติมในการวิ่งครั้งต่อไป ไม่เช่นนั้นฉันจะบอกตัวเองไม่ให้ทำเพราะฉันเป็นสมาชิกในทีมเพื่อพัฒนาคุณสมบัติเหล่านั้น สถานการณ์นี้ทำให้ฉันสับสนดังนั้นฉันต้องการฟังความคิดเห็นจากพวกคุณ ฉันยังใหม่กับ Scrum และ Game Dev (ประมาณ 1 ปีครึ่ง) และยังใหม่กับที่นี่และภาษาอังกฤษ

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