คำถามติดแท็ก code-quality

คำถามสำหรับแนวทางปฏิบัติที่ดีที่สุดสำหรับการเขียนโค้ดคุณภาพสูง

8
จะเป็นการดีกว่าหรือที่จะใช้วิธีปฏิบัติที่ไม่ดีที่มีอยู่แล้วหรือวิธีปฏิบัติที่ดีที่ไม่เหมาะสมกับรหัสเดิม
ฉันกำลังคิดเกี่ยวกับเรื่องนี้เพราะฉันพยายามที่จะเขียนส่วนขยายสำหรับซอฟต์แวร์ของบุคคลที่สามที่มีอยู่และฐานข้อมูลของพวกเขาถูกทำให้ผิดปกติอย่างน่ากลัว ฉันต้องการใช้ตารางที่มีอยู่และเพิ่มสาขาใหม่ ฉันมีตัวเลือกในการสร้างตารางใหม่ในสไตล์การออกแบบของพวกเขา (ซึ่งประกอบด้วยเกือบทั้งหมดเป็นอยู่ในตารางใหญ่หนึ่งตาราง) หรือสร้างชุดตารางใหม่ทั้งหมดพร้อมกันและใช้บางสิ่งที่พิเศษเช่น Triggers เพื่อซิงโครไนซ์ข้อมูลระหว่างใหม่และ โต๊ะเก่า ฉันลงเอยด้วยตัวเลือกแรกของการใช้สไตล์การออกแบบที่ไม่ดีที่มีอยู่ แต่ฉันถูกทิ้งให้อยู่กับคำถามนี้: จะดีกว่าไหมถ้ามีแนวทางปฏิบัติที่ไม่ดีที่มีอยู่ก่อนหน้านี้หรือใช้แนวปฏิบัติที่ดีที่ไม่เล่นด้วย มีบางสถานการณ์ที่ฉันควรเลือกสถานการณ์อื่น หมายเหตุ: มีคำตอบมากมายที่เกี่ยวข้องกับการเปลี่ยนรหัสที่ไม่ถูกต้องอย่างช้าๆ แต่ฉันไม่สามารถทำเช่นนั้นได้ รหัสไม่ใช่รหัสของเราและมักจะได้รับการปรับปรุงโดยผู้ขาย ฉันสามารถสร้างมันได้

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

