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

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

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

5
อัลกอริทึมสำหรับการคำนวณเส้นทางกระสุนไปยังเป้าหมายที่มีค่าสูงสุด 2 แฉลบ
ขออภัยสำหรับชื่อที่ไม่ดี แต่ฉันไม่มีวิธีที่ดีกว่าในการเขียนวลี ... ดังนั้นจึงมีเกมที่น่าตื่นตาตื่นใจนี้โดยนินเทน (ใช่!) บน Wii เรียก WiiPlay มี 9 minigames อยู่ในนั้นและหนึ่งในรายการโปรดของฉันเรียกว่าถัง! . มันเกี่ยวกับการทำลายรถถังศัตรู COM โดยไม่ทำลายตัวเอง นี่คือภาพหน้าจอของระดับ: วิธีหนึ่งในการทำลายรถถังคือการยิงกระสุน มีรถถังศัตรูสีเขียวมะนาวที่ยิงกระสุนความเร็วสูงที่แฉลบ (กับกำแพงและบล็อก) สองครั้ง คุณสามารถดูว่ารถถังของผู้เล่นสามารถถูกทำลายได้อย่างไรถ้ามันอยู่ในที่ที่มันอยู่ในขณะนี้เพราะรถถังมะนาวที่อยู่ตรงกลางสามารถยิงกระสุนที่ตามเส้นทางสีเขียวที่ฉันวาดลงบนภาพ ในฐานะโปรแกรมเมอร์มือสมัครเล่นตัวเองฉันสงสัยว่าปูนขาวจะตัดสินได้อย่างไรว่ามันจะยิงไปทางไหนเพื่อตีรถถังผู้เล่น ฉันคิดถึงมันด้วยตัวเอง แต่ไม่ได้คิดอัลกอริธึมที่เป็นไปได้ ฉันจะอธิบายข้อสรุปของฉันในกรณีที่พวกเขาสร้างแรงบันดาลใจให้ใครบางคน เพียงเพื่อความเรียบง่ายในช่วงคำอธิบายของฉันฉันถือว่าผนังจะเป็นพื้นผิวใด ๆ กับที่กระสุนแฉลบสามารถ รูปสี่เหลี่ยมผืนผ้าที่แยกออกจากบล็อกจึงก่อตัวเป็นผนังสี่ด้าน ฉันได้ข้อสรุปว่า 2 จุดที่กระสุนเด้งกระสุนอยู่เสมอด้านใดด้านหนึ่งของสี่เหลี่ยมด้านขนานหรือกลายเป็นจุดยอดตรงข้ามของรูปสี่เหลี่ยมด้านขนาน รถถังศัตรูที่ยิงและรถถังผู้เล่นที่มันเล็งไม่จำเป็นต้องเป็นจุดยอดอีก 2 จุด แต่แน่นอนว่ามันวางอยู่บนเส้น colinear ทั้งสองด้านของสี่เหลี่ยมด้านขนาน นี่คือภาพประกอบของ 4 วิธีที่เป็นไปได้ที่สามารถสร้างสี่เหลี่ยมด้านขนาน: HOR-VERหมายถึงกระสุนนัดแรกชนผนังแนวนอนจากนั้นก็ชนกำแพงแนวตั้ง แล้วฉันก็ติดอยู่ ฉันคิดเกี่ยวกับการเคลื่อนที่ไปรอบ ๆ เส้นที่เชื่อมต่อรถถังศัตรูและรถถังผู้เล่นรอบ ๆ แผนที่เพื่อดูว่ามันเป็นรูปสี่เหลี่ยมด้านขนานที่มีการชนสองครั้งกับผนังใด …

2
เหตุใด C ใช้เครื่องหมายดอกจันสำหรับพอยน์เตอร์ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเพิ่งจะเรียนรู้เกี่ยวกับ C. ฉันคิดว่ามันแปลกที่ผู้สร้างเลือกเครื่องหมายดอกจัน ( *) เป็นสัญลักษณ์สำหรับพอยน์เตอร์แทนที่จะเป็นสัญลักษณ์ที่ดูเหมือนตัวชี้ ( ->) พิจารณาว่าตัวชี้การลงทะเบียนและฟังก์ชั่นที่ทำให้เกิดความสับสนสามารถมีเหตุผลทางประวัติศาสตร์หรือทางปฏิบัติได้หรือไม่สำหรับการใช้เครื่องหมายดอกจัน
21 c  history  syntax 

