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

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

11
ฉันควรหยุดใช้คำว่า C / C ++ หรือไม่
ฉันเข้าใจ C และ C ++ เป็นภาษาที่แตกต่างกัน แต่เมื่อฉันเรียนรู้ C ++ ฉันมักจะบอกเสมอว่าC เป็นชุดย่อยของ C ++หรือ C ++ คือ C พร้อมคลาส และนั่นเป็นเรื่องจริงจนกระทั่งการปรากฏตัวของ C ++ x0, C ++ 11 (หรือ C ++ ที่ทันสมัยโดยทั่วไป 11/14/17) อันที่จริง (โดยเฉพาะเมื่อทำงานกับระบบฝังตัว) มีโอกาสมากที่จะพบรหัสที่เขียนใน C ++ แต่มีชิ้นส่วนจำนวนมากที่เขียนด้วยภาษา C ล้วนๆ ที่นี่ฉันมีคำถามหลายข้อ: ฉันควรหยุดใช้คำว่า C / C ++ หรือไม่ หากคำตอบของ # 1 คือใช่ฉันจะเรียกโปรแกรมที่ใช้ผสม C …
140 c++  c  terminology  c++11 

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

8
ฉันจะทำให้คนหยุดการขับรถมอเตอร์ไซค์ (เน้นเรื่องเล็ก ๆ น้อย ๆ ) ได้อย่างไร?
ฉันได้รับมอบหมายให้สอน codebase ใหม่ให้กับทีมอื่น แต่ฉันก็ยังประสบปัญหาอยู่ เมื่อใดก็ตามที่ฉันไปจริงเดินผ่านรหัสกับคนที่เราไม่ได้ไกลมากก่อนที่จะออกกำลังกายทั้ง devolves เป็นbikeshedding (สมาชิกขององค์กรที่ให้น้ำหนักสัดส่วนกับปัญหาเล็ก ๆ น้อย ๆ ) การออกกำลังกาย เนื่องจากพวกเขาไม่รู้จัก codebase แต่คิดว่าพวกเขาต้องการช่วยปรับปรุงพวกเขาจึงมุ่งเน้นไปที่สิ่งที่พวกเขาสามารถเข้าใจได้: Why is that named that? (2 นาทีเพื่ออธิบายสาเหตุที่ตั้งชื่อนั้นใหม่ 10 นาทีอภิปรายชื่อใหม่) Why is that an abstract base class rather than an interface? (เพื่ออธิบาย 2 นาที, 10+ นาทีอภิปรายถึงข้อดีของการตัดสินใจนี้) ... และต่อไป ตอนนี้ไม่ได้รับฉันผิด - ชื่อที่ดีและดีการออกแบบที่สอดคล้องกันมีความสำคัญ แต่เราไม่เคยได้พูดคุยเกี่ยวกับสิ่งที่รหัสจริงไม่หรือวิธีการที่ระบบการออกแบบในลักษณะที่มีความหมายใด ๆ ฉันได้ทำผู้ตัดสินการประชุมเพื่อให้ผู้คนหลุดพ้นจากการเสียสละเหล่านี้ แต่พวกเขาหายไป …