9
จะสื่อสารลำดับการแทรกนั้นสำคัญอย่างไรในแผนที่?
ฉันกำลังดึงชุดของสิ่งอันดับจากฐานข้อมูลและวางลงในแผนที่ แบบสอบถามฐานข้อมูลมีราคาแพง ไม่มีการจัดเรียงองค์ประกอบตามธรรมชาติที่เห็นได้ชัดในแผนที่ แต่ลำดับการแทรกยังคงสำคัญ การเรียงลำดับแผนที่จะเป็นการดำเนินการที่หนักหน่วงดังนั้นฉันต้องการหลีกเลี่ยงการทำเช่นนั้นเนื่องจากผลลัพธ์แบบสอบถามนั้นได้เรียงลำดับตามที่ฉันต้องการแล้ว ดังนั้นฉันเพิ่งเก็บผลลัพธ์แบบสอบถามลงในLinkedHashMapและส่งคืนแผนที่จากวิธี DAO: public LinkedHashMap<Key, Value> fetchData() ฉันมีวิธีprocessDataที่ควรทำการประมวลผลบนแผนที่ - แก้ไขค่าบางอย่างเพิ่มคีย์ / ค่าใหม่ มันถูกกำหนดให้เป็น public void processData(LinkedHashMap<Key, Value> data) {...} อย่างไรก็ตาม linters หลายตัว (Sonar ฯลฯ ) บ่นว่าประเภทของ 'data' ควรเป็นส่วนต่อประสานเช่น 'Map' แทนที่จะใช้ "LinkedHashMap" ( squid S1319 ) โดยพื้นฐานแล้วมันบอกว่าฉันควรจะมี public void processData(Map<Key, Value> data) {...} แต่ฉันต้องการให้ลายเซ็นของวิธีการบอกว่าลำดับของแผนที่มีความสำคัญกับอัลกอริธึมprocessDataเพื่อที่ว่าวิธีการของฉันจะไม่ผ่านแผนที่แบบสุ่มใด ๆ ฉันไม่ต้องการใช้SortedMapเพราะ (จากjavadoc …
24 java  code-quality  map 

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

9
การเพิ่มความซับซ้อนในการลบรหัสที่ซ้ำกัน
ฉันมีหลายคลาสที่สืบทอดมาจากคลาสพื้นฐานทั่วไป Tชั้นฐานมีการเก็บรวบรวมวัตถุหลายของชนิด แต่ละคลาสเด็กต้องสามารถคำนวณค่าที่สอดแทรกจากการรวบรวมวัตถุ แต่เนื่องจากคลาสย่อยใช้ชนิดที่แตกต่างกันการคำนวณจึงแตกต่างกันเล็กน้อยจากคลาสหนึ่งไปอีกชั้น จนถึงตอนนี้ฉันได้คัดลอก / วางรหัสของฉันจากชั้นหนึ่งไปอีกชั้นหนึ่งและทำการแก้ไขเล็กน้อยกับแต่ละรายการ แต่ตอนนี้ฉันกำลังพยายามลบรหัสที่ซ้ำกันและแทนที่ด้วยวิธีการแก้ไขทั่วไปในคลาสพื้นฐานของฉัน อย่างไรก็ตามนั่นเป็นการพิสูจน์ว่าเป็นเรื่องยากมากและวิธีแก้ปัญหาทั้งหมดที่ฉันคิดว่าดูเหมือนซับซ้อนเกินไป ฉันเริ่มคิดว่าหลักการ DRY ไม่ได้นำไปใช้มากในสถานการณ์แบบนี้ แต่ฟังดูเหมือนเป็นการดูหมิ่น ความซับซ้อนเท่าไหร่เมื่อพยายามลบการทำสำเนารหัสมากเกินไป? แก้ไข: ทางออกที่ดีที่สุดที่ฉันสามารถทำได้คือ: ชั้นฐาน: protected T GetInterpolated(int frame) { var index = SortedFrames.BinarySearch(frame); if (index >= 0) return Data[index]; index = ~index; if (index == 0) return Data[index]; if (index >= Data.Count) return Data[Data.Count - 1]; return …

7
“ ตัวอย่างโค้ด” ของฉันควรเป็นอย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการ4 ปีที่แล้ว ฉันเพิ่งได้รับการสัมภาษณ์ทางโทรศัพท์ที่ดี (สำหรับตำแหน่งที่เกี่ยวข้องกับ CakePHP ไม่ใช่ว่ามันสำคัญกับคำถาม) ผู้สัมภาษณ์ดูเหมือนจะประทับใจกับประวัติการทำงานและบุคลิกภาพของฉัน ในตอนท้ายแม้ว่าเขาขอให้ฉันส่งอีเมลตัวอย่างโค้ดให้เขาจากโครงการทำงานที่มีอยู่ของฉัน "เพื่อตรวจสอบว่าคุณไม่ได้เป็นโปรแกรมเมอร์ที่แย่มากเลยฮ่า ๆ !" ฉันไม่กังวลเกินไปที่รหัสของฉันไม่สามารถยืนอยู่บนสองเท้าของตัวเองได้ แต่ฉันเป็นโปรแกรมเมอร์ระดับกลางมากกว่าเป็นผู้เชี่ยวชาญ มีข้อผิดพลาดอะไรที่ชัดเจนที่ฉันควรตรวจสอบให้แน่ใจว่าตัวอย่างโค้ดของฉันไม่ตกหล่นในกรณีที่พวกเขาออกกฎฉันทันที ประการที่สองและนี่อาจเป็นส่วนที่ยากขึ้นของคำถามที่จะตอบคำถามคุณลักษณะใดในตัวอย่างโค้ดที่น่าประทับใจมากที่พวกเขาจะทำให้คุณมีแนวโน้มที่จะชอบโปรแกรมเมอร์มากขึ้น ยินดีต้อนรับความคิดหรือคำแนะนำทั้งหมด!

9
เพื่อนร่วมงานของฉันเป็นคนดี แต่การแสดงของเขาไม่น่าสนใจ ฉันจะบอกเจ้านายของฉันหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันถูกวางในโครงการเมื่อประมาณสามเดือนที่ผ่านมาจนกระทั่งตอนนี้อยู่ระหว่างการพัฒนาโดยผู้พัฒนาที่เพิ่งได้รับการว่าจ้างคนใหม่เพราะมันตกอยู่เบื้องหลัง โครงการนี้เป็นส่วนต่อประสานกับอุปกรณ์การแพทย์ที่มีรายละเอียดปลีกย่อยและค่อนข้างซับซ้อนดังนั้นการวางคนคนหนึ่งในโครงการที่ไม่มีประสบการณ์ใน บริษัท อาจเป็นการตัดสินใจที่ไม่ดีจากมุมมองของผู้บริหาร อย่างไรก็ตามเมื่อฉันเริ่มทำงานกับฉันฉันรู้ว่า ... ดีมันแค่ไม่ทำงานเลย UI ดูดี แต่จริงๆแล้วมันก็ไม่ได้ทำอะไรมากเลยและสิ่งที่มันทำไม่ถูกต้อง อีกครั้งเพื่อความเป็นธรรมสิ่งนี้ส่วนใหญ่เป็นเพราะความจริงที่ว่านักพัฒนานี้ไม่ได้เตรียมที่จะเขียนอินเทอร์เฟซไปยังอุปกรณ์ของเราอย่างถูกต้อง อย่างไรก็ตามฉันก็รู้ได้อย่างรวดเร็วว่ารหัสที่ใช้อยู่นั้นเปราะและยากที่จะดูแล ตอนนี้ฉันไม่ได้อ้างว่าเป็นโปรแกรมเมอร์ที่ดีที่สุดในโลก ฉันทำงานกับคนที่ฉลาดมาก ๆ ซึ่งเป็นนักพัฒนาที่ดีกว่าฉัน แต่ฉันก็พยายามเขียนโค้ดที่เรียบง่ายที่สุดเท่าที่จะทำได้และมีประสิทธิภาพ ฉันทดสอบเช็คอินของฉัน หากฉันเห็นว่ารหัสของฉันยุ่งเหยิงและยากที่จะทำงานด้วย แต่เนิ่นๆฉันจะเปลี่ยนมัน ฉันได้พูดคุยกับเพื่อนร่วมงานของฉันสองสามครั้งเพื่อช่วยเขาเขียนรหัสที่ดีขึ้น นี่เป็นเรื่องยุ่งยากเล็กน้อยเพราะก) เขามีประสบการณ์มากกว่า 20 ปีในสาขานี้และฉันมีเพียง 5 คนเท่านั้นและข) เขาได้รับการว่าจ้างในฐานะผู้เชี่ยวชาญ UX และคนอื่น ๆ มองว่าเขาเป็นบุคคลที่มีประสบการณ์ ที่กล่าวว่าฉันแค่ไม่เห็นมัน เขาเป็นคนดีมากและเขาก็สมเหตุสมผล แต่ครั้งแล้วครั้งเล่าที่เขาตรวจสอบในรหัสที่เปราะบางทำงานเฉพาะในแง่ดีที่สุดของคดีและ 9 ครั้งจาก 10 ฉันจบการแก้ไขข้อบกพร่องในงานของเขา ดูเหมือนรหัสของเขาไม่ชำนาญและเห็นได้ชัดว่าเขาไม่มีระดับประสบการณ์ที่เขาอ้างว่ามีเมื่อเขาได้รับการว่าจ้าง มันมาถึงจุดที่ชั่วโมงพิเศษที่ฉันใช้ในการรีเฟรชรหัสของเขาและแก้ไขข้อบกพร่องของเขา วิธีที่ฉันเห็นฉันมีสองตัวเลือก: อย่าทำอะไรเลยทำก้นของฉันเพื่อให้แน่ใจว่าผลิตภัณฑ์นี้จะออกตรงเวลาและมีประสิทธิภาพและรอให้เขาล้มเหลวในอนาคต …

