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

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

16
ฉันควรดูแลสภาพการแข่งขันซึ่งแทบไม่มีโอกาสเกิดขึ้นจริงหรือ
ลองพิจารณาบางอย่างเช่นแอปพลิเคชัน GUI ที่เธรดหลักกำลังอัปเดต UI เกือบจะทันทีและเธรดอื่น ๆ กำลังโพลข้อมูลผ่านเครือข่ายหรือสิ่งที่รับประกันว่าจะใช้เวลา 5-10 วินาทีเพื่อให้งานเสร็จ ฉันได้รับคำตอบที่แตกต่างกันสำหรับเรื่องนี้ แต่บางคนบอกว่าถ้ามันเป็นสภาพการแข่งขันที่เป็นไปไม่ได้ทางสถิติไม่ต้องกังวลเลย แต่คนอื่น ๆ ก็บอกว่าถ้ามี 10 -53 % คุณไม่ได้อยู่ที่ตัวเลขนี่คือสิ่งที่ฉันเคยได้ยิน) เกี่ยวกับเวทมนตร์ของวูดูที่เกิดขึ้นเนื่องจากสภาพการแข่งขันให้ขอรับ / ปลดล็อกเธรดที่ต้องการเสมอ คุณคิดยังไง? มันเป็นวิธีการเขียนโปรแกรมที่ดีในการจัดการสภาพการแข่งขันในสถานการณ์ที่เป็นไปไม่ได้ทางสถิติหรือไม่? หรือมันจะไม่จำเป็นโดยสิ้นเชิงหรือต่อต้านการเพิ่มรหัสบรรทัดเพิ่มเติมเพื่อขัดขวางการอ่าน?


3
Combinators คืออะไรและนำไปใช้กับโครงการการเขียนโปรแกรมอย่างไร (คำอธิบายการปฏิบัติ)
Combinators คืออะไร ฉันกำลังหา: คำอธิบายการปฏิบัติ ตัวอย่างการใช้งาน ตัวอย่างของวิธีการที่ combinators ปรับปรุงคุณภาพ / รหัสทั่วไป ฉันไม่ได้กำลังมองหา: คำอธิบายของ combinators ที่ไม่ได้ช่วยให้ฉันทำงานเสร็จ (เช่น Y-combinator)

