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

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

7
นามสกุลของ Null ทำให้เกิดปัญหาในหลายฐานข้อมูลได้อย่างไร
ฉันอ่านบทความเกี่ยวกับ BBC หนึ่งในตัวอย่างที่พวกเขากล่าวคือคนที่มีนามสกุล 'Null' กำลังมีปัญหาในการป้อนรายละเอียดในบางเว็บไซต์ ไม่มีคำอธิบายเกี่ยวกับข้อผิดพลาดที่พวกเขาเผชิญ แต่เท่าที่ฉันรู้สตริง 'Null' และค่า Null จริงนั้นแตกต่างอย่างสิ้นเชิง (จากมุมมองฐานข้อมูล) เหตุใดจึงทำให้เกิดปัญหาในฐานข้อมูล
71 database  null 

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

4
เหตุใด git pull จึงทำการผสานแทนที่จะเป็น rebase โดยปริยาย
พิจารณาสถานการณ์ต่อไปนี้: คุณมีที่เก็บโคลนคอมไพล์ คุณมีการกระทำในท้องถิ่น (การกระทำที่ยังไม่ได้ผลักไปที่ใดก็ได้) ที่เก็บรีโมตมีการยอมรับใหม่ที่คุณยังไม่ได้กระทบยอด ดังนั้นสิ่งนี้: หากคุณดำเนินการgit pullด้วยการตั้งค่าเริ่มต้นคุณจะได้รับสิ่งนี้: นี่เป็นเพราะคอมไพล์ทำการผสาน มีทางเลือกแม้ว่า คุณสามารถบอกให้ pull ทำ rebase แทน: git pull --rebase และคุณจะได้รับสิ่งนี้: ในความเห็นของฉันเวอร์ชันที่ถูก rebased มีข้อดีมากมายที่ส่วนใหญ่มุ่งเน้นที่การรักษาทั้งรหัสและประวัติของคุณให้สะอาด ใช่ความยุ่งเหยิงของการกระทำในท้องถิ่นของคุณจะเปลี่ยนไป แต่ดูเหมือนว่าจะเป็นเพียงเล็กน้อยที่จะจ่ายสำหรับประวัติที่เรียบง่ายกว่าที่คุณได้รับ ฉันไม่ได้แนะนำว่านี่เป็นค่าเริ่มต้นที่ไม่ดีหรือผิด ฉันแค่มีปัญหาในการคิดหาเหตุผลว่าทำไมการผสานอาจเป็นที่ต้องการสำหรับการเริ่มต้น เรามีความเข้าใจหรือไม่ว่าทำไมถึงถูกเลือก? มีประโยชน์ที่ทำให้เหมาะสมกว่าเป็นค่าเริ่มต้นหรือไม่ แรงจูงใจหลักสำหรับคำถามนี้คือ บริษัท ของฉันพยายามกำหนดมาตรฐานพื้นฐานบางอย่าง (หวังว่าจะเป็นแนวทางเพิ่มเติม) สำหรับวิธีที่เราจัดระเบียบและจัดการที่เก็บข้อมูลของเราเพื่อให้ง่ายขึ้นสำหรับนักพัฒนาในการเข้าถึงพื้นที่เก็บข้อมูลที่ไม่เคยทำงานด้วยมาก่อน ฉันสนใจที่จะทำกรณีที่เราควรรีบาวด์ในสถานการณ์ประเภทนี้ (และอาจแนะนำให้นักพัฒนาตั้งค่าคอนฟิเกอเรชันระดับโลกเป็นรีบูตโดยค่าเริ่มต้น) แต่ถ้าฉันไม่เห็นด้วยฉันจะถามว่าทำไมการรีบูตไม่ใช่ ' ค่าเริ่มต้นถ้ามันยอดเยี่ยมมาก ดังนั้นฉันสงสัยว่ามีอะไรที่ขาดหายไปหรือเปล่า มันได้รับการแนะนำว่าคำถามนี้เป็นคำถามที่ซ้ำกันของเหตุใดเว็บไซต์จำนวนมากจึงนิยมใช้“ git rebase” มากกว่า“ git merge” ; อย่างไรก็ตามคำถามนี้ค่อนข้างตรงกันข้ามกับคำถามนี้ มันกล่าวถึงข้อดีของการ rebase มากกว่าการรวมในขณะที่คำถามนี้ถามเกี่ยวกับประโยชน์ของการรวมมากกว่า …
71 git 

