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

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

5
หนังสือ“ โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์” เป็นหนังสือที่ดีสำหรับโปรแกรมเมอร์ Java หรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา นี่อาจเป็นอัตนัยและมีแนวโน้มที่จะถูกปิด แต่ฉันก็ยังต้องการที่จะรู้ว่ามันมีประโยชน์จริงๆที่จะอ่านโครงสร้างและการตีความของโปรแกรมคอมพิวเตอร์ โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์ หนังสือเล่มนี้ไม่ได้ใช้ Java ไม่ใช่ว่าฉันต้องการเรียนรู้ Java ฉันแค่อยากรู้อยากเห็นว่ามันจะมีประโยชน์อ่านจะเป็นโปรแกรมเมอร์ที่ดีขึ้นและสิ่งที่เป็นสิ่งที่ฉันจะได้รับจากหนังสือหรือเป็นทางเลือกอื่น ๆ ของพวกเขาในหนังสือเล่มนี้เหมาะกับโปรแกรมเมอร์ Java?
14 learning  books 

6
เคล็ดลับเกี่ยวกับวิธีการแพร่กระจายแนวปฏิบัติที่เน้นวัตถุ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันทำงานให้กับ บริษัท ขนาดกลางที่มีนักพัฒนาประมาณ 250 คน น่าเสียดายที่หลายคนติดอยู่ในกระบวนการคิดและบางทีมส่งมอบแอปพลิเคชันสคริปต์ธุรกรรมขนาดใหญ่อย่างต่อเนื่องซึ่งในความเป็นจริงแล้วแอปพลิเคชันมีตรรกะมากมาย พวกเขายังไม่สามารถจัดการการพึ่งพาการออกแบบและจบลงด้วยบริการที่ขึ้นอยู่กับบริการจำนวนมากอีกตัวอย่าง (ตัวอย่างที่ชัดเจนของBig Ball of Mud ) คำถามของฉันคือคุณสามารถแนะนำวิธีกระจายความรู้ประเภทนี้ได้อย่างไร ฉันรู้ว่าพื้นผิวของปัญหาคือแอปพลิเคชันเหล่านี้มีสถาปัตยกรรมและการออกแบบที่ไม่ดี อีกปัญหาคือมีนักพัฒนาบางคนที่ต่อต้านการเขียนการทดสอบใด ๆ บางสิ่งที่ฉันทำเพื่อเปลี่ยนแปลงสิ่งนี้ (แต่ฉันล้มเหลวหรือการเปลี่ยนแปลงเล็กเกินไป) ใช้งานนำเสนอเกี่ยวกับหลักการออกแบบ (SOLID, clean code, ฯลฯ ) การประชุมเชิงปฏิบัติการเกี่ยวกับ TDD และ BDD ทีมการฝึกสอน (ซึ่งรวมถึงการใช้โซนาร์, findbugs, jdepend และเครื่องมืออื่น ๆ ) การพูดถึง IDE & Refactoring …

4
ฉันจะประมาณค่าเอนโทรปีของรหัสผ่านได้อย่างไร
การอ่านแหล่งข้อมูลต่าง ๆเกี่ยวกับความแข็งแกร่งของรหัสผ่านฉันพยายามสร้างอัลกอริทึมที่จะให้การประมาณคร่าวๆว่ามีรหัสผ่านของเอนโทรปีเท่าใด ฉันกำลังพยายามสร้างอัลกอริทึมที่ครอบคลุมมากที่สุด ณ จุดนี้ฉันมีรหัสเทียมเท่านั้น แต่อัลกอริทึมครอบคลุมสิ่งต่อไปนี้: ความยาวรหัสผ่าน ตัวละครซ้ำ รูปแบบ (ตรรกะ) ช่องว่างอักขระที่แตกต่างกัน (LC, UC, ตัวเลข, พิเศษ, ขยาย) การโจมตีพจนานุกรม ไม่ครอบคลุมถึงสิ่งต่อไปนี้และควรครอบคลุมด้วย (แต่ไม่สมบูรณ์): การสั่งซื้อ (สามารถสั่งรหัสผ่านอย่างเข้มงวดโดยเอาท์พุทของอัลกอริทึมนี้) รูปแบบ (อวกาศ) ทุกคนสามารถให้ข้อมูลเชิงลึกเกี่ยวกับอัลกอริทึมนี้ที่อ่อนแอ โดยเฉพาะทุกคนสามารถคิดว่าสถานการณ์ที่ให้อาหารรหัสผ่านเพื่ออัลกอริทึมจะประเมินค่าสูงความแข็งแรงของตนหรือไม่ การประเมินต่ำกว่าประเด็นมีน้อย อัลกอริทึม: // the password to test password = ? length = length(password) // unique character counts from password (duplicates discarded) uqlca = number of …

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

