คำถามติดแท็ก programming-practices

Programming Practices เป็นวิธีที่ใช้กันทั่วไปหรือไม่ใช้กันทั่วไปในการพัฒนาซอฟต์แวร์ สิ่งเหล่านี้อาจรวมถึงสิ่งต่าง ๆ เช่นการพัฒนาแบบ Agile, Kanban, ทางลัดการเข้ารหัส ฯลฯ

5
วิธีเอาชนะการเขียนโปรแกรมโดยบังเอิญ? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว ในหนังสือThe Pragmatic Programmerผู้เขียนพูดถึงการเขียนโปรแกรมด้วยแนวคิดเรื่องบังเอิญ มันอธิบายว่ามันคืออะไรทำไมมันเกิดขึ้นอะไรคืออันตรายที่คุณอาจพบและเปรียบเทียบกับสนามระเบิดในสงคราม คุณเคยดูหนังสงครามขาวดำบ้างไหม? ทหารที่เหนื่อยล้าจะเลื่อนออกจากแปรงอย่างระมัดระวัง มีการล้างล่วงหน้า: มีเหมืองที่ดินหรือไม่ปลอดภัยหรือไม่ ไม่มีข้อบ่งชี้ใด ๆ ว่ามันเป็นเขตที่วางทุ่นระเบิด - ไม่มีสัญญาณลวดหนามหรือหลุมอุกกาบาต ทหารโผล่หน้าดินของเขาด้วยดาบปลายปืนและการชนะของเขาคาดว่าจะเกิดการระเบิด ไม่มีเลย ดังนั้นเขาจึงพยายามที่จะผ่านสนามไปครู่หนึ่งอย่างกระทันหันและกระทุ้งเมื่อเขาไป ในที่สุดเชื่อว่าสนามนั้นปลอดภัยเขาเดินตรงไปข้างหน้าและเดินไปข้างหน้าอย่างภาคภูมิใจเพียงเพื่อถูกเป่าเป็นชิ้น ๆ โพรบเริ่มต้นของทหารสำหรับการทำเหมืองไม่ได้เปิดเผยอะไร แต่นี่เป็นเพียงโชคดี เขาถูกนำไปสู่ข้อสรุปที่ผิด ๆ - ด้วยผลลัพธ์ที่หายนะ ในฐานะนักพัฒนาเรายังทำงานในทุ่นระเบิด มีกับดักนับร้อยรอให้เรามาจับในแต่ละวัน การระลึกถึงเรื่องราวของทหารเราควรระวังในการเขียนข้อสรุปที่ผิดพลาด เราควรหลีกเลี่ยงการเขียนโปรแกรมโดยบังเอิญ - อาศัยโชคและความสำเร็จโดยไม่ตั้งใจ - เพื่อสนับสนุนการเขียนโปรแกรมโดยเจตนา ... แต่ฉันไม่พอใจกับวิธีที่พวกเขาอธิบายถึงปัญหา "วิธีเอาชนะ" ใช่คุณต้องคิดล่วงหน้าก่อนที่จะเขียนรหัส แต่วิธีการปฏิบัตินั้น สิ่งเดียวที่ฉันคิดได้ก็คือการเพิ่มคุณสมบัติให้กับโครงการโอเพ่นซอร์สที่มีอยู่ซึ่งคุณต้องมีความรู้ทั้งใน "สิ่งที่ฉันทำอยู่ตอนนี้" และ "วิธีการทำงานของโค้ดอื่น ๆ " …

3
เหตุใดฉันจึงควรใช้รายการ <T> บน IEnumerable <T>
ในแอปพลิเคชันเว็บ ASP.net MVC4 ของฉันฉันใช้ IEnumerables พยายามติดตามมนต์เพื่อเขียนโปรแกรมไปยังส่วนต่อประสานไม่ใช่เพื่อการนำไปใช้ Return IEnumerable(Of Student) VS Return New List(Of Student) มีคนบอกให้ฉันใช้ List และไม่ใช่ IEnumerable เพราะรายการบังคับให้แบบสอบถามดำเนินการและ IEumerable ไม่ นี่เป็นวิธีปฏิบัติที่ดีที่สุดจริง ๆ หรือ มีทางเลือกอื่นอีกไหม? ฉันรู้สึกแปลก ๆ ที่ใช้วัตถุที่เป็นรูปธรรมซึ่งสามารถใช้ส่วนต่อประสาน ความรู้สึกแปลก ๆ ของฉันเป็นธรรมหรือไม่?