5
ทำไมคุณไม่ใช้คำสั่ง 'use' ใน C #
มาตรฐานการเข้ารหัสที่มีอยู่ในโครงการ C # ขนาดใหญ่มีกฎที่ชื่อประเภททั้งหมดมีคุณสมบัติครบถ้วนโดยห้ามใช้คำสั่ง 'การใช้' ดังนั้นแทนที่จะคุ้นเคย: using System.Collections.Generic; .... other stuff .... List<string> myList = new List<string>(); (อาจไม่แปลกใจที่varห้ามใช้เช่นกัน) ท้ายที่สุดฉัน: System.Collections.Generic.List<string> myList = new System.Collections.Generic.List<string>(); นั่นคือการเพิ่มขึ้นของการพิมพ์ 134% โดยไม่มีการเพิ่มที่ให้ข้อมูลที่เป็นประโยชน์ ในมุมมองของฉันการเพิ่มขึ้น 100% คือเสียง (ความยุ่งเหยิง) ที่ขัดขวางการทำความเข้าใจ ในการเขียนโปรแกรมกว่า 30 ปีฉันได้เห็นมาตรฐานที่เสนอหนึ่งครั้งหรือสองครั้ง แต่ไม่เคยนำมาใช้ เหตุผลเบื้องหลังมันหนีฉันไป คนที่กำหนดมาตรฐานไม่ใช่คนโง่และฉันไม่คิดว่าเขาเป็นอันตราย ซึ่งทำให้เข้าใจผิดว่าเป็นทางเลือกอื่นเท่านั้นเว้นแต่ฉันจะพลาดบางสิ่งบางอย่าง คุณเคยได้ยินเกี่ยวกับมาตรฐานดังกล่าวหรือไม่? ถ้าเป็นเช่นนั้นอะไรคือเหตุผลที่อยู่เบื้องหลัง คุณนึกถึงข้อโต้แย้งอื่น ๆ ที่ไม่ใช่ "มันโง่" หรือ "คนอื่นทุกคนusing" ซึ่งอาจโน้มน้าวให้บุคคลนี้ลบข้อห้ามนี้ได้หรือไม่? เหตุผล เหตุผลในการห้ามนี้คือ: …

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

15
เป็นไปได้หรือไม่ที่จะไปถึงสถานะข้อบกพร่องสัมบูรณ์เป็นศูนย์สำหรับซอฟต์แวร์ขนาดใหญ่?
ฉันกำลังพูดถึงโค้ดประมาณ 20-30 ล้านบรรทัดซอฟต์แวร์ในระดับและความซับซ้อนของ Autodesk Maya หากคุณหยุดการพัฒนาตราบใดที่จำเป็นต้องทำคุณสามารถแก้ไขข้อบกพร่องทั้งหมดได้จริงหรือไม่จนกว่าจะไม่มีข้อผิดพลาดเพียงครั้งเดียวหากสิ่งนั้นสามารถตรวจสอบได้ด้วยคอมพิวเตอร์? อะไรคือข้อโต้แย้งสำหรับและต่อต้านการดำรงอยู่ของระบบที่ปราศจากข้อบกพร่อง? เนื่องจากมีความคิดบางอย่างที่คุณแก้ไขทุกครั้งจะสร้างข้อบกพร่องมากขึ้น แต่ฉันไม่คิดว่าเป็นเรื่องจริง โดยข้อบกพร่องฉันหมายถึงจากการพิมพ์ผิดที่ง่ายที่สุดใน UI เพื่อข้อบกพร่องเชิงป้องกันที่รุนแรงยิ่งขึ้นที่ไม่มีวิธีแก้ปัญหา ตัวอย่างเช่นฟังก์ชั่นการเขียนสคริปต์ที่เฉพาะเจาะจงคำนวณบรรทัดฐานไม่ถูกต้อง แม้กระทั่งเมื่อมีวิธีแก้ไขปัญหาปัญหายังคงต้องได้รับการแก้ไข ดังนั้นคุณสามารถพูดได้ว่าคุณสามารถทำสิ่งนี้ด้วยตนเองแทนการใช้ฟังก์ชั่นที่ให้ไว้ แต่ฟังก์ชั่นนั้นยังคงต้องได้รับการแก้ไข

