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

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

12
กฎที่ไม่ได้เขียนของการเขียนรหัสของสมาชิกทีมคนอื่น [ปิด]
เรากำลังฝึกการเป็นเจ้าของรหัสโดยรวม เพื่อความเข้าใจของฉันนี่หมายความว่านักพัฒนาซอฟต์แวร์สามารถเปลี่ยนบรรทัดของรหัสใด ๆ เพื่อเพิ่มฟังก์ชันการทำงานเพื่อ refactor แก้ไขข้อบกพร่องหรือปรับปรุงการออกแบบ แต่สิ่งที่เกี่ยวกับการเขียนใหม่ของรหัสจากนักพัฒนาที่ยังอยู่ในทีม? ฉันควรถามเขาก่อน การปฏิบัติที่ดีที่สุดคืออะไร?

14
การเขียนโปรแกรมหรือวิทยาการคอมพิวเตอร์โดยทั่วไปเกี่ยวกับอัลกอริทึมหรือไม่
ในฐานะนักเรียนระดับบัณฑิตศึกษาฉันพบว่าเป็นเรื่องปกติมากขึ้นสำหรับ บริษัท ที่มีชื่อเสียง (เช่น Google, Facebook, Microsoft, ... ) เพื่อวางคำถามอัลกอริทึมในการทดสอบและการสัมภาษณ์ สองสามสตาร์ทอัพที่ฉันสมัครเพื่อถามเกี่ยวกับอัลกอริทึม ฉันสงสัยว่าความคล่องแคล่วของอัลกอริทึมเป็นสิ่งสำคัญที่สุดสำหรับนักพัฒนาซอฟต์แวร์ใน บริษัท เหล่านั้นหรือไม่? หากคำตอบคือใช่วิธีที่ดีที่สุดในการเรียนรู้และฝึกฝนเกี่ยวกับอัลกอริธึมคืออะไร? ฉันดูเหมือนจะไม่สนใจที่จะแก้ไขปัญหาที่ซับซ้อนเกินไปที่พบในตำราเรียนหรือเว็บไซต์ส่วนใหญ่ แม้ว่าจะเข้าใจอัลกอริธึมพื้นฐาน (เช่น quicksort, bubbleort, ... ) ได้อย่างง่ายดาย แต่ฉันพบว่ามันยากที่จะจำและนำกลับมาใช้ใหม่ได้ในภายหลัง ขอบคุณ P / S: ถ้าคุณถามฉันในสิ่งที่ฉันชอบมันกำลังสร้างโปรแกรมที่ดีในการแก้ปัญหาของผู้ใช้อย่างสร้างสรรค์ ฉันคิดว่าไม่จำเป็นต้องหมายความว่าซอฟต์แวร์จะต้องมีความซับซ้อนมาก

11
มันเป็นนิสัยที่ไม่ดีที่ไม่ได้ใช้อินเตอร์เฟสหรือไม่? [ปิด]
ฉันใช้ส่วนต่อประสานที่ไม่ค่อยพบและพบได้ทั่วไปในรหัสอื่น นอกจากนี้ฉันสร้างคลาสย่อยและคลาสพิเศษ (ในขณะที่สร้างคลาสของตัวเอง) ไม่ค่อยมีในรหัสของฉัน มันเป็นสิ่งที่ไม่ดี? คุณแนะนำให้เปลี่ยนสไตล์นี้ไหม สไตล์นี้มีผลข้างเคียงหรือไม่? เป็นเพราะฉันไม่ได้ทำงานในโครงการขนาดใหญ่หรือไม่?

7
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะมีส่วนต่อประสานเพื่อกำหนดค่าคงที่หรือไม่?
ฉันกำลังเขียนคลาสชุดทดสอบ Junit ใน Java มีค่าคงที่หลายค่าเช่นสตริงที่ฉันต้องการในคลาสทดสอบที่แตกต่างกัน ฉันกำลังคิดเกี่ยวกับอินเทอร์เฟซที่กำหนดพวกเขาและทุกชั้นทดสอบจะใช้มัน ประโยชน์ที่ฉันเห็นมี: เข้าถึงค่าคงที่ได้ง่าย: MY_CONSTANTแทนThatClass.MY_CONSTANT แต่ละค่าคงที่กำหนดเพียงครั้งเดียว วิธีนี้ค่อนข้างดีหรือไม่ดี? ฉันรู้สึกว่าใช้แนวคิดของอินเตอร์เฟสแบบไม่เหมาะสม คุณสามารถตอบโดยทั่วไปเกี่ยวกับอินเทอร์เฟซ / ค่าคงที่ แต่ยังเกี่ยวกับการทดสอบหน่วยหากมีบางสิ่งที่พิเศษเกี่ยวกับมัน