10
สร้างแรงบันดาลใจให้เพื่อนร่วมงานนำวิธีการเข้ารหัสที่ดีกว่า
ในการจัดการคำถามผู้ร่วมงานที่ล้าสมัยของฉันหลายคนพูดถึงกลยุทธ์ในการจัดการกับเพื่อนร่วมงานที่ไม่ต้องการรวมเวิร์กโฟลว์ของพวกเขาเข้ากับทีม ฉันต้องการถ้าเป็นไปได้เพื่อเรียนรู้กลยุทธ์บางอย่างสำหรับ "การสอน" ผู้ร่วมงานที่ไม่รู้เทคนิคและเครื่องมือที่ทันสมัยเพียงอย่างเดียว ฉันเริ่มทำงานกับโปรแกรมเมอร์ที่จนกระทั่งเมื่อไม่นานมานี้ได้ทำงานในความโดดเดี่ยวในส่วนอื่นของ บริษัท เขามีความรู้เกี่ยวกับโดเมนอย่างกว้างขวางและที่สำคัญที่สุดเขาได้แสดงให้เห็นถึงทักษะการแก้ปัญหาที่ดีสิ่งที่ผู้สมัครหลายคนดูเหมือนจะขาด อย่างไรก็ตามรหัส (C #) จริงที่ฉันเคยเห็นคือการย้อนกลับไปสู่ ​​VB6 วัน โครงสร้างขั้นตอน, สัญกรณ์ฮังการี, ตัวแปรทั่วโลก (การละเมิดstatic), ไม่มีส่วนต่อประสาน, ไม่มีการทดสอบ, การไม่ใช้ Generics, การขว้างSystem.Exception... คุณจะได้รับแนวคิด โปรแกรมเมอร์คนนี้ค่อนข้างแก่กว่าฉันและด้วยความประทับใจแรกอย่างน้อยก็ไม่ได้แสวงหาการเปลี่ยนแปลงในเชิงบวก ฉันจะไม่พูดต่อต้านการเปลี่ยนแปลงเพราะฉันคิดว่าส่วนใหญ่เป็นปัญหาของหัวข้อที่ได้รับการเจาะและฉันต้องการที่จะเตรียม โปรแกรมเมอร์มักจะเป็นคนที่ดื้อรั้นและเข้าร่วมกับการจู่โจมปืนและทำการตรวจสอบโค้ดที่ฉีกขาดเป็นชิ้นเล็กชิ้นน้อยและนโยบายที่บังคับใช้อย่างเคร่งครัดมีแนวโน้มว่าจะไม่สร้างผลลัพธ์ที่ฉันต้องการ หากนี่คือการจ้างงานใหม่โปรแกรมเมอร์รุ่นเยาว์ฉันไม่คิดเลยว่าจะมีท่าทาง "ผู้ให้คำปรึกษา" สองครั้ง แต่ฉันก็ระมัดระวังในการปฏิบัติต่อพนักงานที่มีประสบการณ์ในฐานะมือใหม่ที่ไร้เดียงสา (ซึ่งเขาไม่ใช่ - เขาแค่ไม่ ทันกับความก้าวหน้าบางอย่างในสนาม) ฉันจะไปเกี่ยวกับการยกระดับมาตรฐานคุณภาพรหัสของผู้พัฒนานี้ตามวิธี Dale Carnegie ผ่านการโน้มน้าวใจที่อ่อนโยนและสิ่งจูงใจที่ไม่ใช่วัสดุได้อย่างไร อะไรจะเป็นกลยุทธ์ที่ดีที่สุดในการทำให้เกิดการเปลี่ยนแปลงที่ละเอียดและค่อยเป็นค่อยไปโดยไม่ต้องสร้างสถานการณ์ที่เป็นปฏิปักษ์? มีคนอื่น ๆ โดยเฉพาะผู้พัฒนานำ - เคยอยู่ในสถานการณ์แบบนี้มาก่อนหรือไม่? กลยุทธ์ใดที่ประสบความสำเร็จในการกระตุ้นความสนใจและสร้างกลุ่มพลังเชิงบวก กลยุทธ์ใดที่ไม่ประสบความสำเร็จและควรหลีกเลี่ยงได้ดีกว่า ชี้แจง: ฉันรู้สึกว่าหลายคนกำลังตอบตามความรู้สึกส่วนตัวโดยไม่อ่านรายละเอียดทั้งหมดของคำถาม โปรดทราบสิ่งต่อไปนี้ซึ่งควรบอกเป็นนัย แต่ตอนนี้ฉันกำลังชี้แจงอย่างชัดเจน: …

16
ใช้เวลาในการดีบักมากเกินไป
เมื่อวานฉันเปิดตัวโครงการเว็บ v1.0 ที่ฉันใช้เวลาทำงานประมาณ 6 สัปดาห์ (เปิดและปิดนั่นคือ) ฉันไม่ได้ทำบันทึกเวลาที่แน่นอน แต่จากประสบการณ์ของฉันฉันจะประเมินว่าตลอดเวลาที่ฉันใช้การเขียนโปรแกรมครึ่งหนึ่งนั้นใช้การดีบัก ฉันคาดการณ์ว่าจะใช้เวลาในการดีบักประมาณ 15-20 ชั่วโมงซึ่งเป็นเวลาอันมีค่าที่ดีกว่าที่จะใช้การเขียนโค้ดใหม่หรือทำโครงการให้เสร็จเร็วขึ้น โดยเฉพาะอย่างยิ่งมันไม่ได้ช่วยว่าฉันจะเป็นนักศึกษาใหม่ในวิทยาลัยใน 5 สัปดาห์ สิ่งคือฉันรู้สึกไม่ดีที่ใช้เวลาในการดีบั๊กทุกครั้ง เวลาที่ใช้ในการดีบักนั้นทำให้ฉันรู้ว่าฉันทำผิดพลาดโง่ ๆ ในขณะที่ฉันกำลังพัฒนาโครงงานของฉันความผิดพลาดที่ทำให้ฉันต้องใช้เวลาพอสมควรในการแก้ไข ฉันจะป้องกันไม่ให้สิ่งนี้เกิดขึ้นในอนาคตได้อย่างไร ฉันไม่ต้องการใช้จ่าย 50% ของการดีบักเวลาฉันควรใช้การดีบัก 10% และส่วนที่เหลือเขียนโค้ดใหม่ มีเทคนิคอะไรบ้างที่ฉันสามารถพยายามช่วยให้ฉันไปถึงเป้าหมายนี้

8
เหตุใดการใช้คีย์สตริงจึงถือว่าเป็นความคิดที่ไม่ดี
สิ่งนี้ได้ดักฟังฉันมาระยะหนึ่งแล้ว เวลาส่วนใหญ่เมื่อมันมาถึงการจัดเก็บข้อมูลในโครงสร้างเช่นแฮชเทเบิลโปรแกรมเมอร์หนังสือและบทความยืนยันว่าองค์ประกอบการจัดทำดัชนีในโครงสร้างดังกล่าวโดยค่าสตริงถือว่าเป็นการปฏิบัติที่ไม่ดี ถึงกระนั้นฉันยังไม่พบแหล่งข้อมูลดังกล่าวเพียงแหล่งเดียวเพื่ออธิบายว่าทำไมจึงถือว่าเป็นการปฏิบัติที่ไม่ดี มันขึ้นอยู่กับภาษาการเขียนโปรแกรมหรือไม่? ในกรอบพื้นฐาน? เกี่ยวกับการใช้งานหรือไม่ ยกตัวอย่างง่ายๆสองอย่างถ้าช่วยได้: ตารางคล้าย SQL ที่แถวถูกทำดัชนีโดยคีย์หลักของสตริง . NET Dictionary ที่มีรหัสเป็น Strings

8
โกหก 2: รหัสควรได้รับการออกแบบรอบ ๆ แบบจำลองของโลกหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันเพิ่งอ่านโพสต์บล็อกของBig Big Liesและฉันมีเวลายากที่จะแก้ไขคำโกหกที่สองซึ่งอ้างถึงที่นี่: (โกหก # 2) รหัสควรได้รับการออกแบบทั่วทั้งโลก ไม่มีค่าในรหัสที่เป็นรูปแบบหรือแผนที่โลกจินตนาการ ฉันไม่รู้ว่าทำไมอันนี้ถึงน่าสนใจสำหรับโปรแกรมเมอร์บางคน แต่มันเป็นที่นิยมอย่างมาก หากมีจรวดในเกมให้มั่นใจได้ว่ามีคลาส "Rocket" (สมมติว่าโค้ดคือ C ++) ซึ่งมีข้อมูลสำหรับจรวดหนึ่งอันและทำจรวด โดยไม่คำนึงถึงการเปลี่ยนแปลงข้อมูลจริง ๆ หรือการจัดวางข้อมูล หรือสำหรับเรื่องนั้นโดยที่ไม่มีความเข้าใจพื้นฐานว่ามีสิ่งใดสิ่งหนึ่งอยู่คงมากกว่าหนึ่งสิ่ง แม้ว่าจะมีบทลงโทษมากมายเกี่ยวกับประสิทธิภาพสำหรับการออกแบบประเภทนี้สิ่งที่สำคัญที่สุดคือมันไม่ได้ปรับขนาด เลย หนึ่งร้อยจรวดมีค่าใช้จ่ายหนึ่งร้อยเท่าของจรวด และมีแนวโน้มว่าจะมีราคาสูงกว่านั้นมาก! แม้แต่ผู้ที่ไม่ใช่โปรแกรมเมอร์ก็ไม่ควรมีเหตุผลใด ๆ ประหยัดจากขนาด หากคุณมีอะไรมากกว่านี้ก็ควรจะถูกกว่าไม่แพงกว่า และวิธีที่จะทำคือการออกแบบข้อมูลอย่างถูกต้องและจัดกลุ่มสิ่งต่าง ๆ โดยการแปลงที่คล้ายกัน นี่คือปัญหาของฉันกับเรื่องโกหกนี้โดยเฉพาะ มีคุณค่าในการใช้รหัสเป็นแบบจำลอง / แผนที่ของโลกจินตนาการในขณะที่การสร้างแบบจำลองโลกแห่งจินตนาการช่วยอย่างน้อยฉันเองเป็นการมองเห็นและจัดระเบียบรหัส สำหรับฉันแล้วการมีคลาส "Rocket" เป็นตัวเลือกที่ถูกต้องสมบูรณ์แบบสำหรับชั้นเรียน บางที "จรวด" อาจถูกแบ่งออกเป็นประเภทของจรวดเช่น AGM-114 Hellfire …

4
ต้องการตัวอย่างมากกว่าเอกสาร มันเป็นปัญหาพฤติกรรมหรือไม่?
เมื่อใดก็ตามที่ฉันเจอAPIใหม่หรือภาษาการเขียนโปรแกรมหรือแม้แต่หน้าลินุกซ์อย่างง่ายฉันมักจะหลีกเลี่ยงพวกเขา (นับตั้งแต่ที่ฉันจำได้) และมักจะพึ่งพาตัวอย่างเพื่อทำความเข้าใจแนวคิดใหม่ ๆ โดยไม่รู้ตัวฉันจะหลีกเลี่ยงเอกสาร / API ทุกครั้งที่มันไม่ตรงไปตรงมาหรือเป็นความลับหรือน่าเบื่อเพียงธรรมดา เป็นเวลาหลายปีแล้วที่ฉันเริ่มเขียนโปรแกรมและตอนนี้ฉันรู้สึกว่าฉันต้องแก้ไขวิธีการของฉันเมื่อฉันรู้ว่าฉันสร้างความเสียหายมากขึ้นโดยการละเว้นจากการอ่านเอกสารที่เป็นความลับ / ยากเนื่องจากยังดีกว่าตัวอย่างเป็นทางการ เอกสารมีความครอบคลุมมากกว่าตัวอย่างจากที่นั่น แม้หลังจากตระหนักว่าตัวอย่างควรได้รับการปฏิบัติเหมือนเป็นค่า "เพิ่ม" แทนที่จะเป็นแหล่ง "หลัก" สำหรับการเรียนรู้ ฉันจะทำลายนิสัยที่ไม่ดีนี้ในฐานะโปรแกรมเมอร์หรือฉันคิดมากได้อย่างไร

4
ทำไมการพัฒนาขับเคลื่อนทดสอบจึงขาดหายไปจากการทดสอบของ Joel
ผมอ่านบล็อกนี้โดยโจ Spolsky เกี่ยวกับ12 ขั้นตอนในการรหัสที่ดีกว่า การขาดการทดสอบพัฒนาขับเคลื่อนทำให้ฉันประหลาดใจจริงๆ ดังนั้นฉันต้องการส่งคำถามไปยังปรมาจารย์ TDD ไม่คุ้มค่ากับความพยายามหรือไม่?

1
seq ใช้บ่อยแค่ไหนในรหัสการผลิต Haskell
ฉันมีประสบการณ์ในการเขียนเครื่องมือขนาดเล็กใน Haskell และฉันพบว่ามันใช้งานง่ายมากโดยเฉพาะการเขียนตัวกรอง (โดยใช้interact) ที่ประมวลผลอินพุตมาตรฐานและไพพ์ไปยังเอาต์พุตมาตรฐาน เมื่อเร็ว ๆ นี้ฉันพยายามใช้ตัวกรองดังกล่าวกับไฟล์ที่มีขนาดใหญ่กว่าปกติประมาณ 10 เท่าและฉันพบStack space overflowข้อผิดพลาด หลังจากอ่านบางส่วน (เช่นที่นี่และที่นี่ ) ฉันได้ระบุแนวทางสองข้อเพื่อประหยัดพื้นที่สแต็ก (Haskellers ที่มีประสบการณ์โปรดแก้ไขให้ฉันถ้าฉันเขียนสิ่งที่ไม่ถูกต้อง): หลีกเลี่ยงการเรียกฟังก์ชั่นแบบเรียกซ้ำที่ไม่ใช่แบบเรียกซ้ำ (ใช้ได้กับทุกภาษาที่ใช้งานได้ซึ่งรองรับการปรับให้เหมาะสมแบบหางเรียก) แนะนำseqให้บังคับให้มีการประเมินผลก่อนของนิพจน์ย่อยเพื่อให้นิพจน์ไม่ใหญ่เกินไปก่อนที่จะถูกลดขนาดลง (นี่เป็นลักษณะเฉพาะของ Haskell หรืออย่างน้อยก็สำหรับภาษาที่ใช้การประเมินแบบขี้เกียจ) หลังจากแนะนำการseqโทรห้าหรือหกครั้งในรหัสของฉันเครื่องมือของฉันจะทำงานได้อย่างราบรื่นอีกครั้ง (เช่นเดียวกับข้อมูลขนาดใหญ่) อย่างไรก็ตามฉันพบว่ารหัสต้นฉบับอ่านง่ายขึ้นอีกเล็กน้อย เนื่องจากฉันไม่ใช่โปรแกรมเมอร์ Haskell ที่มีประสบการณ์ฉันต้องการถามว่าการแนะนำseqด้วยวิธีนี้เป็นวิธีปฏิบัติทั่วไปหรือไม่และบ่อยครั้งที่บุคคลทั่วไปจะเห็นseqในรหัสการผลิต Haskell หรือมีเทคนิคใดบ้างที่อนุญาตให้หลีกเลี่ยงการใช้seqบ่อยเกินไปและยังคงใช้พื้นที่สแต็กน้อย?

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

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

17
เหตุใดนิพจน์ทั่วไปจึงน่าดึงดูดอย่างมาก
ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ส่วนที่ 1 , ส่วนที่2 , ฉันคิดว่าคุณคงไม่สามารถจำตัวอย่างอื่นได้ยาก สิ่งที่: ถ้ามีมากกว่าหนึ่งวิธีในการแก้ปัญหาโปรแกรมเมอร์ PHP (ฉันมักจะเรียกดูแท็ก PHP ใน StackOverflow) จะขอความช่วยเหลือในการแก้ปัญหาที่เกี่ยวข้องกับการแสดงออกปกติ แม้ว่าจะประหยัดน้อยลงแม้ว่าคู่มือ php จะแนะนำ ( ลิงก์ ) ให้ใช้str_replaceแทนฟังก์ชันpreg_*หรือereg_*ฟังก์ชันใด ๆเมื่อไม่จำเป็นต้องใช้กฎการแทนที่แฟนซี มีใครบางคนสงสัยว่าทำไมสิ่งนี้ถึงเกิดขึ้น? อย่าเข้าใจฉันผิดเพื่อนที่ดีที่สุดของฉันบางคนเป็นสำนวนปกติและฉันก็ไม่ได้ดูถูก Perl สิ่งที่ฉันไม่ได้รับคือเหตุผลที่ไม่มีทางเลือกใด ๆ แม้เมื่อ overkill ชัดเจน (regex เพื่อสลับสตริง) หรือความซับซ้อนของรหัสเพิ่มขึ้นอย่างมาก (regex สำหรับรับข้อมูลจาก html ใน PHP )

3
ฉันควรหลีกเลี่ยงการใช้ int ที่ไม่ได้ลงชื่อใน C # หรือไม่
ฉันเพิ่งคิดเกี่ยวกับการใช้จำนวนเต็มไม่ได้ลงนามใน C # (และฉันคิดว่าอาร์กิวเมนต์ที่คล้ายกันสามารถพูดเกี่ยวกับ "ภาษาระดับสูงอื่น ๆ ") เมื่อต้องการจำนวนเต็มปกติแล้วฉันไม่ต้องเผชิญกับภาวะที่กลืนไม่เข้าคายไม่ออกของขนาดของจำนวนเต็มตัวอย่างจะเป็นคุณสมบัติอายุของคลาสบุคคล (แต่คำถามไม่ได้ จำกัด เฉพาะคุณสมบัติ) โดยที่ในใจมีเท่าที่ฉันเห็นเพียงหนึ่งข้อได้เปรียบของการใช้จำนวนเต็มไม่ได้ลงนาม ("uint") มากกว่าจำนวนเต็มลงนาม ("int") - สามารถอ่านได้ หากฉันต้องการแสดงความคิดเห็นว่าอายุเป็นบวกได้ฉันสามารถบรรลุสิ่งนี้ได้โดยการตั้งค่าประเภทอายุเป็น uint ในทางกลับกันการคำนวณจำนวนเต็มที่ไม่ได้ลงชื่อสามารถนำไปสู่ข้อผิดพลาดทุกประเภทและทำให้การดำเนินการเช่นการลบสองอายุทำได้ยาก (ฉันอ่านนี่เป็นหนึ่งในเหตุผลที่ Java ละเว้นจำนวนเต็มที่ไม่ได้ลงชื่อ) ในกรณีของ C # ฉันยังสามารถคิดได้ว่าประโยคของผู้พิทักษ์จะเป็นทางออกที่ให้สิ่งที่ดีที่สุดในโลกทั้งสอง แต่สิ่งนี้จะไม่สามารถใช้ได้เมื่อฉันยกตัวอย่างเช่นอายุจะผ่านไปยังวิธีการบางอย่าง วิธีแก้ปัญหาคือการกำหนดคลาสที่เรียกว่า Age และให้อายุคุณสมบัติเป็นสิ่งเดียวที่มี แต่รูปแบบนี้จะให้ฉันสร้างคลาสจำนวนมากและจะเป็นแหล่งที่มาของความสับสน (นักพัฒนาอื่น ๆ จะไม่ทราบเมื่อวัตถุเป็นเพียงเสื้อคลุม และเมื่อมันมีอะไรบางอย่างที่ทำให้สับสนมากขึ้น) แนวปฏิบัติทั่วไปที่ดีที่สุดเกี่ยวกับปัญหานี้มีอะไรบ้าง ฉันจะจัดการกับสถานการณ์ประเภทนี้ได้อย่างไร

1
“ exit (-1)” มาจากไหน?
ฉันเห็นในจำนวนมากซอฟต์แวร์เดิมและบทเรียนที่ไม่ดีบนอินเทอร์เน็ตที่แนะนำให้ใช้exit(-1), return -1หรือคล้ายกันที่จะเป็นตัวแทน "เลิกผิดปกติ" ปัญหาคือใน POSIX อย่างน้อย-1ไม่เคยมีมาก่อนและไม่ใช่รหัสสถานะที่ถูกต้อง man 3 exitแสดงให้เห็นว่าexit()ผลตอบแทนที่คุ้มค่าของการstatus &amp; 0377ไปยังผู้ปกครองที่มีความหมายว่าจะกลายเป็น-1 255สำหรับระบบที่ไม่ใช่ POSIX EXIT_FAILUREขอแนะนำให้พกพาได้ แต่ฉันไม่เคยเห็น "-1 หมายถึงการสิ้นสุดที่ผิดปกติ" ร่วมกับ "EXIT_FAILURE อาจเป็นสิ่งที่นอกเหนือจาก 1" ซึ่งบ่งชี้ว่าพวกเขาเชื่ออย่างชัดเจนว่า "-1" นั้นเป็นเรื่องปกติแม้ในระบบที่ไม่ใช่ POSIX ต่อไปนี้เป็นตัวอย่างของคำถาม StackOverflowที่ทำให้เกิดปัญหานี้ ซอฟต์แวร์ "unrealircd" เป็นตัวอย่างของโปรแกรมที่ใช้exit(-1)ในการยกเลิกโปรแกรม systemdในทางปฏิบัตินี้ทำให้ยากที่จะติดต่อกับ รูปแบบการต่อต้านนี้มาจากไหน มันถูกต้องในบางบริบท?

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

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