13
เหตุผลง่าย ๆ ที่ดีสำหรับการมีหลายสภาพแวดล้อม
ตลอดอาชีพของฉันฉันได้ทำงานกับ บริษัท ที่มีสภาพแวดล้อมที่แตกต่างกันเพื่อวัตถุประสงค์ที่แตกต่างกัน เรามักจะมีสภาพแวดล้อมเดสก์ท็อปของเรามากขึ้นหรือน้อยลงสภาพแวดล้อมการทดสอบสภาพแวดล้อม QA สภาพแวดล้อมการจัดเตรียมและสภาพแวดล้อมการผลิต นี่เป็นทั้งเซิร์ฟเวอร์ / แอปพลิเคชันและแหล่งข้อมูลใด ๆ ที่เราใช้ เมื่อฉันเริ่มที่ บริษัท ปัจจุบันของฉันฉันพบว่า 90% ของแอพได้รับการพัฒนาบนเดสก์ท็อปกับแหล่งข้อมูลการผลิตหรือพัฒนาโดยตรงบนเซิร์ฟเวอร์ที่ใช้งานจริงขึ้นอยู่กับแพลตฟอร์ม สิ่งนี้ไม่น่าประหลาดใจโดยเฉพาะอย่างยิ่งเนื่องจากฉันได้รับการว่าจ้างในส่วนที่จะทำการเปลี่ยนแปลงเพื่อปรับปรุงวิธีการทำงานของทีมพัฒนาซึ่งชัดเจนจากกระบวนการสัมภาษณ์ของฉัน เราเริ่มหันมาใช้ปรัชญาอย่างช้าๆและในไม่ช้าแอพส่วนใหญ่สามารถทำงานได้ทั้งบนเดสก์ท็อปการทดสอบหรือสภาพแวดล้อมการผลิต ไม่นานหลังจากนั้นการแสดงละครก็เข้ามาเช่นกัน ตอนนี้นักพัฒนาของเราส่วนใหญ่เห็นประโยชน์ของวิธีการนี้และปกป้องอย่างระมัดระวัง อย่างไรก็ตามเรามีแอพรุ่นเก่าจำนวนมากที่ไม่เคยมีการโยกย้าย นอกจากนี้เรายังมีโปรแกรมเมอร์จำนวนมากที่คิดว่าสิ่งนี้เป็นการเสียเวลา น่าเสียดายที่เราได้รับบริการริมฝีปาก แต่ไม่เคยซื้อแบบเต็มจากการจัดการ เราได้สิ่งที่เราคิดว่าเป็นความมุ่งมั่นที่จะลงทุนอย่างมีนัยสำคัญในเรื่องนี้ประมาณหนึ่งปีที่ผ่านมา แต่ไม่มีอะไรเกิดขึ้นแม้จะมีการวางแผนที่สำคัญที่เราวางไว้ ตอนนี้เรากำลังพบว่าเราต้องการสภาพแวดล้อมที่มากขึ้นเรื่อย ๆ เราต้องการความช่วยเหลือจากทีมผู้ดูแลเซิร์ฟเวอร์ / เครือข่ายสำหรับการติดตั้งและเราต้องการการมีส่วนร่วมจากผู้มีส่วนได้ส่วนเสียทางธุรกิจเพื่อสนับสนุนวงจรการเปิดตัว เราอยู่ในสถานที่ที่โครงการสามารถทำหน้าที่นักพัฒนาที่เหมาะสมจะพิจารณาว่า "ปกติ" ฉันชอบที่จะนำเสนอข้อโต้แย้งที่สมบูรณ์ แต่ฝ่ายบริหารไม่มีเวลาและความสนใจในการฟังฉันจนกว่าจะมีปัญหาที่สำคัญ ฉันไม่สามารถพูดถึงประโยชน์ได้อย่างชัดเจนเพราะมันดูเป็นธรรมชาติที่สองสำหรับฉันเสมอ ฉันสงสัยว่ามีเหตุผลที่ดีเรียบง่ายและหักล้างไม่ได้สำหรับการแยกสภาพแวดล้อมที่จะทำให้ผู้จัดการขาดประสบการณ์การพัฒนาเพื่อสนับสนุนแนวคิดนี้หรือไม่? . มีแหล่งข้อมูลที่ดี / วรรณกรรมในหัวข้อหรือไม่