14
การออกแบบ RESTful API ฉันจะกลับมาได้อย่างไรหากไม่มีแถว?
ขณะนี้ฉันกำลังเขียนรหัส API สำหรับเครือข่ายสังคมด้วย Slim Framework คำถามของฉันคืออะไรแนวปฏิบัติที่ดีที่สุดเมื่อไม่มีแถวที่จะส่งคืนในโครงสร้าง json คืออะไร ให้บอกว่าการโทรนี้/ v1 / get / ภาพยนตร์ส่งคืน 2 แถวจากชื่อภาพยนตร์ตาราง: [ {"name": "Ghostbusters"}, {"name": "Indiana Jones"} ] แต่ฉันโทรหา/ v1 / get / หนังสือและไม่มีแถวในตารางนั้น ฉันควรคืนโครงสร้างว่างเปล่าไหม [ ] ... หรือว่าจะเป็นข้อความและรหัสข้อผิดพลาดดีกว่า [ "errors": { "message": "no matches found", "code": 134 } ] ข้อปฏิบัติที่ดีกว่าคืออะไร (API จะใช้ในแอพ iOS และ …

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

11
“ ง่ายต่อการให้เหตุผล” - นั่นหมายความว่าอย่างไร [ปิด]
ฉันเคยได้ยินหลายครั้งเมื่อนักพัฒนาซอฟต์แวร์รายอื่นใช้วลีนั้นเพื่อ "โฆษณา" รูปแบบบางอย่างหรือพัฒนาแนวทางปฏิบัติที่ดีที่สุด ส่วนใหญ่วลีนี้จะใช้เมื่อคุณกำลังพูดถึงประโยชน์ของการเขียนโปรแกรมการทำงาน วลี "เหตุผลง่าย ๆ เกี่ยวกับ" ถูกนำมาใช้อย่างที่เป็นอยู่โดยไม่มีคำอธิบายหรือตัวอย่างโค้ด ดังนั้นสำหรับฉันมันจะกลายเป็นเหมือน "buzz" ถัดไปซึ่งเป็นคำที่นักพัฒนา "มีประสบการณ์" ใช้ในการเจรจา คำถาม: คุณสามารถยกตัวอย่างบางส่วนของ "ไม่ง่ายที่จะให้เหตุผลเกี่ยวกับ" ดังนั้นจึงสามารถนำมาเปรียบเทียบกับตัวอย่าง "ง่ายต่อการเหตุผล"

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

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

15
รหัสสะอาด: ฟังก์ชั่นที่มีพารามิเตอร์น้อย [ปิด]
ฉันอ่านบทแรกของรหัสสะอาดโดยโรเบิร์ตซีมาร์ตินและดูเหมือนว่าฉันจะค่อนข้างดี แต่ฉันมีข้อสงสัยในส่วนหนึ่งมันก็บอกว่ามันเป็นสิ่งที่ดี (ทางปัญญา) ว่าฟังก์ชั่นควรมีพารามิเตอร์น้อย เท่าที่เป็นไปได้มันยังแสดงให้เห็นว่าพารามิเตอร์ 3 ตัวหรือมากกว่านั้นมากเกินไปสำหรับฟังก์ชั่น (ซึ่งฉันคิดว่ามันพูดเกินจริงและอุดมการณ์) ดังนั้นฉันจึงเริ่มสงสัย ... ทั้งแนวปฏิบัติในการใช้ตัวแปรส่วนกลางและการส่งผ่านข้อโต้แย้งจำนวนมากในฟังก์ชั่นอาจเป็นวิธีปฏิบัติในการเขียนโปรแกรมที่ไม่ดี แต่การใช้ตัวแปรทั่วโลกสามารถลดจำนวนพารามิเตอร์ในฟังก์ชันได้อย่างมาก ... ดังนั้นฉันอยากได้ยินสิ่งที่คุณคิดเกี่ยวกับมันมันมีค่าใช้ตัวแปรทั่วโลกเพื่อลดจำนวนพารามิเตอร์ของฟังก์ชั่นหรือไม่? ในกรณีใดบ้าง สิ่งที่ฉันคิดคือมันขึ้นอยู่กับปัจจัยหลายประการ: ขนาดรหัสต้นฉบับ จำนวนพารามิเตอร์โดยเฉลี่ยของฟังก์ชั่น จำนวนฟังก์ชั่น ความถี่ที่ใช้ตัวแปรเดียวกัน ในความคิดของฉันถ้าขนาดซอร์สโค้ดมีขนาดค่อนข้างเล็ก (เช่นน้อยกว่า 600 บรรทัดของโค้ด) มีฟังก์ชั่นมากมายตัวแปรเดียวกันถูกส่งผ่านเป็นพารามิเตอร์และฟังก์ชั่นมีพารามิเตอร์มากมายจากนั้นใช้ตัวแปรทั่วโลกจะคุ้มค่า แต่ฉัน อยากรู้ว่า ... คุณแบ่งปันความคิดเห็นของฉัน? คุณคิดอย่างไรกับกรณีอื่นที่ซอร์สโค้ดใหญ่กว่า ฯลฯ ? ปล . ฉันเห็นโพสต์นี้ชื่อเรื่องนั้นคล้ายกันมาก แต่เขาไม่ถามสิ่งที่ฉันอยากรู้

3
วิธีใดเป็นวิธีปฏิบัติที่ดีกว่าสำหรับตัวอย่างหรือแบบสถิต?
คำถามนี้เป็นเรื่องส่วนตัว แต่ฉันแค่อยากรู้ว่าโปรแกรมเมอร์ส่วนใหญ่เข้าหานี้อย่างไร ตัวอย่างด้านล่างเป็นแบบหลอก -C # แต่ควรใช้กับ Java, C ++ และภาษา OOP อื่น ๆ ด้วย อย่างไรก็ตามเมื่อเขียนวิธีการช่วยเหลือในชั้นเรียนของฉันฉันมักจะประกาศให้พวกเขาเป็นแบบคงที่และเพียงผ่านเขตข้อมูลหากวิธีการช่วยเหลือที่พวกเขาต้องการ ตัวอย่างเช่นกำหนดรหัสข้างล่างนี้ผมชอบที่จะใช้วิธีการโทร # 2 class Foo { Bar _bar; public void DoSomethingWithBar() { // Method Call #1. DoSomethingWithBarImpl(); // Method Call #2. DoSomethingWithBarImpl(_bar); } private void DoSomethingWithBarImpl() { _bar.DoSomething(); } private static void DoSomethingWithBarImpl(Bar bar) { …

14
โปรแกรมเมอร์ส่วนใหญ่คัดลอกและวางรหัสหรือไม่ [ปิด]
ฉันเรียนรู้ตั้งแต่เนิ่นๆว่าการตัดและวางโค้ดของคนอื่นใช้เวลานานกว่านั้นในระยะยาวที่เขียนด้วยตัวคุณเอง ในความคิดของฉันถ้าคุณไม่เข้าใจจริงๆรหัส cut & paste อาจมีปัญหาซึ่งจะเป็นฝันร้ายที่จะแก้ไข อย่าเข้าใจฉันผิดฉันหมายถึงการค้นหารหัสประชาชนอื่น ๆ และการเรียนรู้จากมันเป็นสิ่งจำเป็น แต่เราไม่เพียงแค่วางลงในแอปของเรา เราเขียนแนวคิดใน app ของเรา แต่ฉันได้ยินเกี่ยวกับคนที่ถูกตัดและวางอย่างต่อเนื่องและพวกเขาพูดถึงมันเหมือนเป็นเรื่องธรรมดา ฉันเห็นความคิดเห็นของผู้อื่นซึ่งแสดงว่าเป็นเรื่องธรรมดา ดังนั้นโปรแกรมเมอร์ส่วนใหญ่จะตัดและวางรหัสหรือไม่

6
ควรตรวจสอบ `c> = '0'` หรือ` c> = 48` หรือไม่?
หลังจากการสนทนากับเพื่อนร่วมงานของฉันฉันได้รับคำถาม 'ปรัชญา' เกี่ยวกับวิธีจัดการกับชนิดข้อมูลถ่านใน Java ตามแนวทางปฏิบัติที่ดีที่สุด สมมติว่าสถานการณ์ง่าย ๆ(เห็นได้ชัดว่านี่เป็นเพียงตัวอย่างง่ายๆเพื่อให้ความหมายในการฝึกฝนสำหรับคำถามของฉัน)โดยที่ String 's' เป็นอินพุตคุณต้องนับจำนวนอักขระที่เป็นตัวเลขในนั้น นี่คือโซลูชันที่เป็นไปได้ 2 แบบ: 1) for(int i=0; i<s.length(); i++) { if(s.charAt(i) >= 48 && s.charAt(i) <= 57) { n++; } } 2) for(int i=0; i<s.length(); i++) { if(s.charAt(i) >= '0' && s.charAt(i) <= '9' ) { n++; } } ข้อใดที่สอง 'สะอาด' …