11
มีสิ่งใดที่เหมือนกับการทดสอบหน่วยมากเกินไปหรือไม่?
ฉันได้รับมอบหมายให้เขียนการทดสอบหน่วยสำหรับแอปพลิเคชันที่มีอยู่ หลังจากเสร็จไฟล์แรกของฉันฉันมีรหัสทดสอบ 717 บรรทัดสำหรับรหัสต้นฉบับ 419 บรรทัด อัตราส่วนนี้จะไม่สามารถจัดการได้เมื่อเราเพิ่มการครอบคลุมโค้ดของเราหรือไม่? ความเข้าใจของฉันเกี่ยวกับการทดสอบหน่วยคือการทดสอบแต่ละวิธีในชั้นเรียนเพื่อให้แน่ใจว่าทุกวิธีทำงานตามที่คาดไว้ อย่างไรก็ตามในคำขอดึงนำเทคโนโลยีของฉันตั้งข้อสังเกตว่าฉันควรมุ่งเน้นไปที่การทดสอบในระดับที่สูงขึ้น เขาแนะนำการทดสอบ 4-5 กรณีการใช้งานที่มักใช้กับชั้นเรียนที่มีปัญหามากกว่าการทดสอบแต่ละฟังก์ชั่นอย่างละเอียดถี่ถ้วน ฉันเชื่อความคิดเห็นของผู้นำทางเทคโนโลยีของฉัน เขามีประสบการณ์มากกว่าที่ฉันทำและเขามีสัญชาตญาณที่ดีกว่าเมื่อพูดถึงการออกแบบซอฟต์แวร์ แต่ทีมหลายคนเขียนการทดสอบอย่างไรสำหรับมาตรฐานที่คลุมเครือ นั่นคือฉันจะรู้ได้อย่างไรว่าเพื่อน ๆ ของฉันและฉันแบ่งปันแนวคิดเดียวกันกับ "กรณีการใช้งานทั่วไป" สำหรับฉันความคุ้มครองการทดสอบหน่วย 100% เป็นเป้าหมายที่สูงส่ง แต่แม้ว่าเราจะทำได้เพียง 50% เราก็จะรู้ว่า 100% ของการครอบคลุม 50% นั้น มิฉะนั้นการเขียนการทดสอบสำหรับบางส่วนของไฟล์แต่ละไฟล์จะทำให้มีพื้นที่ว่างมากในการโกง
139 unit-testing  tdd 

14
เมื่อใดจึงเหมาะสมที่จะไม่ทำการทดสอบหน่วย
ฉันทำงานใน บริษัท เล็ก ๆ ในฐานะนักพัฒนาเดี่ยว ฉันเป็นนักพัฒนาเพียงคนเดียวที่ บริษัท จริง ๆ แล้ว ฉันมีโครงการขนาดใหญ่หลายโครงการที่ฉันเขียนและดูแลรักษาอย่างสม่ำเสมอและไม่มีโครงการใดที่จะทดสอบได้ เมื่อฉันเริ่มโครงการใหม่ฉันมักจะสงสัยว่าฉันควรลองวิธีการของ TDD หรือไม่ ดูเหมือนความคิดที่ดี แต่ฉันก็ไม่สามารถพิสูจน์ได้ว่างานพิเศษที่เกี่ยวข้อง ฉันทำงานหนักเพื่อที่จะคิดล่วงหน้าในการออกแบบ ฉันรู้ว่าวันหนึ่งนักพัฒนาซอฟต์แวร์รายอื่นจะต้องรักษารหัสไว้หรืออย่างน้อยก็ต้องแก้ไขปัญหา ฉันทำให้สิ่งต่าง ๆ เรียบง่ายที่สุดเท่าที่จะเป็นไปได้และฉันก็แสดงความคิดเห็นและบันทึกสิ่งต่าง ๆ ที่จะเข้าใจได้ยาก และความจริงก็คือโครงการเหล่านี้ไม่ใหญ่หรือซับซ้อนจนผู้พัฒนาที่ดีต้องดิ้นรนเพื่อทำความเข้าใจ ตัวอย่างมากมายที่ฉันเคยเห็นจากการทดสอบลงไปที่ minutiae ซึ่งครอบคลุมทุกส่วนของโค้ด เนื่องจากฉันเป็นนักพัฒนาเพียงคนเดียวและฉันใกล้ชิดกับรหัสในโครงการทั้งหมดจึงมีประสิทธิภาพมากขึ้นในการทำตามรูปแบบการทดสอบการเขียนและทดสอบด้วยตนเอง ฉันยังพบว่าข้อกำหนดและฟีเจอร์เปลี่ยนไปบ่อยพอที่การทดสอบจะเพิ่มจำนวนครั้งของการลากในโครงการ เวลาที่ใช้เพื่อแก้ไขความต้องการทางธุรกิจ ดังนั้นฉันจะได้ข้อสรุปเดียวกันทุกครั้ง ผลตอบแทนการลงทุนต่ำเกินไป ฉันมีการตั้งค่าการทดสอบเป็นครั้งคราวเพื่อให้แน่ใจว่าฉันเขียนอัลกอริทึมอย่างถูกต้องเช่นการคำนวณจำนวนปีที่มีคนทำงานที่ บริษัท ตามวันที่เช่าของพวกเขา แต่จากจุดยืนของการครอบคลุมโค้ดฉันได้ครอบคลุมโค้ดประมาณ 1% ในสถานการณ์ของฉันคุณจะยังคงหาวิธีที่จะทำให้การทดสอบหน่วยเป็นแบบฝึกหัดปกติหรือฉันเป็นธรรมในการหลีกเลี่ยงค่าใช้จ่ายที่? ปรับปรุง: บางสิ่งเกี่ยวกับสถานการณ์ของฉันที่ฉันออกไป: โครงการของฉันคือเว็บแอปพลิเคชันทั้งหมด เพื่อให้ครอบคลุมรหัสทั้งหมดของฉันฉันต้องใช้การทดสอบ UI อัตโนมัติและนั่นคือพื้นที่ที่ฉันยังไม่เห็นประโยชน์ที่ยอดเยี่ยมกว่าการทดสอบด้วยตนเอง
138 unit-testing  tdd 