8
การใช้โฟลเดอร์“ เอกสาร” ของ Windows ในโปรแกรมอย่างถูกกฎหมาย
ทุกคนที่ชอบโฟลเดอร์เอกสารของพวกเขาที่จะมีเฉพาะสิ่งที่พวกเขาอยู่ที่นั่นรู้ว่าโฟลเดอร์เอกสารมาตรฐานไม่เหมาะสมอย่างสมบูรณ์สำหรับงานนี้ ทุกโปรแกรมที่ดูเหมือนว่าจะต้องการที่จะนำมันตั้งค่าข้อมูลหรือสิ่งที่ไม่เกี่ยวข้องอย่างเท่าเทียมกันเข้าไปในเอกสารโฟลเดอร์แม้จะมีความจริงที่ว่ามีโฟลเดอร์เฉพาะสำหรับงานนี้1 เพื่อที่จะได้เสียงที่ไม่ว่างเปล่าให้นำโฟลเดอร์ "Documents" ส่วนตัวของฉันไปเป็นตัวอย่าง ฉันไม่เคยใช้มันในกรณีที่ฉันไม่เคยบันทึกสิ่งใด ๆ ลงในโฟลเดอร์นี้ด้วยตัวเอง และยังมี 46 โฟลเดอร์และ 3 ไฟล์ที่ระดับบนสุดรวม 800 ไฟล์ใน 500 โฟลเดอร์ นั่นคือ "เอกสาร" 190 MB ที่ฉันไม่ได้สร้าง เห็นได้ชัดว่าเอกสารจริงใด ๆ จะหายไปทันทีในระเบียบ คำถามของฉันคือ : สามารถทำอะไรเพื่อปรับปรุงสถานการณ์ให้เพียงพอเพื่อให้ "เอกสาร" มีประโยชน์อีกครั้งพูดในอีก 5 ปีข้างหน้า? ผู้เขียนโปรแกรมสามารถได้รับการศึกษาบ้างหรือไม่ที่จะไม่ใช้มันเป็นพื้นทิ้ง? ระบบปฏิบัติการสามารถเริ่มรายงานตำแหน่ง "ปลอม" บางอย่างที่ซ่อนอยู่ภายใต้ AppData ผ่าน API ที่มีอยู่ในขณะที่อนุญาตเฉพาะ Explorer และกล่องโต้ตอบเปิด / บันทึกต่างๆเพื่อทราบว่าโฟลเดอร์เอกสาร "ของจริง" อยู่ที่ไหน หรือความพยายามใด ๆ ที่ไร้ประโยชน์อย่างสมบูรณ์หรือไม่จำเป็น? 1สำหรับระเบียนต่อไปนี้เป็นบทสรุปโดยย่อของไดเรกทอรีมาตรฐานต่างๆที่ควรใช้แทน …

5
มันถือว่าเป็นรูปแบบการต่อต้านการอ่านจาก STDIN จากภายในห้องสมุดหรือไม่?
ในขณะที่เขียนห้องสมุดสำหรับโครงการขนาดใหญ่ที่ฉันกำลังทำงานอยู่มีปัญหาเกิดขึ้นซึ่งต้องใช้โทเค็นเพื่อส่งไปยังที่อยู่อีเมลจากนั้นส่งกลับไปยังรหัสที่สามารถใช้เพื่อการใช้งานต่อไป เพื่อนร่วมงานของฉันบอกว่าให้อ่านจาก STDIN (โดยใช้ Python:) code = input("Enter code: ")จากนั้นให้ผู้ใช้ส่งมันมาให้ฉัน แต่สำหรับฉันนี่เป็นวิธีปฏิบัติที่ไม่ดีเนื่องจากห้องสมุดอาจใช้ (ในกรณีนี้จะ) ใช้ในงานแบ็คกราวน์บนเซิร์ฟเวอร์ . ฉันสงสัยว่าสิ่งนี้ถือเป็นรูปแบบการต่อต้านหรือไม่

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

5
คุณควรตั้งโปรแกรมฝั่งเซิร์ฟเวอร์สำหรับเว็บไซต์หรือไม่?
ฉันกำลังจะเริ่มสร้างเว็บไซต์โครงการดนตรีสำหรับเพื่อน ตอนนี้น่าจะง่ายพอสมควร: ไม่มีเนื้อหาแบบไดนามิก (วันทัวร์ ฯลฯ ) และไม่มีอะไรมากไปกว่าเพลงตัวอย่างที่ฝังอยู่หรือลิงก์ SoundCloud ฉันไม่ได้คาดหวังว่าจะใช้อะไรมากกว่าวานิลลา JavaScript และ Bootstrap หรือมูลนิธิสำหรับกริดที่ตอบสนอง มันเพียงพอหรือไม่ ฉันสามารถอัปโหลดไฟล์ HTML, CSS และ JS ไปยังโฮสต์และทำได้หรือไม่หรือฉันควรใช้เวลาในการเขียนโปรแกรมเซิร์ฟเวอร์ backend ใน Node หรือ PHP?