7
หลีกเลี่ยงวิธีที่ซับซ้อนเกินไป - Cyclomatic Complexity
ไม่แน่ใจว่าจะไปเกี่ยวกับวิธีการนี้เพื่อลดความซับซ้อนของวัฏจักร โซนาร์รายงาน 13 ขณะที่ 10 คาดว่าจะเป็น ฉันแน่ใจว่าไม่มีอะไรเป็นอันตรายต่อการออกจากวิธีการนี้เหมือนเดิมอย่างไรก็ตามเพียงแค่ท้าทายฉันว่าจะทำตามกฎของ Sonar อย่างไร ความคิดใด ๆ ที่จะได้รับการชื่นชมอย่างมาก public static long parseTimeValue(String sValue) { if (sValue == null) { return 0; } try { long millis; if (sValue.endsWith("S")) { millis = new ExtractSecond(sValue).invoke(); } else if (sValue.endsWith("ms")) { millis = new ExtractMillisecond(sValue).invoke(); } else if (sValue.endsWith("s")) …

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

7
คุณภาพของรหัสในการทดสอบหน่วย?
เมื่อเขียนการทดสอบหน่วยควรใช้เวลาเพิ่มเติมเพื่อให้รหัสมีคุณภาพและอ่านง่ายหรือไม่ เมื่อทำการทดสอบฉันมักจะผิดกฎของ Demeterเพื่อการเขียนที่เร็วขึ้นและเพื่อหลีกเลี่ยงการใช้ตัวแปรจำนวนมาก ในทางเทคนิคแล้วการทดสอบหน่วยจะไม่ถูกนำมาใช้ซ้ำโดยตรง - มันถูกผูกไว้กับรหัสอย่างเคร่งครัดดังนั้นฉันจึงไม่เห็นเหตุผลที่จะใช้เวลากับพวกเขามากนัก พวกเขาจะต้องใช้งานได้เท่านั้น

2
เมื่อใดควรใช้ def ใน Groovy
ฉันได้รับการพัฒนาใน Groovy สักครู่แล้วและฉันสงสัยว่าฉันควรจะใช้การคัดเลือกนักแสดงแบบไดนามิกบ่อยแค่ไหนdef? เพื่อนร่วมงานของฉันเชื่อว่าเราควรใช้มันเสมอเพราะช่วย Groovy ในวิธีที่ฉันไม่เข้าใจ ขณะนี้เมื่อประกาศเมธอดส่งคืนชนิดและอาร์กิวเมนต์ฉันชอบที่จะจงใจระบุว่าควรนำวัตถุใดบ้างและคายออกมา (สำหรับการอ่านรหัสและฉันมาจากพื้นหลัง Java มันสมเหตุสมผลกับฉัน): String doSomething(String something){ //code } // vs def doSomething(def somthing){ //code } // vs def doSomething(somthing){ // code } ดังนั้นฉันเดาคำถามของฉันมันเป็นเพียงการตั้งค่าเมื่อต้องการใช้defหรือมีข้อได้เปรียบที่แท้จริงในการใช้มันตลอดเวลา? (ฉันเพิ่มตัวอย่างสุดท้ายเพราะฉันรู้สึกว่ามันเหมาะกับคำถามเป็นตัวเลือกที่ทำงานได้สำหรับ Groovy)

6
ฉันจะทดสอบรหัสทดสอบได้อย่างไร
หนึ่งในสองสามสิ่งที่นักพัฒนาซอฟต์แวร์ส่วนใหญ่เห็นด้วยคือคุณไม่ควรใช้โค้ดในการทำงานอย่างถูกต้องเว้นแต่คุณจะทดสอบ หากคุณไม่ทดสอบอาจมีข้อบกพร่องซ่อนเร้นที่จะทำให้คุณทำงานได้มากขึ้น ฉันเข้าใจวิธีทดสอบรหัสปกติของฉัน แต่ฉันควรทดสอบรหัสทดสอบอย่างไรเพื่อให้แน่ใจว่าสามารถค้นหาและรายงานข้อผิดพลาดได้อย่างมีประสิทธิภาพเมื่อมี โดยส่วนตัวฉันโง่พอที่จะเขียนกรณีทดสอบที่ผิดพลาดซึ่งจะเกิดขึ้นเมื่อไม่ควรทำดังนั้นจึงต้องเอาชนะวัตถุประสงค์ของการทดสอบการเขียนของฉันตั้งแต่แรก โชคดีที่ฉันพบและแก้ไขข้อผิดพลาดในเวลา แต่ตามการทดสอบมนต์ดูเหมือนว่าไม่มีชุดทดสอบจะเสร็จสมบูรณ์โดยไม่ต้องมีชุดทดสอบของตัวเองเพื่อให้แน่ใจว่ามันทำงานได้ สำหรับฉันดูเหมือนว่าวิธีที่ดีที่สุดในการทำเช่นนี้คือเพื่อให้แน่ใจว่าการทดสอบล้มเหลวสำหรับรหัสบั๊กกี้ * ถ้าฉันใช้เวลา 2 นาทีสลับกันเพิ่มข้อผิดพลาดในรหัสและทำให้แน่ใจว่าล้มเหลวฉันควรมีความมั่นใจในระดับที่ยอมรับได้ว่า การทดสอบ 'ทำงาน' สิ่งนี้นำมาสู่คำถามที่สองของฉัน: อะไรคือวิธีที่ดีในการแนะนำข้อบกพร่องเพื่อให้แน่ใจว่าพวกเขาถูกจับในกรณีทดสอบ? ฉันควรสุ่มแสดงความคิดเห็นงบตรวจสอบให้แน่ใจว่าสาขาที่ไม่ถูกต้องของการif-elseเรียกใช้โดยปฏิเสธสภาพของมันและเปลี่ยนลำดับการดำเนินการของรหัสที่มีผลข้างเคียง ฯลฯ จนกว่าฉันจะพอใจการทดสอบของฉันจะจับมากที่สุดโรคจิตที่พบบ่อย? นักพัฒนามืออาชีพตรวจสอบว่าการทดสอบทำในสิ่งที่ควรทำอย่างไร พวกเขาแค่คิดว่าการทดสอบทำงานหรือพวกเขาใช้เวลาในการทดสอบเช่นกัน? ถ้าเป็นเช่นนั้นพวกเขาจะทำการทดสอบอย่างไร ฉันไม่ได้แนะนำให้ผู้คนควรใช้เวลามากในการทดสอบการทดสอบแล้วทดสอบการทดสอบเพื่อทดสอบว่าพวกเขาไม่เคยเขียนรหัสจริง แต่ฉันได้ทำสิ่งที่โง่พอที่ฉันรู้สึกว่าฉันจะได้ประโยชน์จากนิดหน่อย ของ 'การทดสอบ meta' และอยากรู้เกี่ยวกับวิธีที่ดีที่สุดที่จะไปเกี่ยวกับมัน : D * ฉันสามารถตรวจสอบเพื่อดูว่าการทดสอบผ่านเมื่อการทดสอบรหัส 'ปราศจากข้อผิดพลาด' แต่การใช้รหัสเป็นข้อมูลจำเพาะสำหรับการทดสอบดูค่อนข้างย้อนหลัง ...

8
การจัดระเบียบโค้ดที่ไม่ใส่โค้ดและสกปรก?
ฉันต้องการถามคำถามเกี่ยวกับรหัสสกปรก มีผู้เริ่มต้นบางคนที่เขียนรหัสในโครงการขนาดกลาง รหัสเป็นลูกบอลโคลนขนาดใหญ่มาก พวกเขาไม่ใช่โปรแกรมเมอร์ขั้นสูง พวกเขารู้วิธีใช้คีย์บอร์ดเล็กน้อยเกี่ยวกับจาวา พวกเขาเพิ่งเขียนโค้ดที่มี 12,000 บรรทัดในชั้นเรียนหลัก แต่ 6,000 บรรทัดเป็นของ NetBeans งานของฉันคือการวิเคราะห์รหัสและแนะนำวิธีที่ดีในการรักษารหัส ความคิดของฉันคือการทำให้โครงการเป็นเรื่องที่สนใจและเริ่มโครงการใหม่ด้วยวิธีการของ OOP เมื่อเร็ว ๆ นี้ฉันรวบรวมบันทึกและแนวคิดเกี่ยวกับปัญหาจากเว็บไซต์นี้และอื่น ๆ ตอนนี้ฉันมีคำถามต่อไปนี้: เราควรซ่อมแซมรหัสและเปลี่ยนเป็น OOP หรือไม่ ตอนนี้เรากำลังแก้ไขข้อบกพร่อง รหัสไม่มีความคิดเห็นไม่มีเอกสารไม่มีรูปแบบการเขียนโปรแกรมเฉพาะและอื่น ๆ การเปลี่ยนมันมีราคาแพงและใช้เวลามาก เราจะทำอะไรได้บ้างกับเรื่องนี้? ฉันจะสอนพวกเขาให้ปฏิบัติตามกฎทั้งหมดได้อย่างไร (ความคิดเห็น OOP คุณภาพของโค้ดที่ดี ฯลฯ ) รหัสผิดพลาดและเกิดข้อผิดพลาดได้ง่าย อะไรที่พวกเราสามารถทำได้? การทดสอบ? เราเกือบจะเขียนกระดาษ A4 สองหรือสามเล่มเพื่อแก้ไข แต่ดูเหมือนไม่มีที่สิ้นสุด ฉันต้องบอกว่าฉันใหม่กับพวกเขา ฉันคิดว่าฉันได้ทำผิดกฎเกี่ยวกับการเพิ่มคนสายเกินไปในโครงการเช่นกัน คุณคิดว่าฉันต้องจากไปหรือไม่?

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

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

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