15
ทำไมภาษาที่มีการจัดการหน่วยความจำเช่น Java, Javascript และ C # จึงยังคงรักษาคำหลัก `ใหม่ 'อยู่
newคำหลักในภาษาเช่น Java, JavaScript, และ C # สร้างตัวอย่างใหม่ของชั้นเรียน ดูเหมือนว่าไวยากรณ์นี้จะได้รับการสืบทอดมาจาก C ++ ซึ่งnewมีการใช้เฉพาะเพื่อจัดสรรอินสแตนซ์ใหม่ของคลาสบนฮีปและส่งกลับตัวชี้ไปยังอินสแตนซ์ใหม่ ใน C ++ นี่ไม่ใช่วิธีเดียวในการสร้างวัตถุ คุณยังสามารถสร้างวัตถุบนสแต็กโดยไม่ต้องใช้new- และในความเป็นจริงวิธีการสร้างวัตถุนี้เป็นเรื่องธรรมดามากใน C ++ ดังนั้นมาจากพื้นหลัง C ++ newคำสำคัญในภาษาเช่น Java, Javascript และ C # ดูเป็นธรรมชาติและชัดเจนสำหรับฉัน จากนั้นฉันก็เริ่มเรียนรู้ Python ซึ่งไม่มีnewคำหลัก ใน Python อินสแตนซ์ถูกสร้างโดยการเรียกนวกรรมิกเช่น: f = Foo() ในตอนแรกสิ่งนี้ดูจะยากสำหรับฉันจนกว่ามันจะเกิดขึ้นกับฉันว่า Python ไม่มีเหตุผลnewเพราะทุกอย่างเป็นวัตถุดังนั้นจึงไม่จำเป็นต้องแยกแยะระหว่างไวยากรณ์ตัวสร้างต่าง ๆ แต่แล้วฉันก็คิดว่า - จุดประสงค์newใน Java คืออะไร? ทำไมเราควรจะพูดว่าObject o = …