19
ตรวจสอบก่อนหรือหลังการส่งมอบรหัสซึ่งดีกว่า?
ตามเนื้อผ้าเราทำการตรวจสอบโค้ดก่อนส่งฉันมีข้อโต้แย้งกับเพื่อนร่วมงานของฉันในวันนี้ซึ่งต้องการตรวจสอบโค้ดหลังจากส่งมอบ ก่อนอื่นนี่คือพื้นหลังบางส่วน เรามีนักพัฒนาที่มีประสบการณ์และเรายังมีการจ้างงานใหม่ด้วยประสบการณ์การเขียนโปรแกรมเกือบเป็นศูนย์ เราต้องการทำซ้ำอย่างรวดเร็วและสั้นเพื่อเผยแพร่ผลิตภัณฑ์ของเรา สมาชิกในทีมทั้งหมดอยู่ที่ไซต์เดียวกัน ข้อดีของการตรวจสอบโค้ดก่อนส่งมอบฉันได้เรียนรู้: ให้คำปรึกษาจ้างใหม่ พยายามป้องกันข้อผิดพลาดความล้มเหลวการออกแบบที่ไม่ดีในช่วงต้นของวงจรการพัฒนา เรียนรู้จากผู้อื่น การสำรองข้อมูลความรู้ถ้ามีคนเลิก แต่ฉันก็มีประสบการณ์ที่ไม่ดีเช่นกัน: ประสิทธิภาพต่ำการเปลี่ยนแปลงบางอย่างอาจได้รับการตรวจสอบในช่วงเวลาหลายวัน ยากที่จะรักษาสมดุลความเร็วและคุณภาพโดยเฉพาะอย่างยิ่งสำหรับมือใหม่ สมาชิกในทีมคนหนึ่งรู้สึกไม่มั่นใจ สำหรับรีวิวที่โพสต์กระทำฉันรู้เพียงเล็กน้อยเกี่ยวกับสิ่งนี้ แต่สิ่งที่ฉันกังวลมากที่สุดคือความเสี่ยงในการสูญเสียการควบคุมเนื่องจากขาดการตรวจสอบ ความคิดเห็นใด? UPDATE: เรากำลังใช้ Perforce สำหรับ VCS เราใช้รหัสและกระทำในสาขาเดียวกัน (สาขาการแก้ไขลำต้นหรือข้อบกพร่อง) เพื่อปรับปรุงประสิทธิภาพเราได้พยายามแบ่งรหัสเป็นการเปลี่ยนแปลงเล็กน้อย เราได้ลองตรวจสอบการสนทนาสดแล้ว แต่ทุกคนไม่ปฏิบัติตามกฎ นี่เป็นปัญหาอีกอย่างหนึ่ง