4
สิ่งที่เป็นนามธรรมมากเกินไปอาจไม่ดีหรือไม่?
ในฐานะโปรแกรมเมอร์ฉันรู้สึกว่าเป้าหมายของเราคือการให้ abstractions ที่ดีในรูปแบบโดเมนที่กำหนดและตรรกะทางธุรกิจ แต่สิ่งที่เป็นนามธรรมนี้ควรหยุด วิธีที่จะทำให้การแลกเปลี่ยนระหว่างสิ่งที่เป็นนามธรรมและผลประโยชน์ทั้งหมดของมัน (ความยืดหยุ่นความสะดวกในการเปลี่ยนแปลง ฯลฯ ) และความง่ายในการทำความเข้าใจรหัสและผลประโยชน์ทั้งหมดของมัน ฉันเชื่อว่าฉันมักจะเขียนโค้ดที่เป็นนามธรรมมากเกินไปและฉันก็ไม่รู้ว่ามันดีแค่ไหน ฉันมักจะเขียนมันเหมือนว่ามันเป็นไมโครเฟรมเวิร์กซึ่งประกอบด้วยสองส่วน: โมดูลขนาดเล็กที่ติดอยู่ในกรอบขนาดเล็ก: โมดูลเหล่านี้เข้าใจง่ายพัฒนาและดูแลรักษาเป็นหน่วยเดียว รหัสนี้แสดงถึงรหัสที่ใช้งานได้จริงตามที่อธิบายไว้ในข้อกำหนด กำลังเชื่อมต่อรหัส ตอนนี้ที่นี่ฉันเชื่อว่ายืนปัญหา รหัสนี้มีแนวโน้มที่จะซับซ้อนเพราะบางครั้งก็เป็นนามธรรมและยากที่จะเข้าใจในตอนแรก; สิ่งนี้เกิดขึ้นเนื่องจากความจริงที่ว่ามันเป็นเพียงนามธรรมที่บริสุทธิ์ฐานในความเป็นจริงและตรรกะทางธุรกิจที่ถูกดำเนินการในรหัสที่นำเสนอ 1; จากเหตุผลนี้รหัสนี้ไม่คาดว่าจะมีการเปลี่ยนแปลงเมื่อทดสอบ นี่เป็นวิธีการเขียนโปรแกรมที่ดีหรือไม่? ว่ามันมีการเปลี่ยนรหัสกระจัดกระจายมากในหลายโมดูลและง่ายมากที่จะเข้าใจและไม่เปลี่ยนแปลงรหัสซับซ้อนมากจาก POV นามธรรม? รหัสทั้งหมดควรจะมีความซับซ้อนเหมือนกัน (นั่นคือรหัส 1 ซับซ้อนกว่าและเชื่อมโยงกันและรหัส 2 ง่ายขึ้น) เพื่อให้ทุกคนที่มองผ่านมันสามารถเข้าใจได้ในระยะเวลาที่เหมาะสม แต่การเปลี่ยนแปลงมีราคาแพงหรือวิธีแก้ปัญหาที่นำเสนอข้างต้น "การเปลี่ยนรหัส" นั้นง่ายต่อการเข้าใจดีบั๊กเปลี่ยนและ "การเชื่อมโยงโค้ด" นั้นยาก หมายเหตุ: นี่ไม่เกี่ยวกับการอ่านรหัส! ทั้งโค้ดที่ 1 และ 2 สามารถอ่านได้ แต่โค้ดที่ 2 มาพร้อมกับ abstractions ที่ซับซ้อนมากขึ้นในขณะที่ code 1 …