7
การค้นหาเหมาะสมกับอินเทอร์เฟซ RESTful อย่างไร
เมื่อออกแบบอินเตอร์เฟส RESTful ซีแมนทิกส์ของประเภทคำขอจะถือว่ามีความสำคัญต่อการออกแบบ GET - รายการคอลเลกชันหรือดึงองค์ประกอบ PUT - แทนที่คอลเลกชันหรือองค์ประกอบ POST - สร้างคอลเล็กชันหรือองค์ประกอบ DELETE - เอออืมลบคอลเลกชันหรือองค์ประกอบ อย่างไรก็ตามสิ่งนี้ดูเหมือนจะไม่ครอบคลุมแนวคิดของ "การค้นหา" เช่นในการออกแบบชุดบริการเว็บที่สนับสนุนไซต์หางานคุณอาจมีข้อกำหนดต่อไปนี้: รับโฆษณางานบุคคล รับไปdomain/Job/{id}/ สร้างงานโฆษณา โพสต์ถึงdomain/Job/ อัปเดตงานโฆษณา ใส่ลงไปdomain/Job/ ลบโฆษณางาน ลบไปที่domain/Job/ "รับงานทั้งหมด" ก็ง่าย: รับไปdomain/Jobs/ อย่างไรก็ตามงาน "การค้นหา" ตกอยู่ในโครงสร้างนี้อย่างไร คุณสามารถอ้างว่าเป็น "รูปแบบรายการ" และใช้เป็น: รับไปdomain/Jobs/ อย่างไรก็ตามการค้นหาอาจซับซ้อนและเป็นไปได้ทั้งหมดในการสร้างการค้นหาที่สร้างสตริง GET ที่ยาว นั่นคือการอ้างอิงคำถาม SO ที่นี่มีปัญหาในการใช้สตริง GET ที่มีความยาวมากกว่า 2000 ตัวอักษร ตัวอย่างอาจอยู่ในการค้นหาแบบเหลี่ยมเพชรพลอย - ดำเนินการต่อตัวอย่าง "job" …

25
มันเป็น "ปกติ" สำหรับคนที่จะไม่ทำงาน?
หลังจากจบการศึกษาจากวิทยาลัยฉันได้รับการว่าจ้างเป็นโปรแกรมเมอร์รุ่นพี่เมื่อไม่กี่ปีที่ผ่านมา ฉันสังเกตเห็นอย่างรวดเร็วว่าฉันมีระดับความเร็วกว่าโปรแกรมเมอร์คนอื่น ๆ ดูเหมือนว่าจะเป็นเพราะฉันไม่ต้องเสียเวลา "ทั่วไป" คนส่วนใหญ่ดูเหมือนว่าจะเพลิดเพลินไปกับการจ้องมองที่เพดานการเรียกดู YouTube, Facebook และเว็บไซต์แบบสุ่มและโดยทั่วไปแล้วการทำงานในหนึ่งวันฉันมักจะทำงานในหนึ่งชั่วโมง ฉันมั่นใจ 100% ว่าพวกเขาจะสามารถทำงานได้ภายในหนึ่งชั่วโมงเช่นกันหากพวกเขามุ่งเน้น ฉันได้รับการเลื่อนตำแหน่งอย่างรวดเร็วให้กับนักพัฒนาอาวุโสและอีกไม่นานจะเป็นหัวหน้าทีมและตอนนี้ฉันได้แทนที่คนจำนวนมากด้วยการจ้างงานใหม่ ตอนนี้สถานการณ์เป็นที่ยอมรับมากขึ้น แต่ถึงกระนั้นฉันคิดว่ามันอาจจะดีกว่ามาก ฉันอดไม่ได้ที่จะสังเกตว่าทุกคนดูเหมือนว่าจะเป็นแบบนี้ "ปกติ" เจ้านายของฉันทุกคนไม่ได้กังวลเกี่ยวกับเรื่องนี้และพวกเขาก็ดูเหมือนจะทำงานเล็กน้อยต่ออะไรเลย ฉันมักจะมีเวลาที่ยากลำบากในการหาพวกเขาพวกเขามาถึงช้ากว่าที่พวกเขาควรจะและออกก่อน เห็นได้ชัดว่าไม่มีอะไรที่ฉันสามารถทำได้ในกรณีนี้เนื่องจากพวกเขาอยู่เหนือฉัน แต่นี่คือ "บรรทัดฐาน" ในทุก บริษัท หรือว่าฉันจบลงด้วยสิ่งที่แย่มาก (นี่เป็นประสบการณ์การทำงานครั้งแรกของฉัน)? ฉันจะ "กลายเป็นเหมือนพวกเขา" ในอีกไม่กี่ปีข้างหน้าหรือไม่?
137 productivity 