15
ฉันหยุดเขียนโค้ดเพื่อความสนุกนี่เป็นสัญญาณที่ไม่ดีหรือเปล่า [ปิด]
ในบางช่วงเวลาฉันเพิ่งหยุดเขียนโค้ดเพื่อความสนุก ฉันเคยไปทำงานทำงานที่ได้รับมอบหมายให้เสร็จจากนั้นเมื่อถึงบ้านฉันจะไปและเขียนสิ่งต่าง ๆ เพื่อความสนุกสนาน อย่างไรก็ตามตอนนี้ฉันกลับบ้านแล้วพยายามหลีกเลี่ยงคอมพิวเตอร์ ฉันอยากอ่านหนังสือพิมพ์ดูทีวีออกไปที่บาร์ ฯลฯ นี่เป็นสัญญาณที่ไม่ดี? ฉันหมายถึงฉันยังคงพยายามติดตามแนวโน้มล่าสุดฟอรั่ม / บล็อก / อื่น ๆ ของนักพัฒนา แต่ฉันไม่ได้พูดว่า "ฉันต้องการเรียนรู้ภาษา X - ฉันสงสัยว่าฉันสามารถเขียนแอป Y ในนั้นได้หรือไม่" เรื่องนี้เกิดขึ้นกับคนอื่นหรือไม่?
71 coding 

19
เหตุใดฉันจึงต้องใส่ใจเกี่ยวกับประสิทธิภาพของไมโครและประสิทธิภาพ?
คำถามและคำตอบมากมายในหน้า C / C ++ โดยเฉพาะหรือหารือเกี่ยวกับปัญหาประสิทธิภาพการทำงานของไมโคร (เช่นค่าใช้จ่ายของฟังก์ชั่น vs vs direct vs inline ทางอ้อม) หรือการใช้อัลกอริทึมO (N 2 ) vs O (N log N) รายการ 100 รายการ ฉันมักจะเขียนโค้ดโดยไม่ต้องกังวลเกี่ยวกับประสิทธิภาพของไมโครและความกังวลเล็กน้อยเกี่ยวกับประสิทธิภาพของมาโครโดยมุ่งเน้นที่การบำรุงรักษาที่ง่ายและเชื่อถือได้นอกจากว่าฉันรู้ว่าฉันมีปัญหา คำถามของฉันคือเหตุใดโปรแกรมเมอร์จำนวนมากจึงสนใจ? มันเป็นปัญหาสำหรับนักพัฒนาส่วนใหญ่จริง ๆ หรือไม่ฉันเพิ่งโชคดีพอที่จะไม่ต้องกังวลกับมันมากเกินไปหรือฉันเป็นโปรแกรมเมอร์ที่ไม่ดี?

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