9
คุณวัดการทดสอบการรวมระบบของคุณอย่างไร
ฉันกำลังตรวจสอบเทคนิคและกลยุทธ์ในการปรับขนาดการทดสอบการรวมระบบที่เพิ่มขึ้นของเราในผลิตภัณฑ์ปัจจุบันของเราเพื่อให้พวกเขาสามารถ (เป็นมนุษย์) ยังคงเป็นส่วนหนึ่งของการพัฒนาของเราและกระบวนการ CI ที่การทดสอบการรวมกันกว่า 200 ครั้งเราได้ทำเครื่องหมาย 1 ชั่วโมงเพื่อทำการทดสอบเต็มรูปแบบ (บนเครื่องเดสก์ท็อป aa) และสิ่งนี้มีผลกระทบในทางลบต่อความสามารถของนักพัฒนาในการทนต่อการรันทั้งชุด ซึ่งส่งผลต่อแรงจูงใจที่จะต้องมีระเบียบวินัยในการสร้างให้ดี เรารวมการทดสอบ Scenrios สำคัญเท่านั้นด้านหน้าไปด้านหลังและเราใช้สภาพแวดล้อมที่สะท้อนการผลิตที่สร้างขึ้นตั้งแต่เริ่มการทดสอบแต่ละครั้ง เนื่องจากเวลาที่ใช้ในการรันจึงทำให้วนรอบการตอบกลับแย่มากและวงจรที่สิ้นเปลืองจำนวนมากรอให้เครื่องทำการทดสอบเสร็จสิ้นไม่ว่าการทดสอบจะเน้นไปที่ใด ไม่ต้องกังวลกับผลกระทบด้านลบที่มีราคาแพงกว่าต่อการไหลและความก้าวหน้าสติและความยั่งยืน เราคาดว่าจะมีการทดสอบการรวมเพิ่มเป็น 10 เท่าก่อนที่ผลิตภัณฑ์นี้จะเริ่มทำงานช้าลง (ไม่มีความคิดจริง ๆ แต่ก็ไม่รู้สึกเหมือนว่าเรากำลังเริ่มต้นในแง่ของคุณสมบัติเลย) เราต้องคาดหวังอย่างต่อเนื่องว่าจะมีการทดสอบการรวมสองสามร้อยหรือสองสามพันครั้งฉันคิดว่าในบางจุด เพื่อความชัดเจนในการพยายามป้องกันไม่ให้สิ่งนี้กลายเป็นการสนทนาเกี่ยวกับการทดสอบหน่วยกับการทดสอบการรวม (ซึ่งไม่ควรแลกเปลี่ยน) เรากำลังทำการทดสอบทั้งหน่วยด้วย TDD และการทดสอบการรวมในผลิตภัณฑ์นี้ ในความเป็นจริงเราทำการทดสอบการรวมที่เลเยอร์ต่าง ๆ ในสถาปัตยกรรมบริการที่เรามีซึ่งมันสมเหตุสมผลสำหรับเราเนื่องจากเราต้องตรวจสอบตำแหน่งที่เราแนะนำการเปลี่ยนแปลงที่ผิดพลาดเมื่อเปลี่ยนรูปแบบในสถาปัตยกรรมของเราไปยังพื้นที่อื่น ๆ ของ ระบบ. เล็กน้อยเกี่ยวกับสแต็คเทคโนโลยีของเรา ขณะนี้เรากำลังทดสอบสภาพแวดล้อมการจำลอง (CPU และหน่วยความจำมาก) เพื่อทำการทดสอบของเราตั้งแต่ต้นจนจบ ซึ่งประกอบด้วยบริการเว็บ Azure REST ซึ่งแสดงแบ็กเอนด์ noSql (ATS) เรากำลังจำลองสภาพแวดล้อมการผลิตของเราโดยทำงานใน Azure desktop …