5
จะทำอย่างไรเมื่อคุณไม่สามารถกำหนดค่าบูลีนได้
เรากำลังสร้างเว็บแอปพลิเคชั่นให้กับ บริษัท ซึ่งมีการจัดการอยู่ในแผ่นงาน Excel เท่านั้น เราเกือบจะเสร็จแล้ว แต่เมื่อเร็ว ๆ นี้ฉันได้รับมอบหมายให้นำเข้าข้อมูลทั้งหมดจากแผ่นงานเหล่านั้นไปยังระบบใหม่ของเรา ระบบสร้างขึ้นใน Java แต่การนำเข้านี้เป็นเพียงครั้งเดียวฉันตัดสินใจเขียนสคริปต์ใน Python แทนและนำเข้าโดยตรงด้วยการสืบค้น SQL ที่นี่ปัญหามา โมเดลข้อมูลใหม่มีแอตทริบิวต์ใหม่บางตัวซึ่งไม่รวมอยู่ในข้อมูลที่มีอยู่ ในกรณีส่วนใหญ่นี่ไม่ใช่ปัญหาฉันแค่ใส่ค่าเป็นศูนย์ซึ่งฉันไม่สามารถหาข้อมูลได้ แต่แล้วฉันก็วิ่งเข้าไปหาคุณสมบัติบางอย่างซึ่งเป็นบูลีนและไม่สามารถเป็นค่าเริ่มต้นได้ ก่อนอื่นฉันพยายามอนุญาต null สำหรับเขตข้อมูลเหล่านั้นในฐานข้อมูลของเรา แต่ผู้พัฒนาระดับสูงของฉันบอกให้ฉันไม่ทำ เพราะจะทำให้เกิดปัญหาในระบบของเราในอนาคต และตอนนี้ฉันไม่แน่ใจว่าจะทำอย่างไร วิธีแก้ปัญหาที่ชัดเจนคือการกำหนดค่าบูลีนที่ไม่รู้จักเป็นเท็จ แต่ฉันคิดว่ามันผิดเช่นกันเพราะฉันไม่รู้จริง ๆ ไม่ว่าจะเป็นของปลอม ตัวอย่าง: สมมติว่าคุณมีเอนทิตีคาร์ที่มีพารามิเตอร์ hasRadio ตอนนี้คุณต้องนำเข้าข้อมูลไปยังตัวแบบข้อมูลนี้ แต่ในข้อมูลมีเพียงคอลัมน์ "แบบจำลอง" และ "สี" ไม่เกี่ยวกับการมีหรือไม่มีวิทยุ คุณใส่อะไรลงในคอลัมน์ "hasRadio" ถ้ามันไม่สามารถเป็นโมฆะโดยการออกแบบ? วิธีที่ดีที่สุดในสถานการณ์นี้คืออะไร? เราควรบอกให้ บริษัท กรอกข้อมูลที่หายไปด้วยตนเองหรือไม่? หรือตั้งค่าเริ่มต้นเป็นเท็จ