3
อะไรคือสาเหตุที่ไม่ใช้ [c ++ 17 ของ [nodiscard]] เกือบทุกที่ในรหัสใหม่
C ++ 17 แนะนำ[[nodiscard]]คุณสมบัติซึ่งอนุญาตให้โปรแกรมเมอร์ทำเครื่องหมายฟังก์ชั่นในลักษณะที่คอมไพเลอร์สร้างคำเตือนหากวัตถุที่ถูกส่งคืนถูกยกเลิกโดยผู้เรียก สามารถเพิ่มแอตทริบิวต์เดียวกันในประเภทคลาสทั้งหมดได้ ฉันได้อ่านเกี่ยวกับแรงจูงใจของคุณลักษณะนี้ในข้อเสนอเดิมและฉันรู้ว่า C ++ 20 จะเพิ่มคุณสมบัติให้กับฟังก์ชั่นมาตรฐานเช่นstd::vector::emptyชื่อของผู้ที่ไม่ได้สื่อความหมายที่ชัดเจนเกี่ยวกับค่าส่งคืน มันเป็นคุณสมบัติที่ยอดเยี่ยมและมีประโยชน์ ในความเป็นจริงมันดูเหมือนว่ามีประโยชน์มากเกินไป ทุกที่ที่ฉันอ่าน[[nodiscard]]คนพูดถึงราวกับว่าคุณเพิ่งเพิ่มไปยังฟังก์ชั่นหรือประเภทที่เลือกและลืมส่วนที่เหลือ แต่ทำไมค่าที่ไม่สามารถละทิ้งได้ควรเป็นกรณีพิเศษโดยเฉพาะเมื่อเขียนโค้ดใหม่ ค่าส่งคืนที่ถูกทิ้งมักจะเป็นข้อบกพร่องหรืออย่างน้อยก็เป็นการสิ้นเปลืองทรัพยากรหรือไม่ และไม่ใช่หนึ่งในหลักการออกแบบของ C ++ ที่คอมไพเลอร์ควรตรวจจับข้อผิดพลาดให้ได้มากที่สุด ถ้าเป็นเช่นนั้นทำไมไม่เพิ่ม[[nodiscard]]รหัสที่ไม่ใช่มรดกของคุณเองลงในvoidฟังก์ชั่นที่ไม่ใช่ฟังก์ชั่นเดียวและเกือบทุกประเภทของคลาส? ฉันพยายามที่จะทำในรหัสของตัวเองและมันทำงานได้ดียกเว้นว่ามัน verbose ชะมัดว่ามันเริ่มรู้สึกเหมือน Java มันจะดูเหมือนธรรมชาติมากขึ้นที่จะทำให้คอมไพเลอร์เตือนเกี่ยวกับการคืนค่าทิ้งไปโดยปริยาย ยกเว้นสำหรับกรณีอื่น ๆ ไม่กี่ที่คุณทำเครื่องหมายความตั้งใจของคุณ[*] ตามที่ฉันได้เห็นการอภิปรายเป็นศูนย์เกี่ยวกับความเป็นไปได้นี้ในข้อเสนอมาตรฐานรายการบล็อกคำถามซ้อนมากเกินไปหรือที่อื่นบนอินเทอร์เน็ตฉันต้องหายไปบางสิ่งบางอย่าง ทำไมกลศาสตร์ดังกล่าวไม่สมเหตุสมผลในรหัส C ++ ใหม่ การใช้คำฟุ่มเฟื่อยเป็นเหตุผลเดียวที่จะไม่ใช้[[nodiscard]]เกือบทุกที่? [*] ตามทฤษฏีคุณอาจมีลักษณะคล้ายกับ[[maydiscard]]แอตทริบิวต์แทนซึ่งสามารถเพิ่มย้อนหลังให้กับฟังก์ชั่นเช่นprintfในการใช้งานไลบรารีมาตรฐาน
70 c++ 

4
การติดตาม SOLID นำไปสู่การเขียนเฟรมเวิร์กบนสุดของสแต็คเทคโนโลยีหรือไม่
ฉันชอบ SOLID และฉันพยายามอย่างดีที่สุดที่จะใช้และนำไปใช้เมื่อฉันกำลังพัฒนา แต่ฉันอดไม่ได้ที่จะรู้สึกราวกับว่าแนวทางของ SOLID จะเปลี่ยนรหัสของคุณให้เป็นรหัส 'framework' - เช่นรหัสที่คุณต้องการออกแบบหากคุณสร้างเฟรมเวิร์กหรือไลบรารีเพื่อให้นักพัฒนารายอื่นใช้ โดยทั่วไปฉันได้ฝึกการเขียนโปรแกรม 2 โหมด - การสร้างสิ่งที่ถามผ่านข้อกำหนดและ KISS (การเขียนโปรแกรมทั่วไป) มากขึ้นหรือน้อยลงหรือการสร้างตรรกะบริการและอื่น ๆ ที่ใช้ซ้ำทั่วไปและนำกลับมาใช้ใหม่ได้ . หากผู้ใช้ต้องการให้แอปพลิเคชันทำสิ่ง x และ y จริง ๆ มันสมเหตุสมผลหรือไม่ที่จะต้องติดตาม SOLID และเพิ่มจุดเริ่มต้นที่เป็นนามธรรมทั้งหมดเมื่อคุณไม่รู้ด้วยซ้ำว่าเป็นปัญหาที่ถูกต้องหรือไม่ ด้วย? หากคุณเพิ่มจุดเริ่มต้นของสิ่งที่เป็นนามธรรมคุณจะปฏิบัติตามข้อกำหนดของผู้ใช้จริง ๆ หรือคุณสร้างกรอบงานด้านบนของเฟรมเวิร์กที่มีอยู่และสแต็คเทคโนโลยีเพื่อให้การเพิ่มในอนาคตง่ายขึ้นหรือไม่? ในกรณีใดบ้างที่คุณให้บริการเพื่อผลประโยชน์ของลูกค้าหรือของผู้พัฒนา นี่เป็นสิ่งที่ดูเหมือนว่าเป็นเรื่องธรรมดาในโลกของ Java Enterprise ที่ให้ความรู้สึกราวกับว่าคุณกำลังออกแบบเฟรมเวิร์กของคุณเองบน J2EE หรือ Spring ดังนั้นมันจึงเป็น UX ที่ดีกว่าสำหรับนักพัฒนาแทนที่จะมุ่งเน้นที่ UX สำหรับผู้ใช้
70 frameworks  solid 