4
ถ้ามี LISP จะทำให้การใช้ระบบมาโครง่ายขึ้นได้อย่างไร
ฉันเรียนรู้ Scheme จากSICPและฉันได้รับความประทับใจว่าส่วนใหญ่ของสิ่งที่ทำให้ Scheme และยิ่งกว่านั้น LISP พิเศษคือระบบมาโคร แต่เนื่องจากมาโครถูกขยายในเวลาคอมไพล์ทำไมคนไม่สร้างระบบมาโครที่เทียบเท่าสำหรับ C / Python / Java / อะไร ตัวอย่างเช่นเราสามารถผูกpythonคำสั่งexpand-macros | pythonหรืออะไรก็ได้ รหัสจะยังสามารถพกพาได้สำหรับผู้ที่ไม่ได้ใช้ระบบมาโครใครจะขยายมาโครก่อนที่จะเผยแพร่รหัส แต่ฉันไม่รู้อะไรเลยนอกจากเทมเพลตใน C ++ / Haskell ซึ่งฉันรวบรวมไม่เหมือนกันจริงๆ ถ้ามี LISP จะทำให้การใช้ระบบมาโครง่ายขึ้นได้อย่างไร

8
ประโยชน์ของฟังก์ชั่นที่ไม่มีพารามิเตอร์ซึ่งเรียกเฉพาะฟังก์ชั่นอื่นคืออะไร
บทช่วยสอน (สำหรับ Javascript) ฉันขอแนะนำให้เราเขียนฟังก์ชั่นแบบนี้: function sayHello() { //Some comments explaining the next line window.alert("Hello"); } นอกเหนือจากความงุนงงจะมีประโยชน์ในการเขียนสิ่งนี้ในชีวิตจริง? ถ้าเป็นเช่นนั้นประโยชน์คืออะไร?

5
ควรเล่าเรื่องราวของผู้ใช้ระหว่างนักพัฒนาหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันมักจะเห็นเรื่องราวที่มีการพัฒนาส่วนหลังและส่วนหน้า ตัวอย่างเช่นพิจารณากล่องโต้ตอบขนาดใหญ่ที่มีตารางไม่กี่ตารางและตัวควบคุมแบบไดนามิก เราจะสร้างเรื่องราวหลายเรื่อง (อาจเป็นเรื่องหนึ่งสำหรับแต่ละตารางและอีกเรื่องสำหรับระบบควบคุมแบบไดนามิก) ทีม dev จะแยกกับคน ๆ หนึ่งที่แบ็คเอนด์และอีกคนอยู่ที่ส่วนหน้า สิ่งนี้ทำให้ง่ายสำหรับผู้ที่แบ็คเอนด์ที่ต้องกังวลเกี่ยวกับโครงสร้างของเลเยอร์ SQL ในขณะที่คนที่อยู่ข้างหน้าจะเน้นที่เนื้อหาเช่นเลย์เอาต์ หลังจากที่มีการตกลงอินเทอร์เฟซเริ่มต้นระหว่างแบ็คเอนด์และฟรอนต์เอนด์นักพัฒนาทั้งสองสามารถมุ่งความสนใจไปที่การทำให้ส่วนของพวกเขาเสร็จสิ้นในตอนท้ายของการวิ่ง จากนั้นความสับสนวุ่นวายมา ใคร "เป็นเจ้าของ" เรื่องใด "อยู่ระหว่างดำเนินการ" หมายความว่าหรือ "ทำ" เราควรสร้างสองเรื่องแยกกันสำหรับส่วนหลังและส่วนหน้าหรือไม่? ถ้าเป็นเช่นนั้นจะไม่ทำลายความคิดเรื่องผู้ใช้ตามคุณลักษณะหรือไม่ ระบบของเรามีความคิดเกี่ยวกับ "งานย่อย" ซึ่งช่วยบรรเทาปัญหาเหล่านี้ได้บ้าง แต่งานย่อยเพิ่มความซับซ้อนเป็นพิเศษ มีวิธีที่ดีกว่า? นี่เป็นวิธีที่ "ไม่ดี" ในการใช้ Scrum หรือไม่ ฉันใช้ Agile บางรูปแบบในช่วงไม่กี่ปีที่ผ่านมาในบางแห่ง ฉันยังไม่มีการฝึกอบรมอย่างเป็นทางการดังนั้นโปรดให้อภัยคำศัพท์หรืออุดมการณ์ผิด ๆ ฉันแค่พยายามเรียนรู้วิธีการปฏิบัติเพื่อปรับปรุงกระบวนการของเรา
21 agile  scrum 

3
วิธีอนุญาตนวัตกรรมในระเบียบวิธี Agile [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา มันเป็นสิ่งหนึ่งที่จะบอกว่าวิธีการเปรียวเป็นสิ่งที่ดีในการตั้งค่าที่ต้องการมีความเข้าใจหรือว่ามีนัยสำคัญความแปลกใหม่มีส่วนเกี่ยวข้อง แต่มันควรจะนำไปใช้ในกรณีที่จำเป็นต้องมีนวัตกรรมทันที? ถ้าใช่เป็นอย่างไร หากสิ่งที่คุณไตร่ตรองไม่เป็นที่รู้จักในอุตสาหกรรมหรือแม้แต่คิดว่าเป็นไปไม่ได้มันอาจเป็นเรื่องยากที่จะเข้าใจเรื่องราวของผู้ใช้และงานที่เกี่ยวข้อง ตัวอย่างเช่นมันจะเป็นประโยชน์แก่อัลเบิร์ตไอน์สไตน์ (หรือนายจ้างที่เขาสมมุติขึ้นเพื่อรายงาน) เพื่อคิดค้นทฤษฎีสัมพัทธภาพทั่วไปโดยการแบ่งมันออกเป็นมหากาพย์การวิ่งและงานต่างๆ หากคำตอบคือ "ใช่" แล้วที่พักแบบพิเศษใดบ้างที่ควรได้รับการจัดตั้งขึ้นเพื่อช่วยให้วิธีการแบบเปรียวทำงานได้ดีที่สุดกับวิธีการของ Einstein ในการบรรลุความเข้าใจด้านการปฏิวัติ? เพื่อให้เป็นตัวอย่างซอฟต์แวร์ที่เฉพาะเจาะจงลองนึกภาพปี 2008 และคุณต้องการใช้ WCF เพื่อให้ความสามารถในการพิมพ์COMETหรือ " long-polling " งานวิจัยทั้งหมดของคุณเกี่ยวกับ "งานก่อนหน้า" ไม่มีอะไรเกิดขึ้นและคุณยังอ่านบล็อกเกอร์ MSDN ว่าไม่สามารถทำได้ อีกครั้งการปรับแต่งหรือ "รสชาติ" ใดที่สามารถนำเข้าสู่เรื่องราวและงานของผู้ใช้เพื่อรองรับความคิดสร้างสรรค์ (หรือความกล้า) ของผู้ประกอบการนี้ หรือจะเป็นการดีกว่าที่จะสรุปว่าความพยายามนั้นเป็นนวัตกรรมใหม่ (ในปี 2008) มันเป็นสิ่งที่ดีที่สุดในฐานะการฝึกใช้รถถังคิดแบบไม่มีทิศทาง? ผู้ริเริ่มที่ดำเนินงานภายใต้การวิ่งสองสัปดาห์อย่างแน่นอนไม่ต้องการถูกยิงทุกครั้งที่เขาละทิ้งงานที่ต้องหยุดชะงัก ในทำนองเดียวกันเมื่อการวิ่งสิ้นสุดลงและไม่มีการส่งมอบรหัสการทำงานหรือวิธีการทำงานผู้ริเริ่มไม่ควรโดนผู้บริหาร จะต้องมีวิธีในการติดฉลากความพยายามในฐานะ "ความสำเร็จ" แม้ในสถานการณ์เหล่านี้ ในการวิ่งไล่ตาม "Dead End" ประเภทนี้อีกหนึ่งหรือสามครั้งผู้ริเริ่มอาจตีสิ่งที่ใช้งานได้ในที่สุด …
21 agile 

7
การบันทึกคำสั่ง SQL ในตารางสำหรับเรียกใช้งานภายหลังเป็นความคิดที่ไม่ดีหรือไม่?
การบันทึกคำสั่ง SQL ในตาราง MySQL สำหรับการเรียกใช้ภายหลังเป็นความคิดที่ไม่ดีหรือไม่? งบ SQL DELETE FROM users WHERE id=1จะพร้อมสำหรับการดำเนินการคือจะมีพารามิเตอร์เพื่อแลกเปลี่ยนหรืออะไรเช่นไม่มี ฉันคิดว่าฉันขี้เกียจ แต่ฉันคิดถึงความคิดนี้เพราะฉันกำลังทำงานในโครงการที่ต้องการงาน cron จำนวนเล็กน้อยที่จะเรียกใช้งานคำสั่ง SQL เป็นระยะ ๆ
21 mysql 

5
คุณจะย่อยสลายนวกรรมิกได้อย่างไร?
ให้บอกว่าฉันมีคลาสศัตรูและตัวสร้างจะมีลักษณะดังนี้: public Enemy(String name, float width, float height, Vector2 position, float speed, int maxHp, int attackDamage, int defense... etc.){} สิ่งนี้ดูไม่ดีนักเนื่องจากตัวสร้างมีพารามิเตอร์มากมาย แต่เมื่อฉันสร้างอินสแตนซ์ของศัตรูฉันต้องระบุทุกสิ่งเหล่านี้ ฉันต้องการคุณลักษณะเหล่านี้ในคลาส Enemy เพื่อให้สามารถวนซ้ำรายการของพวกเขาและรับ / ตั้งค่าพารามิเตอร์เหล่านี้ ฉันคิดว่าอาจจะ subclassing Enemy เป็น EnemyB, EnemyA ในขณะที่ hardcoding maxHp ของพวกเขาและคุณลักษณะเฉพาะอื่น ๆ แต่จากนั้นฉันก็จะสูญเสียการเข้าถึงคุณลักษณะ hardcoded ของพวกเขาหากฉันต้องการย้ำผ่านรายการ EnemyA ของ EnemyA และ EnemyB EnemyC ของ) ฉันแค่พยายามเรียนรู้วิธีการเขียนโค้ดให้สะอาด ถ้ามันสร้างความแตกต่างฉันทำงานใน Java …

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

3
ทำไมภาษาจำนวนมากจึงปฏิบัติต่อตัวเลขที่เริ่มต้นด้วยเลขฐานแปด
ฉันอ่านแล้วเลขฐานแปดมีประโยชน์อย่างไร และดูเหมือนว่า octals นั้นเป็นสิ่งที่มีประโยชน์กาลครั้งหนึ่งนานมาแล้ว หลายภาษาปฏิบัติกับตัวเลขที่อยู่ก่อนหน้าด้วย 0 เป็นฐานแปดดังนั้นตัวอักษร010จึงเป็น 8 จริง ๆ สองสามอย่างคือ JavaScript, Python (2.7) และ Ruby แต่ฉันไม่เห็นจริง ๆ ว่าทำไมภาษาเหล่านี้จึงต้องการเลขฐานแปดโดยเฉพาะอย่างยิ่งเมื่อมีการใช้สัญกรณ์ที่เป็นไปได้มากขึ้นในการแสดงจำนวนทศนิยมด้วย 0 ที่ไม่จำเป็น JavaScript เป็นภาษาฝั่งไคลเอ็นต์, octal ดูเหมือนว่าไม่มีประโยชน์เลย ทั้งสามมีความทันสมัยในแง่อื่นและฉันไม่คิดว่าจะมีรหัสมากนักโดยใช้สัญกรณ์ฐานแปดที่จะใช้งานไม่ได้โดยการลบ "คุณสมบัติ" นี้ออก ดังนั้นคำถามของฉันคือ: มีจุดใดในภาษาเหล่านี้ที่สนับสนุนตัวอักษรฐานแปด ถ้าตัวอักษรฐานแปดมีความจำเป็นทำไมไม่ใช้สิ่งที่ต้องการ0o10? ทำไมคัดลอกสัญกรณ์เก่าที่แทนที่กรณีการใช้งานที่มีประโยชน์มากกว่า?

7
การวิ่งแบบแย่งชิงกันหมายถึงการทำงานด้วยความเร็วที่เร็วที่สุด
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ เมื่อเร็ว ๆ นี้ฉันสัมภาษณ์กับ บริษัท ที่ทำ Agile, Scrum เพื่อความแม่นยำมากขึ้นและมีบางสิ่งที่ไม่เหมือน Agile สำหรับฉัน ฉันจะใช้กรณีหนึ่งที่ฉันสนใจเป็นพิเศษตอนนี้ที่การต่อสู้ของสrum ผู้จัดการโครงการหนึ่งที่ฉันคุยด้วย (ใช่ฉันบอกว่าผู้จัดการโครงการ) กล่าวอย่างภาคภูมิใจว่าคนในทีมของเธอเข้าใจ ("ได้รับการบอก" คือสิ่งที่ฉันเลือกจากบริบท) ที่คุณไม่ได้กลับบ้านเมื่อเวลาทำงานสิ้นสุดลง คุณกลับบ้านเมื่องานเสร็จไม่ว่าจะใช้เวลาเท่าไหร่ สิ่งที่ฉันได้อ่านในระหว่างบรรทัดคือเราบรรจุคุณลักษณะให้มากที่สุดเท่าที่จะเป็นไปได้ในการวิ่งและทำงานล่วงเวลาเพื่อให้มันเกิดขึ้น ตอนนี้ฉันยังไม่ได้ทำ Agile ในตอนนี้ (ทำงานกับสถาบันการเงินและหน่วยงานของรัฐซึ่งส่วนใหญ่ยังคงชอบน้ำตก) แต่ความเข้าใจของฉันคือ: sprint in Scrum เป็นชื่อสำหรับการทำซ้ำทั่วไปใน Agile; ทีมควรทำงานอย่างยั่งยืนและพยายามหลีกเลี่ยงการทำงานล่วงเวลาในระยะยาวเนื่องจากมีผลกระทบเฉพาะในช่วงเวลาสั้น ๆ และผลกระทบจะถูกแคระโดยปัญหาที่เกิดขึ้นในระยะยาว ข้อความของฉันถูกต้องหรือไม่ และฉันควรใช้การนำเสนอของผู้จัดการเป็นธงสีแดงหรือไม่?

7
ฉันจะจัดการชุดกฎและหมายเลขมายากลที่มีขนาดใหญ่มากในโปรแกรมของฉันได้อย่างไร
ฉันค่อนข้างใหม่ในการเขียนโปรแกรม (ฉันเป็นวิศวกรเครื่องกลโดยการค้า) และฉันกำลังพัฒนาโปรแกรมขนาดเล็กในช่วงเวลาหยุดทำงานของฉันที่สร้างชิ้นส่วน (solidworks) ตามการป้อนข้อมูลจากผู้คนต่าง ๆ จากโรงงาน จากอินพุตเพียงเล็กน้อย (6 ต่อแน่นอน) ฉันต้องทำการเรียก API หลายร้อยครั้งที่สามารถใช้พารามิเตอร์มากถึงสิบตัว ทั้งหมดสร้างขึ้นโดยชุดของกฎที่ฉันรวบรวมหลังจากสัมภาษณ์ทุกคนที่จัดการส่วนนั้น ส่วนกฎและพารามิเตอร์ของรหัสของฉันคือ 250 บรรทัดและเพิ่มขึ้น ดังนั้นวิธีที่ดีที่สุดในการรักษาและอ่านรหัสของฉันคืออะไร? ฉันจะแยกหมายเลขเวทย์มนตร์ทั้งหมดกฎทั้งหมดอัลกอริธึมและส่วนของขั้นตอนของรหัสได้อย่างไร ฉันจะจัดการกับ API ที่ละเอียดและละเอียดมากได้อย่างไร เป้าหมายหลักของฉันคือการสามารถมอบแหล่งข้อมูลให้ใครบางคนและให้พวกเขาเข้าใจในสิ่งที่ฉันทำ

6
ฟังก์ชั่นและ / หรือคลาสใดเป็นไปไม่ได้ที่จะทดสอบหน่วยและสาเหตุ
ข้อแก้ตัวหลักจากนักพัฒนาที่ไม่มีการทดสอบหน่วยที่ดีคือ "รหัสไม่ได้ถูกออกแบบในแบบทดสอบได้" ฉันพยายามที่จะเข้าใจประเภทของการออกแบบและรหัสที่ไม่สามารถทดสอบหน่วยได้

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