7
ฉันจะทำให้ความคืบหน้าของฉันได้รับการตรวจสอบในฐานะนักพัฒนาจูเนียร์เดี่ยวได้อย่างไร [ปิด]
ฉันกำลังทำงานให้กับ บริษัท 2 คนในฐานะผู้พัฒนาหลักเดี่ยว เจ้านายของฉันรับลูกค้าสร้างแม่แบบการออกแบบ png และมอบให้ฉัน ระบบนี้ใช้งานได้ดีและฉันสนุกกับมันมาก ประเภทของโครงการที่ฉันทำมีไว้สำหรับธุรกิจขนาดเล็ก - ขนาดกลางและพวกเขามักต้องการระบบ CMS พัฒนาตั้งแต่เริ่มต้นฉันจะสร้างแบ็กเอนด์ที่กำหนดเองสำหรับลูกค้าเพื่อเพิ่ม / แก้ไข / ลบหมวดหมู่แท็กผลิตภัณฑ์ ฯลฯ แล้วส่งออกไปยังส่วนหน้าตามเทมเพลตการออกแบบที่มอบให้ฉัน เมื่อเวลาผ่านไปโครงการต่างๆก็มีความซับซ้อนเพิ่มขึ้นพร้อมกับตะกร้าสินค้า / คุณลักษณะการสั่งซื้อและคุณลักษณะประเภทอีคอมเมิร์ซทั่วไปอื่น ๆ อีกครั้งระบบนี้ทำงานได้ดีและฉันสนุกกับมันจริงๆ ปัญหาของฉันคือการพัฒนาตนเองในฐานะโปรแกรมเมอร์ ฉันใช้เวลาว่างอ่านบล็อกการเขียนโปรแกรมตรวจสอบผ่าน stackexchange อ่านหนังสือแนะนำการเขียนโปรแกรม (ปัจจุบันใน ' The Pragmatic Programmer ' ดีมากจนถึงตอนนี้) ฝึกสมอง ( lumosity.comและปัญหาคณิตศาสตร์khanacademy ) ทำสิ่งต่างๆมากมาย ของการออกกำลังกายและกิจกรรมประเภทการพัฒนาส่วนบุคคลอื่น ๆ ฉันไม่สามารถช่วย แต่รู้สึกว่าฉันกำลังพลาดข้อเสนอแนะวิจารณ์ เจ้านายของฉันยอดเยี่ยมและไม่เคยหยุดยั้งการยกย่องในเรื่องที่เกี่ยวกับงานของฉัน แต่เขาก็โชคร้ายที่ต้องยุ่งกับการตรวจสอบรหัสของฉันหรือพูดตามตรงฉันไม่คิดว่ามันเป็นหนึ่งในความเชี่ยวชาญของเขา . ฉันต้องการที่จะรู้ว่าสิ่งที่ฉันทำผิดและสิ่งที่ฉันทำถูกต้อง ฉันควรจะใส่ตรรกะจำนวนมากนั้นลงในคอนโทรลเลอร์หรือไม่ฉันกำลังปรับเปลี่ยนรหัสของฉันให้มากพอ ฯลฯ …

9
การสร้างคลาสย่อยสำหรับอินสแตนซ์เฉพาะเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่?
พิจารณาการออกแบบดังต่อไปนี้ public class Person { public virtual string Name { get; } public Person (string name) { this.Name = name; } } public class Karl : Person { public override string Name { get { return "Karl"; } } } public class John : Person { public override string Name …

8
อะไรคือคำว่าซอร์สโค้ดที่ใหญ่มากที่คอมมิท [ปิด]
บางครั้งเมื่อเราตรวจสอบประวัติการกระทำของซอฟต์แวร์เราอาจเห็นว่ามีข้อผูกพันบางอย่างที่ใหญ่มาก - พวกเขาอาจเปลี่ยนไฟล์ 10 หรือ 20 ไฟล์ที่มีการเปลี่ยนแปลงหลายร้อยบรรทัดซอร์สโค้ด (เดลต้า) ฉันจำได้ว่ามีคำที่ใช้กันทั่วไปสำหรับการกระทำที่ยิ่งใหญ่ แต่ฉันจำไม่ได้ว่าคำนั้นคืออะไร มีใครช่วยฉันบ้าง อะไรคือคำที่ผู้เขียนโปรแกรมมักใช้เพื่ออ้างถึงการกระทำที่ยิ่งใหญ่และยักษ์ใหญ่? BTW มีการเปลี่ยนแปลงมากมายรวมกันเป็นแนวปฏิบัติที่ดีหรือไม่? ปรับปรุง: ขอบคุณพวกคุณสำหรับการสนทนาที่สร้างแรงบันดาลใจ! แต่ฉันคิดว่า "code bomb" เป็นคำที่ฉันกำลังมองหา

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

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

8
OOP ง่ายขึ้นหรือยากขึ้นหรือไม่ [ปิด]
เมื่อแนวคิดของการเขียนโปรแกรมเชิงวัตถุได้รับการแนะนำให้รู้จักกับโปรแกรมเมอร์เมื่อหลายปีก่อนมันดูน่าสนใจและการเขียนโปรแกรมก็สะอาดขึ้น OOP เป็นเช่นนี้ Stock stock = new Stock(); stock.addItem(item); stock.removeItem(item); นั่นง่ายกว่าที่จะเข้าใจด้วยชื่อที่อธิบายตนเอง แต่ตอนนี้ OOP ที่มีรูปแบบเช่น Data Transfer Objects, Value Objects, Repository, Dependency Injection เป็นต้นนั้นมีความซับซ้อนมากขึ้น เพื่อให้บรรลุถึงข้างต้นคุณอาจต้องสร้างหลายคลาส (เช่น abstract, factory, DAO เป็นต้น) และใช้อินเทอร์เฟซหลายตัว หมายเหตุ: ฉันไม่ขัดกับแนวปฏิบัติที่ดีที่สุดที่ทำให้การทำงานร่วมกันการทดสอบและการรวมระบบง่ายขึ้น

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