9
คุณพัฒนาซอฟต์แวร์โดยไม่มีเกณฑ์การยอมรับได้อย่างไร
คุณจะร่วมมือกันพัฒนาซอฟต์แวร์ในทีมนักพัฒนา 4-5 คนโดยไม่มีเกณฑ์การยอมรับได้อย่างไรโดยไม่รู้ว่าผู้ทดสอบจะทดสอบอะไรกับคนหลายคน (2-3) ที่ทำหน้าที่เป็นเจ้าของผลิตภัณฑ์ สิ่งที่เรามีคือ 'สเป็ค' ภาพร่างพร้อมภาพหน้าจอและสัญลักษณ์กระสุนเล็กน้อย เราได้รับการบอกว่ามันจะง่ายดังนั้นสิ่งเหล่านี้จึงไม่จำเป็น ฉันกำลังสูญเสียวิธีการดำเนินการต่อไป ข้อมูลเพิ่มเติม เราได้รับกำหนดเวลาที่ยากลำบาก ลูกค้าอยู่ภายในเรามีเจ้าของผลิตภัณฑ์ในทางทฤษฎี แต่อย่างน้อย 3 คนที่ทดสอบซอฟต์แวร์อาจล้มเหลวในการทำงานเพียงเพราะมันไม่ทำงานอย่างที่พวกเขาคิดว่ามันควรจะทำงานได้และมีความโปร่งใสน้อยถึงสิ่งที่พวกเขาคาดหวังหรือ สิ่งที่พวกเขากำลังทดสอบจริง ๆ จนกว่ามันจะล้มเหลว เจ้าของผลิตภัณฑ์ไม่พร้อมที่จะตอบคำถามหรือให้ข้อเสนอแนะ ไม่มีการประชุมหรือการโทรตามกำหนดปกติกับพวกเขาและข้อเสนอแนะอาจใช้เวลาหลายวัน ฉันสามารถเข้าใจได้ว่าเราไม่สามารถมีสเป็คที่สมบูรณ์แบบได้ แต่ฉันคิดว่ามันเป็น 'ปกติ' ที่จะมีเกณฑ์การยอมรับสำหรับสิ่งที่เรากำลังทำจริง ๆ ในการวิ่งแต่ละครั้ง

10
เมื่อใดที่จะใช้ภาษาสคริปต์ภายในโปรแกรมที่มีขนาดใหญ่กว่าจะมีประโยชน์?
ฉันเคยได้ยินหลาย ๆ สถานการณ์ของผู้ใช้ที่ใช้คำพูด, จาวาสคริปต์หรือ Python (หรือบางอย่าง), ภายในโปรแกรมที่เขียนด้วย C # เมื่อใดที่จะใช้ภาษาเช่น JavaScript เพื่อทำบางอย่างในโปรแกรม C # จะดีกว่าถ้าเป็นเช่นนั้นใน C #
70 scripting 

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