2
ฉันจะเลือกเครื่องมือการรวมอย่างต่อเนื่องได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันพบตารางเปรียบเทียบที่ยอดเยี่ยมนี้สำหรับเซิร์ฟเวอร์การรวมใน Wikipedia แต่ฉันไม่แน่ใจเล็กน้อยว่าจะจัดอันดับเครื่องมืออย่างไรกับความต้องการและความสนใจของฉัน แผนภูมิเองดูเหมือนว่าจะมีกล่องจำนวนมากที่ไม่รู้จักดังนั้นถ้าคุณสามารถอัปเดตใน Wikipedia ได้ก็สามารถทำได้เช่นกัน มีผลิตภัณฑ์ที่มีประสิทธิภาพสูงสุดสองสามอย่างหรือไม่ดังนั้นฉันจึงสามารถ จำกัด ตัวเลือกสี่หรือห้าตัวได้อย่างรวดเร็ว? ผลิตภัณฑ์ใดที่ดูเหมือนจะมีชุมชนผู้ใช้ที่ใหญ่ที่สุดและการปรับปรุงอย่างต่อเนื่องและการรวมเข้ากับเครื่องมือใหม่ ข้อเสนอโอเพ่นซอร์สนั้นดีที่สุดหรือมีเครื่องมือคุณภาพสูงที่สามารถจัดการได้อย่างยอดเยี่ยมสำหรับผู้ใช้คนเดียวที่บ้าน? การใช้ระบบหลายระบบ (เดสก์ท็อปหลักเซิร์ฟเวอร์เครือข่ายในบ้านเท่านั้นภายในเครื่องสมุดบันทึกส่วนตัวและที่ทำงานเครื่องเสมือนหลายเครื่องกระจายอยู่ทั่วทุกแห่ง) จะสร้างปัญหาและวิธีการจัดการได้อย่างไร

