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

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

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

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

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

2
คงที่ไม่ดี แต่สิ่งที่เกี่ยวกับรูปแบบโรงงาน?
ฉันอยู่ในโครงการ TDD ดังนั้นฉันจึงพยายามยึดแนวทางที่ดีที่เกี่ยวข้องกับการพัฒนาประเภทนั้นให้มากที่สุด หนึ่งในนั้นคือหลีกเลี่ยงมากที่สุดคงที่และเป็นไปได้ทั่วโลก ฉันกำลังประสบปัญหานี้: ฉันมี "บทความ" วัตถุที่สามารถมี "ตัวเลือก" (เพิ่มเติม "บทความไมโคร") ที่เชื่อมโยงกับมัน ฉันไม่สามารถหาวิธีที่จะมีวิธีการที่ดีที่จะไม่ตอบโต้การผลิตหรือสร้างการสืบค้นมากเกินไปเพราะฉันจะอยู่ในสถานการณ์ที่ทุกอย่าง decoupled ดังนั้นโดยทั่วไปฉันจะต้องทำ 1 แบบสอบถามต่อวัตถุ จากมุมมองที่แท้จริงของฉันฉันเห็น 3 ตัวเลือก: 1) สร้างภายในบทความ: class Article { //[...] public function getArrOption(){ //Build an array of Options instance. //return an array of Options. } } Pro:ตรงไปข้างหน้า Const: Maintenability: ตอนนี้วัตถุบทความมีตรรกะการสร้างสำหรับวัตถุตัวเลือก ซึ่งอาจนำไปสู่การทำสำเนารหัส 2) การใช้ optionFactory …
13 php  tdd  static-access 

7
โปรแกรมเมอร์อาจมีเหตุผลอะไรบ้างที่ต้องการปิดไฮเปอร์เธรด
บริษัท ของฉันเพิ่งซื้อคอมพิวเตอร์ใหม่เพื่อแทนที่เครื่อง 2GB Windows XP รุ่นเก่า มีคนในทีมของฉันสังเกตเห็นว่าพวกเขามาพร้อมกับการปิดใช้งานไฮเปอร์เธรดและบอกให้ทุกคนรีบูตและเปิดใช้งาน มีประโยชน์ในการเขียนโปรแกรมบนเครื่องที่ปิดการใช้งานไฮเปอร์เธรดหรือไม่?
13 hardware 

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

4
`trigger_error` เทียบกับ` Throw Exception` ในบริบทของวิธีการเวทย์มนตร์ของ PHP
ฉันมีการอภิปรายกับเพื่อนร่วมงานที่ผ่านการใช้งานที่ถูกต้อง (ถ้ามี) ของtrigger_errorในบริบทของวิธีมายากล ตอนแรกฉันคิดว่าtrigger_errorควรหลีกเลี่ยงยกเว้นกรณีนี้ สมมติว่าเรามีคลาสด้วยวิธีหนึ่ง foo() class A { public function foo() { echo 'bar'; } } ตอนนี้บอกว่าเราต้องการที่จะให้อินเตอร์เฟซเดียวกันแน่นอน แต่ใช้วิธีการเวทย์มนตร์เพื่อจับการเรียกวิธีการทั้งหมด class B { public function __call($method, $args) { switch (strtolower($method)) { case 'foo': echo 'bar'; break; } } } $a = new A; $b = new B; $a->foo(); //bar $b->foo(); //bar …

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

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

7
อะไรทำให้“ การใช้งานไม่เหมาะสม” ของคุณสมบัติ javascript Eval? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว Eval เป็นคุณสมบัติทางภาษาที่มีการถกเถียงกันอย่างมาก Douglas Crockford แบนออกปฏิเสธมัน ฉันสงสัยว่าความเสี่ยงเฉพาะใดที่ Eval นำมาใช้ ตามคำถามนี้ , Improper use of eval opens up your code for injection attacks. อะไรคือการใช้คำสั่ง Eval ที่ไม่เหมาะสมและพวกเขาเปิดรูโหว่อะไร
13 javascript 


15
วิธีที่มีประสิทธิภาพ / มีประสิทธิภาพมากที่สุดในการพัฒนาแอปพลิเคชั่นที่มีหลายคนโดยไม่มีการควบคุมแหล่งที่มาคืออะไร?
รู้เบื้องต้นเกี่ยวกับสถานการณ์ของฉัน ฉันทำงานให้กับ บริษัท พัฒนาเว็บไซต์ขนาดเล็ก เรามีทีมนักพัฒนา ASP.NET สี่คนซึ่งรวมถึงฉันด้วย โครงการของเราเกือบทั้งหมด (> 98%) เป็นโครงการแบบคนเดียวที่ใช้เวลาดำเนินการประมาณ 1-4 สัปดาห์ เราไม่ได้ใช้การควบคุมแหล่งที่มาหรือรุ่น สิ่งเดียวที่เรามีคือโฟลเดอร์แชร์บนเซิร์ฟเวอร์ภายในที่มีแหล่งข้อมูลล่าสุด (== แหล่งที่มาของแอปพลิเคชั่นที่ใช้งานจริง) ของโครงการทั้งหมด ในโอกาสที่หายากที่เราจำเป็นต้องทำงานในโครงการเดียวกันที่มีมากกว่าหนึ่งคนเราใช้ ... นอกเหนือจากการเปรียบเทียบ นักพัฒนาหนึ่งหรือสองครั้งต่อวันถามพวกเขาว่าพวกเขามีรุ่นที่รวบรวมและจากนั้นพวกเขาประสานรหัสของพวกเขาโดยใช้การเปรียบเทียบ เมื่อมีคนเพียงสองคนกำลังทำงานในโครงการนี้ทำงานได้ "ค่อนข้างดี" แต่ทันทีที่นักพัฒนารายที่สามเข้าสู่กระบวนการก็จะกลายเป็นขยะที่ไม่สามารถจัดการได้ โดยเฉพาะอย่างยิ่งเมื่อทุกคนเริ่มทำการเปลี่ยนแปลงฐานข้อมูล ฉัน (และหนึ่งหรือสองของนักพัฒนาเพื่อนของฉัน) ได้บอกเจ้านายของฉันหลายครั้งแล้วว่าเราควรเริ่มใช้รูปแบบของแหล่งที่มาและการควบคุมเวอร์ชันเช่น Git, Mercurial หรือ TFS (หัวหน้าของเราเป็นคนที่มีใจรักของ Microsoft) น่าเสียดายที่เจ้านายของฉันไม่เห็นประโยชน์ของการเปลี่ยนไปใช้ระบบควบคุมแหล่งที่มาและเวอร์ชั่นเพราะในสายตาของเขาทุกอย่างทำงานได้ดีในตอนนี้และเขาไม่ต้องการลงทุนเวลาและเงินในการตั้งค่าระบบใหม่และทำให้แน่ใจว่าทุกคน รู้วิธีการใช้งาน แม้ว่าฉันจะอธิบายข้อดี (เช่นการทำงานร่วมกันที่ง่ายขึ้นแอปพลิเคชันรุ่นต่าง ๆ วิธีที่ปลอดภัยกว่าในการเปลี่ยนรหัส ... ) สำหรับเขาเขายังไม่คิดว่ามันเป็นสิ่งที่เราต้องการ ในบรรดานักพัฒนาทั้งสี่มีเพียงสองคนเท่านั้น (รวมถึงฉัน) ที่มีประสบการณ์กับการควบคุมแหล่งที่มา (Git) และประสบการณ์นั้นมีจำกัดมาก ฉันรู้วิธีโคลนที่เก็บ …

3
เราจะปรับปรุงการศึกษาและการฝึกอบรมโปรแกรมเมอร์โดยรวมได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา เมื่อสัปดาห์ที่แล้วฉันเพิ่งดูบทสัมภาษณ์ที่น่าอัศจรรย์นี้โดย Kevin Rose แห่ง Phillip Rosedale แห่ง Second Life และพวกเขามีการสนทนาที่น่าอัศจรรย์เกี่ยวกับวิธีการค้นหาจ้างและระบุโปรแกรมเมอร์ที่ดีและยากที่จะหาคนดี ซึ่งทำให้ฉันคิดเกี่ยวกับวิธีการสอนของโปรแกรมเมอร์ สำหรับพวกเราส่วนใหญ่เรารวมตัวเองเราเรียนด้วยตนเอง ซึ่งเป็นเรื่องดีเกี่ยวกับการเป็นโปรแกรมเมอร์ทุกคนสามารถเรียนรู้และพัฒนาทักษะ แต่นี่ก็หมายความว่าไม่มีมาตรฐานที่แท้จริงของสิ่งที่โปรแกรมเมอร์ดี / และสิ่งที่ชนิดของสภาพแวดล้อมที่สนับสนุนการเติบโตของทักษะการเขียนโปรแกรม นี่ไม่ใช่คำถามมากนัก แต่เป็นเพียงความปรารถนาในตัวฉันเพื่อดูว่าเราสามารถเปลี่ยนวัฒนธรรมของการเขียนโปรแกรมและผู้จัดการของการเขียนโปรแกรมได้อย่างไรเพื่อให้การศึกษาและการพัฒนาตนเองดีขึ้น มีถนนมากมายสำหรับการศึกษาต่อเนื่องวิดีโอ youtube หนังสือการประชุม แต่เนื่องจากลักษณะประสบการณ์ของสิ่งที่เราทำมันไม่ชัดเจนว่าสิ่งสำคัญในการเรียนรู้และการเป็นผู้เชี่ยวชาญ ลองดูที่ The Joel 12 Steps การทดสอบโจเอล คุณใช้การควบคุมแหล่งที่มาหรือไม่? คุณสามารถสร้างบิลด์ในขั้นตอนเดียวได้หรือไม่? คุณสร้างงานสร้างรายวันหรือไม่? คุณมีฐานข้อมูลบั๊กหรือไม่ คุณแก้ไขข้อบกพร่องก่อนที่จะเขียนรหัสใหม่หรือไม่? คุณมีตารางที่ทันสมัยหรือไม่? คุณมีสเป็คหรือไม่? โปรแกรมเมอร์มีสภาพการทำงานที่เงียบหรือไม่? คุณใช้เครื่องมือเงินที่ดีที่สุดที่สามารถซื้อได้หรือไม่? คุณมีผู้ทดสอบหรือไม่ ผู้สมัครใหม่เขียนรหัสในระหว่างการสัมภาษณ์หรือไม่? คุณทำการทดสอบการใช้งานในห้องโถงหรือไม่? ฉันคิดว่าสิ่งเหล่านี้มีค่าที่สำคัญ แต่เนื่องจากสิ่งที่ฉันเรียกว่า Experiential …

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

10
ความแตกต่างระหว่างโปรแกรมเมอร์ที่ดีและโปรแกรมเมอร์ที่ประสบความสำเร็จทางการเงินคืออะไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา อะไรคือความแตกต่างระหว่างคนอย่าง Zukerberg, Page และ Brin ซึ่งเป็นโปรแกรมเมอร์และประสบความสำเร็จทางการเงินเป็นพิเศษและโปรแกรมเมอร์ที่เก่งคนอื่น ๆ ที่ไม่ประสบความสำเร็จทางการเงินมาก (เช่นพนักงานส่วนใหญ่ที่ facebook และ google)

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