6
จำเป็นหรือไม่ที่จะต้องปฏิบัติตามแนวทางการเขียนโปรแกรมเชิงป้องกันสำหรับโค้ดที่จะไม่เปิดเผยต่อสาธารณะ
ฉันกำลังเขียนการนำเกมจาวามาใช้ในเกมไพ่ดังนั้นฉันจึงสร้างคอลเลกชันชนิดพิเศษที่ฉันเรียกว่าโซน วิธีการปรับเปลี่ยนทั้งหมดของคอลเลกชันของ Java ไม่ได้รับการสนับสนุน แต่มีวิธีการใน Zone API move(Zone, Card)ซึ่งย้ายการ์ดจากโซนที่กำหนดไปยังตัวมันเอง (สำเร็จโดยเทคนิคแพคเกจส่วนตัว) ด้วยวิธีนี้ฉันสามารถมั่นใจได้ว่าไม่มีไพ่ถูกนำออกจากโซนและหายตัวไป สามารถย้ายไปยังโซนอื่นได้เท่านั้น คำถามของฉันคือการเข้ารหัสป้องกันแบบนี้มีความจำเป็นมากแค่ไหน? มัน "ถูกต้อง" และรู้สึกเหมือนถูกวิธี แต่ไม่ใช่ว่า Zone API จะเป็นส่วนหนึ่งของห้องสมุดสาธารณะ มันเป็นเพียงสำหรับฉันดังนั้นมันเหมือนกับว่าฉันกำลังปกป้องรหัสของฉันจากตัวเองเมื่อฉันอาจจะมีประสิทธิภาพมากขึ้นโดยเพียงแค่ใช้คอลเลกชันมาตรฐาน ฉันควรใช้ความคิดโซนนี้ไกลแค่ไหน ใครบ้างที่สามารถให้คำแนะนำกับฉันเกี่ยวกับการรักษาสัญญาในชั้นเรียนที่ฉันเขียนโดยเฉพาะอย่างยิ่งสำหรับคนที่ไม่ได้เผยแพร่สู่สาธารณะ

14
เป็นความคิดที่ดีหรือไม่ที่จะใส่รหัสลงในแอปพลิเคชันของเรา
เป็นความคิดที่ดีหรือไม่ที่จะใส่รหัสลงในแอปพลิเคชันของเรา หรือเป็นสิ่งที่ถูกต้องเสมอที่จะเรียกค่าเหล่านี้แบบไดนามิกในกรณีที่จำเป็นต้องเปลี่ยนหรือไม่?

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