9
การจัดการกับ Fanboys [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา เราทุกคนอาจได้พบกับคนแบบนี้นักพัฒนาที่เพิ่งรู้ว่าภาษาของเขาเป็นภาษาที่แท้จริงและจะไม่ปิดบัง คุณทำอย่างไรกับคนแบบนี้? ฉันไม่ต้องการรุกรานใคร (โดยเฉพาะอย่างยิ่งเนื่องจากแฟนบอยในที่ทำงานของฉันเป็นผู้พัฒนาอาวุโส) แต่ฉันต้องการที่จะสามารถใช้ภาษาสคริปต์ที่ฉันเลือกเองเมื่อฉันต้องเขียนสคริปต์ที่ไม่เคยปรากฏในที่เก็บและไม่มีใครรู้ว่ามีอยู่จริง ความคิดที่ฉันต้องจัดการกับเรื่องนี้: หัวเราะออกไป - "ฮ่าฮ่าใช่บางทีภาษา X นั้นง่ายกว่านิดหน่อยฉันคิดว่าฉันเป็นนักทำโทษตัวเอง!" ไปกับมัน - ฉันชอบที่จะหลีกเลี่ยงสิ่งนี้เพราะฉันไม่สามารถลดลงในการผลิตที่เกี่ยวข้องกับการเลือกภาษาใหม่ ซ่อนภาษาของฉัน - เป็นโปรแกรมเมอร์ตู้เสื้อผ้าและซ่อนจอมอนิเตอร์ของฉันทุกครั้งที่ฉันเขียนสคริปต์หรือทำอะไรบางอย่างอัตโนมัติ คุณจะแนะนำอะไรสำหรับสถานการณ์นี้

5
โครงการแช่แข็ง - ฉันควรปล่อยให้คนหลังจากฉัน
ดังนั้นโครงการที่ฉันทำอยู่ตอนนี้จะกลายเป็นน้ำแข็งไปเรื่อย ๆ เป็นไปได้ว่าหากโครงการและเมื่อใดที่ unreezes อีกครั้งมันจะไม่ได้รับมอบหมายให้ฉันหรือใครจากทีมปัจจุบัน ที่จริงแล้วเราสืบทอดโครงการหลังจากที่ถูกแช่แข็งมาก่อน แต่ไม่มีทีมใดเหลืออยู่ก่อนที่จะช่วยให้เราเข้าใจแม้แต่ความต้องการพื้นฐานของโครงการดังนั้นเราจึงเสียเวลามากในการทำความรู้จักโครงการ คำถามของฉันคือสิ่งที่คุณคิดว่าเราควรทำเพื่อช่วยให้ผู้คนหลังจากที่เราเข้าใจความต้องการของโครงการที่ดีที่สุดสิ่งที่เราทำทำไมเราทำมัน ฯลฯ ฉันเปิดให้ความคิดอื่น ๆ ว่าทำไมเราควรออก บางแทร็กกับคนอื่น ๆ ที่จะทำงานในโครงการนี้ด้วย บางขั้นตอนที่เราทำไปแล้ว: เอกสารทางเทคนิค (ไม่เต็ม แต่อย่างน้อยก็มีบ้าง); ประวัติระบบควบคุมแหล่งที่มา การประมาณว่าส่วนใดของโครงการต้องมีการปรับปรุงและทำไมเราจึงคิดเช่นนั้น พวงของการทดสอบหน่วย ติดตามปัญหากับตั๋วทั้งหมดที่เราเคยทำ ( แก้ไข ) คุณคิดอย่างไรกับสิ่งที่เราเตรียมไว้แล้วและเราจะทำอะไรได้อีก

4
TDD พร้อมฟังก์ชัน SQL และการปรับเปลี่ยนข้อมูล
ในขณะที่ฉันเป็นโปรแกรมเมอร์มืออาชีพฉันไม่เคยได้รับการฝึกฝนอย่างเป็นทางการในวิศวกรรมซอฟต์แวร์ เมื่อฉันมาที่นี่เป็นประจำและบ่อยครั้งฉันสังเกตเห็นแนวโน้มในการเขียนการทดสอบหน่วยเมื่อเป็นไปได้และเนื่องจากซอฟต์แวร์ของฉันมีความซับซ้อนและซับซ้อนมากขึ้นฉันเห็นการทดสอบอัตโนมัติเป็นความคิดที่ดีในการช่วยแก้จุดบกพร่อง อย่างไรก็ตามงานของฉันส่วนใหญ่เกี่ยวข้องกับการเขียน SQL ที่ซับซ้อนแล้วประมวลผลผลลัพธ์ในบางวิธี คุณจะเขียนการทดสอบอย่างไรเพื่อให้แน่ใจว่า SQL ของคุณส่งคืนข้อมูลที่ถูกต้องตัวอย่างเช่น ถ้าข้อมูลไม่อยู่ภายใต้การควบคุมของคุณ (เช่นระบบของบุคคลที่สาม) คุณจะสามารถทดสอบรูทีนการประมวลผลของคุณได้อย่างมีประสิทธิภาพโดยไม่ต้องเขียนรีมข้อมูลหุ่นจำลองได้อย่างไร ทางออกที่ดีที่สุดที่ฉันคิดได้คือทำให้มุมมองข้อมูลที่ครอบคลุมกรณีส่วนใหญ่ จากนั้นฉันสามารถเข้าร่วมมุมมองเหล่านั้นกับ SQL ของฉันเพื่อดูว่ามันส่งคืนระเบียนที่ถูกต้องและดำเนินการมุมมองด้วยตนเองเพื่อดูว่าฟังก์ชั่นของฉัน ฯลฯ ทำในสิ่งที่พวกเขาควรจะทำหรือไม่ ถึงกระนั้นดูเหมือนว่ามากเกินไปและเป็นขุย; โดยเฉพาะการค้นหาข้อมูลเพื่อทดสอบกับ ...

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

3
คุณจะบอกได้อย่างไรว่าจะใช้รูปแบบคอมโพสิตหรือโครงสร้างแบบต้นไม้หรือการนำไปใช้ครั้งที่สาม
ฉันมีสองประเภทลูกค้า "ผู้สังเกตการณ์ " - ประเภทและ " Subject " -type ทั้งคู่เกี่ยวข้องกับลำดับชั้นของกลุ่มลำดับชั้นของกลุ่ม ผู้สังเกตการณ์จะได้รับ(ปฏิทิน) ข้อมูลจากกลุ่มที่เกี่ยวข้องกับตลอดทั้งลำดับชั้นที่แตกต่างกัน ข้อมูลนี้ถูกคำนวณโดยการรวมข้อมูลจากกลุ่ม 'ผู้ปกครอง'ของกลุ่มที่พยายามรวบรวมข้อมูล (แต่ละกลุ่มสามารถมีผู้ปกครองได้เพียงคนเดียว ) หัวเรื่องจะสามารถสร้างข้อมูล (ซึ่งผู้สังเกตการณ์จะได้รับ) ในกลุ่มที่พวกเขาเชื่อมโยงด้วย เมื่อข้อมูลถูกสร้างขึ้นในกลุ่ม 'ลูก' ของกลุ่มทั้งหมดจะมีข้อมูลเช่นกันและพวกเขาจะสามารถสร้างพื้นที่เฉพาะของข้อมูลในเวอร์ชันที่เป็นของตัวเองแต่ยังคงเชื่อมโยงกับข้อมูลดั้งเดิมที่สร้างขึ้น (ใน การใช้งานเฉพาะของฉันข้อมูลดั้งเดิมจะมีช่วงเวลาและพาดหัวในขณะที่กลุ่มย่อยระบุข้อมูลที่เหลือสำหรับผู้รับที่เชื่อมโยงโดยตรงกับกลุ่มของตน) อย่างไรก็ตามเมื่อหัวเรื่องสร้างข้อมูลจะต้องตรวจสอบว่าผู้สังเกตการณ์ที่ได้รับผลกระทบทั้งหมดมีหรือไม่ ข้อมูลที่ขัดแย้งกับสิ่งนี้หรือไม่ซึ่งหมายถึงฟังก์ชั่นวนซ้ำขนาดใหญ่เท่าที่ฉันสามารถเข้าใจได้ ดังนั้นฉันคิดว่าสิ่งนี้สามารถสรุปได้ถึงความจริงที่ว่าฉันต้องมีลำดับชั้นที่คุณสามารถขึ้นและลงและบางแห่งสามารถปฏิบัติต่อพวกเขาโดยรวมได้ (การเรียกซ้ำโดยทั่วไป) นอกจากนี้ฉันไม่ได้แค่มุ่งแก้ปัญหาที่ใช้งานได้ ฉันหวังว่าจะหาวิธีแก้ปัญหาที่ค่อนข้างง่ายต่อการเข้าใจ (อย่างน้อยต้องมีสถาปัตยกรรมอย่างชาญฉลาด) และยังมีความยืดหยุ่นเพียงพอที่จะรับฟังก์ชั่นเพิ่มเติมในอนาคตได้อย่างง่ายดาย มีรูปแบบการออกแบบหรือแนวปฏิบัติที่ดีในการแก้ปัญหานี้หรือปัญหาลำดับชั้นที่คล้ายกัน แก้ไข : นี่คือการออกแบบของฉัน: คลาส "Phoenix" ตั้งชื่ออย่างนั้นเพราะฉันยังไม่ได้นึกถึงชื่อที่เหมาะสม แต่นอกเหนือจากนี้ฉันต้องสามารถซ่อนกิจกรรมที่เฉพาะเจาะจงสำหรับผู้สังเกตการณ์ที่เฉพาะเจาะจงแม้ว่าพวกเขาจะแนบกับพวกเขาผ่านกลุ่ม นอกหัวข้อเล็กน้อย : โดยส่วนตัวแล้วฉันรู้สึกว่าฉันควรจะสามารถตัดปัญหานี้ให้กลายเป็นปัญหาเล็ก ๆ น้อย ๆ ได้ แต่มันจะช่วยฉันได้อย่างไร ฉันคิดว่าเป็นเพราะมันมีฟังก์ชั่นเรียกซ้ำหลายอย่างที่ไม่เกี่ยวข้องกันและประเภทลูกค้าที่แตกต่างกันซึ่งจำเป็นต้องได้รับข้อมูลในรูปแบบที่แตกต่างกัน ฉันห่อหัวของฉันไม่ได้จริงๆ …

5
การติดตาม TDD นำไปสู่ ​​DI อย่างหลีกเลี่ยงไม่ได้ไหม?
ฉันเรียนรู้ที่จะพัฒนา Test Driven Development (TDD), Dependency Injection (DI) และ Inversion of Control (IoC) ทั้งหมดในเวลาเดียวกัน เมื่อฉันเขียนรหัสโดยใช้ TDD ฉันมักจะจบลงด้วยการใช้ DI ใน Constructor ของชั้นเรียน ฉันสงสัยว่านี่เป็นเพราะฉันเรียนรู้ที่จะทำ TDD หรือถ้านี่เป็นผลข้างเคียงตามธรรมชาติของ TDD ดังนั้นคำถามของฉันคือ: ทำตามหลักการของ TDD และการทดสอบหน่วยการเขียนที่ไม่ได้ขึ้นอยู่กับบริการภายนอกที่นำไปสู่ ​​DI อย่างหลีกเลี่ยงไม่?

2
โครงสร้างแพ็กเก็ตของ Curiosity คืออะไร
สำหรับเครือข่ายดาวเคราะห์ของนาซาแพ็กเก็ตมีลักษณะอย่างไร? เห็นได้ชัดว่าเป็นรูปแบบของโปรโตคอลซ้ำซ้อนที่เก็บไว้ที่เครื่องรับและด้วยการสำรองข้อมูล มีเอกสารใด ๆ เกี่ยวกับโครงสร้างของแพ็คเก็ตหรือโปรโตคอลการสื่อสารซึ่งจะต้องขยายการสื่อสาร 14 นาที?

7
C # ให้“ เชือกน้อยกว่าให้คุณแขวน” กว่า C ++ หรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา โจ Spolsky ลักษณะ C ++ เป็น "เชือกพอที่จะแขวนตัวเอง" อันที่จริงเขาสรุป "Effective C ++" โดย Scott Meyers: มันเป็นหนังสือที่บอกว่าโดยทั่วไปแล้ว C ++ นั้นมีเชือกพอที่จะแขวนตัวคุณเองและจากนั้นอีกสองสามไมล์ของเชือกแล้วก็มียาฆ่าตัวตายสองตัวที่ปลอมตัวเป็น M & Ms ... ฉันไม่มีสำเนาของหนังสือเล่มนี้ แต่มีข้อบ่งชี้ว่าหนังสือส่วนใหญ่เกี่ยวข้องกับข้อผิดพลาดในการจัดการหน่วยความจำซึ่งดูเหมือนว่าจะมีการแสดงผลที่สงสัยใน C # เนื่องจากรันไทม์จัดการปัญหาเหล่านั้นให้คุณ นี่คือคำถามของฉัน: C # หลีกเลี่ยงข้อผิดพลาดที่หลีกเลี่ยงใน C ++ โดยการโปรแกรมอย่างระมัดระวังหรือไม่ ถ้าเป็นเช่นนั้นในระดับใดและพวกเขาหลีกเลี่ยง? มีข้อผิดพลาดใหม่ ๆ ใน C # ที่โปรแกรมเมอร์ C …

3
ใครสามารถอธิบายแบบแผนการเข้ารหัสของ C # ให้ฉันได้บ้าง
ฉันเพิ่งเริ่มทำงานกับ Unity3D และสคริปต์เป็นหลักด้วย C # ตามปกติแล้วฉันจะเขียนโปรแกรมใน Java ความแตกต่างก็ไม่ดีนัก แต่ฉันยังคงเรียกใช้หลักสูตรความผิดพลาดเพื่อให้แน่ใจว่าฉันกำลังอยู่ในเส้นทางที่ถูกต้อง อย่างไรก็ตามความอยากรู้ที่ยิ่งใหญ่ที่สุดของฉันกับ C # คือมันใช้อักษรตัวแรกของชื่อเมธอด (เช่น Java: getPrime()C #: GetPrime()aka: Pascal Case) มีเหตุผลที่ดีสำหรับสิ่งนี้หรือไม่? ฉันเข้าใจจากหน้าหลักสูตรความผิดพลาดที่ฉันอ่านซึ่งเห็นได้ชัดว่ามันเป็นแบบแผนสำหรับ. Net และฉันไม่มีทางที่จะเปลี่ยนแปลงมัน แต่ฉันอยากรู้ว่าทำไมมันถึงทำแบบนี้เมื่อเทียบกับกรณีอูฐปกติ (ญาติ?) ที่พูดว่า Java ใช้ หมายเหตุ: ฉันเข้าใจว่าภาษาต่าง ๆ มีระเบียบการเข้ารหัสของตนเอง (วิธีการ Python เป็นตัวพิมพ์เล็กทั้งหมดซึ่งใช้กับคำถามนี้ด้วย) แต่ฉันไม่เคยเข้าใจเลยว่าทำไมมันถึงไม่ทำเป็นมาตรฐาน

9
วิธีการแยกคลาสที่มีขนาดใหญ่และแน่นเข้าด้วยกันได้อย่างไร
ฉันมีชั้นเรียนขนาดใหญ่ที่มีโค้ดมากกว่า 2K บรรทัด (และเพิ่มขึ้นเรื่อย ๆ ) ที่ฉันอยากจะสร้างใหม่หากเป็นไปได้เพื่อให้มีการออกแบบที่เบาและสะอาดมากขึ้น เหตุผลที่มันใหญ่มากส่วนใหญ่เป็นเพราะคลาสเหล่านี้จัดการกับชุดของแผนที่ที่วิธีการส่วนใหญ่จำเป็นต้องเข้าถึงและวิธีการเชื่อมต่อกันมาก ฉันจะยกตัวอย่างชัดเจน: ฉันมีคลาสที่เรียกServerว่าจัดการข้อความขาเข้า มันมีวิธีการเช่นjoinChatroom, searchUsers, sendPrivateMessageและอื่น ๆ ทั้งหมดของวิธีการเหล่านี้จัดการแผนที่เช่นusers, chatrooms, servers... บางทีมันอาจจะดีถ้าฉันมีข้อความการจัดการเรียนที่เกี่ยวข้องกับห้องสนทนาการจัดการกับผู้ใช้อื่น ๆ แต่ปัญหาหลักที่นี่คือฉันต้องใช้แผนที่ทั้งหมดในวิธีการส่วนใหญ่ นั่นเป็นเหตุผลที่ตอนนี้พวกเขาทั้งหมดติดอยู่ในServerชั้นเรียนเพราะพวกเขาทั้งหมดพึ่งพาแผนที่ทั่วไปเหล่านี้และวิธีการเชื่อมต่อซึ่งกันและกัน ฉันจะต้องสร้างห้องเรียนแชท แต่มีการอ้างอิงถึงวัตถุอื่น ๆ ผู้ใช้คลาสอีกครั้งโดยอ้างอิงถึงวัตถุอื่นทั้งหมดเป็นต้น ฉันรู้สึกว่าฉันจะทำอะไรผิด

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