2
รูปแบบการตั้งชื่อไฟล์ Python?
ฉันเคยเห็นส่วนนี้ของ PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-names ฉันยังไม่ชัดเจนว่านี่หมายถึงชื่อไฟล์ของโมดูล / คลาส / แพ็คเกจหรือไม่ หากฉันมีตัวอย่างหนึ่งของชื่อไฟล์ควรเป็นตัวพิมพ์เล็กทั้งหมดที่มีขีดล่างถ้าเหมาะสมหรือไม่ หรืออย่างอื่น?

10
ในการพัฒนาความรู้การเขียนโปรแกรมลึก
บางครั้งฉันเห็นคำถามเกี่ยวกับคดีขอบและความแปลกประหลาดอื่น ๆ ใน Stack Overflow ที่ตอบได้ง่ายจาก Jon Skeet และ Eric Lippert แสดงให้เห็นถึงความรู้อย่างลึกซึ้งเกี่ยวกับภาษาและความซับซ้อนมากมาย เช่นนี้: คุณอาจจะคิดว่าในการที่จะใช้foreachห่วงคอลเลกชันที่คุณกำลังทำซ้ำมากกว่านั้นจำเป็นต้องใช้หรือIEnumerable IEnumerable<T>แต่มันกลับกลายเป็นว่านั่นไม่ใช่ข้อกำหนดจริงๆ สิ่งที่จะต้องเป็นว่าประเภทของคอลเลกชันจะต้องมีวิธีการที่เรียกว่าประชาชนGetEnumeratorและที่จะต้องกลับบางชนิดที่มีความทะเยอทะยานทรัพย์สินของประชาชนที่เรียกว่าCurrentและวิธีการที่ประชาชนที่ส่งกลับMoveNext boolหากคอมไพเลอร์สามารถพิจารณาได้ว่าข้อกำหนดทั้งหมดนั้นเป็นไปตามนั้นรหัสนั้นจะถูกสร้างขึ้นเพื่อใช้วิธีการเหล่านั้น เฉพาะในกรณีที่ความต้องการเหล่านั้นจะไม่พบเราจะตรวจสอบเพื่อดูว่าวัตถุที่นำไปปฏิบัติหรือIEnumerableIEnumerable<T> นั่นเป็นเรื่องที่ควรรู้ ฉันเข้าใจได้ว่าทำไม Eric ถึงรู้เรื่องนี้ เขาอยู่ในทีมคอมไพเลอร์ดังนั้นเขาต้องรู้ แต่สิ่งที่เกี่ยวกับผู้ที่แสดงให้เห็นถึงความรู้ลึก ๆ ที่ไม่ได้อยู่ภายใน ปุถุชนเพียง (ที่ไม่ได้อยู่ในทีมคอมไพเลอร์ C #) หาข้อมูลเกี่ยวกับสิ่งนี้ได้อย่างไร โดยเฉพาะมีวิธีการที่คนเหล่านี้ใช้เพื่อรูทความรู้ดังกล่าวสำรวจและทำให้เป็นระบบ (ทำให้เป็นของตัวเอง) หรือไม่
136 code-quality 

13
รูปแบบการออกแบบที่ขมวดคิ้วอยู่หรือไม่?
ฉันได้พูดคุยกับหนึ่งในนักพัฒนาอาวุโสของเราที่อยู่ในธุรกิจมา 20 ปี เขาเป็นที่รู้จักกันดีในออนแทรีโอสำหรับบล็อกที่เขาเขียน สิ่งที่แปลกคือสิ่งที่เขาบอกฉัน: เขาบอกว่ามีชิ้นส่วนของรหัสที่เป็นฝันร้ายที่จะทำงานด้วยเพราะมันถูกเขียนจากตำราเรียนและไม่ได้คำนึงถึงโลกแห่งความจริง การเพิ่มฟิลด์ใหม่ลงใน UI / ฐานข้อมูล / ชั้นข้อมูลใช้เวลา 2-3 ชั่วโมงในการทำขณะที่รหัสของเขาใช้เวลา 30 นาที อีกสิ่งหนึ่งก็คือเขาหลีกเลี่ยงรูปแบบการออกแบบเพราะโปรแกรมเมอร์ส่วนใหญ่ไม่เข้าใจพวกเขาและพวกเขาไม่เก่งในด้านการบำรุงรักษา นอกจากนี้ยังมีแนวคิดที่ว่านักพัฒนาเว็บส่วนใหญ่ในแคนาดาต้องการให้ตัวแบบข้อมูลของพวกเขาสืบทอดมาจากคลาส Data Layer แทนที่จะทำให้มันโดดเดี่ยว ฉันถามเขาว่า "มันเป็นมาตรฐานอุตสาหกรรมหรือไม่ที่จะแยกโมเดลออกจากชั้นข้อมูล?" เขาพูดบางครั้ง แต่คนส่วนใหญ่ที่นี่ไม่ชอบทำเพราะมันทำงานมากเกินไป ดูเหมือนว่าเหตุผลของเขาที่ไม่เข้ารหัสโดยใช้วิธีปฏิบัติที่ดีที่สุดคือเพราะมันเป็นฝันร้ายการบำรุงรักษาพนักงานของเราสองคนเข้าใจ (นอกเหนือจากตัวฉันเอง) และทำงานช้าถ้าคุณต้องการผลักดันฟีเจอร์หรือฟิลด์ใหม่ ๆ ในเวลาไม่กี่วัน เวลา. มันแปลกมากที่ได้ยินความเห็นเช่นนี้เนื่องจาก Stack Overflow สนับสนุนให้คนส่วนใหญ่ปฏิบัติตามมาตรฐานอุตสาหกรรม ปัญหาที่เราถูกบังคับให้ต้องทำการเปลี่ยนแปลงฟิลด์และฟีเจอร์ใหม่ ๆ ในเวลาไม่กี่วันหรือไม่ซึ่งเป็นไปไม่ได้ที่จะสรุปรูปแบบที่มั่นคงที่ยืดหยุ่นเพียงพอหรือไม่ นั่นดูเหมือนจะเป็นส่วนสำคัญของสิ่งที่ฉันเข้าใจจากเรื่องนี้ คุณทำอะไรกับข้อความเหล่านี้?

10
เป็นความคิดที่ดีที่จะบังคับให้มีการรวบรวมขยะเมื่อใด
ดังนั้นผมอ่านคำถามเกี่ยวกับการบังคับให้ C # เก็บขยะในการทำงานที่เกือบทุกคำตอบเดียวเหมือนกัน: คุณสามารถทำมัน แต่คุณไม่ควร - ยกเว้นบางกรณีที่หายากมาก น่าเศร้าที่ไม่มีใครมีรายละเอียดเกี่ยวกับกรณีเช่นนี้ คุณช่วยบอกฉันได้ไหมว่ามันเป็นความคิดที่ดีหรือสมเหตุสมผลในการจัดเรียงขยะ? ฉันไม่ได้ขอเฉพาะกรณี C # แต่ทุกภาษาโปรแกรมที่มีตัวเก็บขยะ ฉันรู้ว่าคุณไม่สามารถบังคับให้ GC กับทุกภาษาเช่น Java ได้ แต่ลองสมมติว่าคุณทำได้

17
เป็นการดีกว่าที่จะส่งคืนค่า NULL หรือค่าว่างจากฟังก์ชัน / เมธอดที่ไม่มีค่าส่งคืนใช่หรือไม่
ฉันกำลังมองหาคำแนะนำที่นี่ ฉันกำลังดิ้นรนกับว่ามันจะดีกว่าที่จะกลับเป็นโมฆะหรือค่าที่ว่างเปล่าจากวิธีการเมื่อไม่มีค่าตอบแทนหรือไม่สามารถหาได้ ใช้สองวิธีต่อไปนี้เป็นตัวอย่าง: string ReverseString(string stringToReverse) // takes a string and reverses it. Person FindPerson(int personID) // finds a Person with a matching personID. ในReverseString()ฉันจะพูดกลับสตริงที่ว่างเปล่าเพราะประเภทกลับเป็นสตริงดังนั้นผู้โทรคาดหวังว่า ด้วยวิธีนี้ผู้โทรจะไม่ต้องตรวจสอบเพื่อดูว่ากลับเป็นโมฆะ ในการFindPerson()คืนค่า NULL ดูเหมือนว่าเหมาะสมดีกว่า ไม่ว่า NULL หรือวัตถุ Person ว่างเปล่า ( new Person()) จะถูกส่งคืนหรือไม่ผู้โทรจะต้องตรวจสอบเพื่อดูว่าวัตถุบุคคลนั้นว่างเปล่าหรือว่างเปล่าก่อนที่จะทำอะไรกับมัน (เช่นการโทรUpdateName()) ดังนั้นทำไมไม่เพียงแค่ส่งคืนค่า NULL ที่นี่จากนั้นผู้โทรต้องตรวจสอบค่า NULL เท่านั้น ใครบ้างที่ต่อสู้กับสิ่งนี้? ความช่วยเหลือหรือข้อมูลเชิงลึกใด ๆ ที่ชื่นชม

8
C ++ ทำอะไรได้ดีกว่า D
ฉันเพิ่งได้เรียนรู้Dและฉันเริ่มคุ้นเคยกับภาษา ฉันรู้ว่ามันให้อะไรฉันยังไม่รู้ว่าจะใช้ทุกอย่างอย่างไรและฉันก็ไม่รู้อะไรมากมายเกี่ยวกับ D สำนวนและอื่น ๆ แต่ฉันกำลังเรียนรู้ ฉันชอบ D. มันเป็นภาษาที่ดีมากในหลาย ๆ ด้านการอัพเดต C ขนาดใหญ่และทำได้ดีมาก ไม่มีคุณสมบัติใดที่ดูเหมือนว่า "ปิด" แต่จริงๆแล้วค่อนข้างดีที่คิดและออกแบบมาอย่างดี คุณมักจะได้ยินว่า D คือสิ่งที่ C ++ ควรเป็น (ฉันทิ้งคำถามว่าจริงหรือไม่สำหรับแต่ละคนและทุกคนในการตัดสินใจด้วยตนเองเพื่อหลีกเลี่ยงสงครามเปลวไฟที่ไม่จำเป็น) ฉันเคยได้ยินจากโปรแกรมเมอร์ C ++ หลายคนว่าพวกเขาสนุกกับ D มากกว่า C ++ ตัวเองในขณะที่ฉันรู้ว่า C ฉันไม่สามารถพูดได้ว่าฉันรู้ C ++ ฉันต้องการได้ยินจากคนที่รู้ทั้ง C ++ และ D หากพวกเขาคิดว่ามีบางสิ่งที่ C ++ ทำได้ดีกว่า D เป็นภาษา (หมายถึงไม่ใช่ปกติ "มีห้องสมุดบุคคลที่สามมากกว่า" หรือ …

9
เมื่อใดจะมีคนใช้ MongoDB (หรือคล้ายกัน) ผ่าน DBMS เชิงสัมพันธ์
ฉันสับสนเล็กน้อยเกี่ยวกับสิ่ง NoSQL ทั้งหมดและเช่นนั้น เมื่อใดที่คุณจะเลือกใช้บางสิ่งเช่น MongoDB เหนือสิ่งอื่นเช่น Oracle หรือ MySQL ฉันไม่เข้าใจ "ความแตกต่าง" เท่าที่มีการใช้งานระหว่างพวกเขา จากความเข้าใจของฉันฐานข้อมูลประเภท NoSQL ไม่ได้หมายถึงการแทนที่ RDBMS แต่สิ่งที่พวกเขาตั้งใจทำ?
134 database  nosql  rdms 

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