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

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

4
วิธีใดที่จะยุติการอ่านลูปเป็นวิธีที่ต้องการ
เมื่อคุณต้องย้ำผู้อ่านที่ไม่ทราบจำนวนรายการที่จะอ่านและวิธีเดียวที่จะทำคือการอ่านต่อไปจนกว่าจะถึงจุดสิ้นสุด นี่เป็นสถานที่ที่คุณต้องการวนซ้ำไม่รู้จบ มีเสมอtrueที่ระบุว่าจะต้องมีbreakหรือreturnคำสั่งบางแห่งในบล็อก int offset = 0; while(true) { Record r = Read(offset); if(r == null) { break; } // do work offset++; } มีวิธีอ่านลูปสองครั้ง Record r = Read(0); for(int offset = 0; r != null; offset++) { r = Read(offset); if(r != null) { // do work } } …

2
วิธีที่ดีที่สุดสำหรับความคิดเห็นโค้ดอินไลน์คืออะไร
เรากำลังทำการปรับเปลี่ยนบางอย่างให้เป็น codebase เก่าแก่อายุ 20 ปีและฉันกำลังพูดคุยกับเพื่อนร่วมงานของฉันเกี่ยวกับรูปแบบความคิดเห็นในรหัส (plsql, java) ไม่มีรูปแบบเริ่มต้นสำหรับความคิดเห็น แต่ในกรณีส่วนใหญ่คนทำสิ่งนี้ในความคิดเห็น: // date (year, year-month, yyyy-mm-dd, dd/mm/yyyy), (author id, author name, author nickname) and comment รูปแบบที่เสนอสำหรับความคิดเห็นในอนาคตและในอดีตที่ฉันต้องการคือ: // {yyyy-mm-dd}, unique_author_company_id, comment เพื่อนร่วมงานของฉันบอกว่าเราต้องการเพียงความคิดเห็นเท่านั้นและต้องจัดรูปแบบความคิดเห็นทั้งในอดีตและอนาคตในรูปแบบนี้: // comment ข้อโต้แย้งของฉัน: ฉันพูดด้วยเหตุผลด้านการบำรุงรักษาสิ่งสำคัญคือต้องรู้ว่าเมื่อใดและใครทำการเปลี่ยนแปลง (แม้ข้อมูลนี้จะอยู่ใน SCM) รหัสกำลังมีชีวิตอยู่และด้วยเหตุนี้จึงมีประวัติ เนื่องจากไม่มีการเปลี่ยนแปลงวันที่มันเป็นไปไม่ได้ที่จะรู้ว่าเมื่อใดที่มีการเปลี่ยนแปลงเกิดขึ้นโดยไม่เปิดเครื่องมือ SCM และค้นหาในประวัติวัตถุที่ยาวนาน เนื่องจากผู้เขียนมีความสำคัญมากการเปลี่ยนแปลงของผู้เขียนมีความน่าเชื่อถือมากกว่าการเปลี่ยนแปลงของ authory เหตุผลความว่องไวไม่จำเป็นต้องเปิดและนำทางผ่านเครื่องมือ SCM ผู้คนจะกลัวที่จะเปลี่ยนบางสิ่งที่บางคนทำเมื่อ 15 ปีที่แล้วมากกว่าสิ่งที่เพิ่งถูกสร้างหรือเปลี่ยนแปลง เป็นต้น ข้อโต้แย้งของเพื่อนร่วมงานของฉัน: ประวัติอยู่ใน SCM …

3
ฉันจะกำหนดและวัดความเรียบง่ายในโค้ดได้อย่างไร
มีคำตอบมากมายในคำถามก่อนหน้าของฉันเกี่ยวกับความเรียบง่ายที่เกี่ยวกับความสามารถในการอ่านที่ช่วยให้ฉันเห็นคำจำกัดความและความเข้าใจในความเรียบง่ายของโค้ดคืออาจเป็นไปได้ที่ไม่ถูกต้อง ฉันจะกำหนดความเรียบง่ายในโค้ดได้อย่างไร มีซอฟต์แวร์การวัดและตัวชี้วัดใดบ้างที่ใช้ในการวัดความเรียบง่ายของโค้ด

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

6
การปฏิบัติที่ดีที่สุดสำหรับการใช้งานการพิมพ์ / ความช่วยเหลือ (- ความช่วยเหลือ) คืออะไร?
เมื่อเขียนเครื่องมือสำหรับ CLI ของ UNIX ฉันจะทำให้โปรแกรมพิมพ์วิธีใช้และ / หรือการใช้งานได้อย่างไร ฉันมักจะใช้fprintf(stderr, "help text here");แต่มีหลายปัญหาด้วยกัน stderrครั้งแรกผมไม่แน่ใจว่าไม่ว่าฉันควรใช้ ตกลงหรือฉันควรใช้stdout? อย่างที่คุณสามารถจินตนาการได้ข้อความช่วยเหลือค่อนข้างยาวขึ้นอยู่กับจำนวนตัวเลือกของเครื่องมือ ตอนนี้ฉันมักจะใส่หลาย ๆ อย่าง"strings like that\n"ในพารามิเตอร์ที่สอง อย่างไรก็ตามสิ่งนี้เติมรหัสต้นฉบับของฉันด้วยข้อความช่วยเหลือห้าสิบรายการขึ้นไป มันไม่สามารถจัดการได้ง่ายเลย ฉันควรทำอย่างไรดี เมื่อเครื่องมือไม่ได้เขียนในภาษา C หรือภาษา C ฉันมักจะใช้ที่นี่ docsที่เป็นไปได้ (ส่วนใหญ่เด่นชัดด้วย Perl) ฉันไม่สามารถใช้สิ่งนั้นใน C แต่มีอะไรแบบนั้นที่ฉันสามารถใช้ได้หรือไม่? ฉันกำลังพิจารณาที่จะวางมันไว้headerfile.hข้างใน a #define HELP "help text here"ฉันไม่เคยเห็นมันมาในป่าไม่รู้ว่าฉันควรใช้มันหรือไม่ เป็นการดีที่ฉันสามารถใส่ข้อความในไฟล์ภายนอกและรวมไว้ ใช้#includeสำหรับสิ่งที่ดูเหมือนว่าผิด ฉันควรทำอย่างไร แนวคิดคือมีข้อความช่วยเหลือที่สามารถจัดการได้ง่าย การเก็บไว้ในซอร์สโค้ดไม่สะดวกจริงๆ

4
โค้ดการจัดการแนวโน้มเป้าหมายควรได้รับการจัดการโดยผู้จัดการการพัฒนาอย่างไร
ก่อนอื่นให้ฉันเหรียญคำ: การดูแลรหัสเป้าหมาย: การตรวจสอบโค้ดในตอนเช้าจากนั้นตรวจสอบการเปลี่ยนแปลงทั้งหมดที่ทำโดยนักพัฒนาคนอื่น ๆ ในไฟล์วันก่อนหน้าโดยไฟล์ (โดยเฉพาะไฟล์โค้ดที่คุณพัฒนาขึ้นในตอนแรก) และแก้ไขการจัดรูปแบบตรรกะ วิธีการแบบยาว ฯลฯ จากนั้นส่งมอบการเปลี่ยนแปลงไปยัง VCS การปฏิบัตินี้มีแนวโน้มที่จะมีข้อดีข้อเสียที่ฉันระบุ: Pro : คุณภาพของรหัส / ความสามารถในการอ่าน / ความสอดคล้องมักจะถูกรักษาไว้ Pro : ข้อผิดพลาดบางอย่างได้รับการแก้ไขเนื่องจากนักพัฒนารายอื่นไม่คุ้นเคยกับรหัสดั้งเดิม คอนดิชั่น : มักจะเป็นการเสียเวลาของผู้พัฒนาเป้าหมาย คอนดิชั่น : บางครั้งแนะนำบั๊กที่ทำให้นักพัฒนาโกรธซึ่งคิดว่าพวกเขาเขียนโค้ดปราศจากข้อบกพร่องในวันก่อนหน้า คอนดิชั่นเนอร์ : นักพัฒนารายอื่นได้รับความเดือดร้อนจาก nitpicking มากเกินไปและเริ่มที่จะไม่ชอบการมีส่วนร่วมในรหัสของเป้าหมายที่อ่อนโยน ข้อจำกัดความรับผิดชอบ: เพื่อความเป็นธรรมฉันไม่ได้เป็นผู้จัดการการพัฒนาจริง ๆ แล้วฉันเป็นผู้พัฒนาที่กำลังทำ "กำลังพุ่งเป้า" ในการป้องกันของฉันฉันคิดว่าฉันกำลังทำสิ่งนี้ด้วยเหตุผลที่ดี (เพื่อรักษาฐานรหัสขนาดใหญ่มากของเราไว้ในเครื่องที่มีน้ำมันดี) แต่ฉันกังวลมากว่ามันสร้างบรรยากาศเชิงลบเช่นกัน ฉันยังกังวลอย่างแน่นอนว่าผู้จัดการของฉันจะต้องแก้ไขปัญหานี้ ดังนั้นถ้าคุณเป็นผู้จัดการคุณจะแก้ไขปัญหานี้อย่างไร UPDATE: ฉันไม่ได้ตั้งใจจะให้เป็นภาษาท้องถิ่น แต่บางคนถามดังนั้นบางทีพื้นหลังบางอย่างจะสว่างขึ้น ฉันได้รับมอบหมายโครงการยักษ์ใหญ่ (200K LoC) เมื่อสามปีที่แล้วและเมื่อไม่นานมานี้ …

3
ฉันจำเป็นต้องจัดการกับสถานการณ์ที่วิธีการส่วนตัวถูกเรียกผ่านการสะท้อนกลับหรือไม่?
เมื่อมีการสร้างห้องสมุดที่ผมต้องให้แน่ใจว่าวิธีการที่ภาคเอกชนจะต้องทำงานตามที่คาดไว้เมื่อเรียกไม่ได้โดยวิธีการอื่น ๆ ของชั้นเดียวกัน แต่โดยห้องสมุดอื่นผ่านการสะท้อน ? ตัวอย่างเช่นหากวิธีส่วนตัวprivate DoSomething(int number)คาดว่า: number เป็นจำนวนเต็มบวกที่ไม่เป็นศูนย์และ: ตัวแปรส่วนตัวstring abcไม่ใช่โมฆะและไม่ใช่สตริงว่าง และสมบูรณ์ล้มเหลวอย่างน่าเกลียดหากทั้งสองเงื่อนไขไม่ตรงกันฉันต้องจัดการกับความล้มเหลวเหล่านั้นแม้ว่าฉันจะรู้ว่าวิธีการทั้งหมดในชั้นเรียนจะกำหนดค่าที่ไม่ว่างเปล่าให้กับการabcโทรก่อนDoSomethingและส่งจำนวนเต็มบวกที่ไม่เป็นศูนย์ให้ วิธี? กล่าวอีกนัยหนึ่งคือรหัสที่ไม่ได้ป้องกันการโทรที่ไม่ปลอดภัยผ่านการสะท้อนอาจถือได้ว่าเป็นรหัสที่มีคุณภาพต่ำหรือเป็นของผู้โทรที่ใช้การสะท้อนเพื่อให้แน่ใจว่าการโทรจะไม่ทำลายอะไรเลย หมายเหตุ: คำถามของฉันครอบคลุมเฉพาะชุดไลบรารีมาตรฐาน นี่ไม่ครอบคลุมรหัสที่จะต้องมีความปลอดภัยสูง (เช่นเมื่อใครบางคนอาจสนใจโดยใช้การสะท้อนเพื่อให้มันทำงานโดยไม่คาดคิดหรือผิดพลาด) ¹เนื่องจากชั้นเรียนได้รับการบันทึกอย่างถูกต้องเนื่องจากมีการทดสอบหน่วยมากพอที่จะตรวจสอบให้แน่ใจว่าผู้พัฒนารายอื่นจะไม่ทำลายวิธีนี้เป็นต้น

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

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

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

9
รหัสทดสอบคัดลอกและวาง: วิธีนี้แย่แค่ไหน?
งานปัจจุบันของฉันส่วนใหญ่เขียนโค้ดทดสอบ GUI สำหรับแอปพลิเคชันต่างๆที่เราใช้งาน อย่างไรก็ตามฉันพบว่าฉันมักจะคัดลอกและวางรหัสจำนวนมากในการทดสอบ เหตุผลสำหรับเรื่องนี้คือพื้นที่ที่ฉันทดสอบมีแนวโน้มที่จะคล้ายกันมากพอที่จะต้องมีการทำซ้ำ แต่ก็ไม่ได้คล้ายกันมากพอที่จะใส่รหัสลงในเมธอดหรือวัตถุ ฉันพบว่าเมื่อฉันพยายามใช้คลาสหรือวิธีการเพิ่มเติมอย่างกว้างขวางการทดสอบจะยุ่งยากมากขึ้นในการบำรุงรักษาและบางครั้งก็ยากที่จะเขียนตั้งแต่แรก แต่ฉันมักจะคัดลอกโค้ดทดสอบขนาดใหญ่จำนวนหนึ่งจากส่วนหนึ่งแล้ววางลงในอีกส่วนหนึ่งและทำการเปลี่ยนแปลงเล็กน้อยตามที่ฉันต้องการ ฉันไม่ได้ใช้วิธีการเข้ารหัสที่มีโครงสร้างมากขึ้นเช่นการใช้หลักการหรือฟังก์ชั่น OO มากขึ้น ผู้เขียนโค้ดคนอื่นรู้สึกเช่นนี้เมื่อเขียนรหัสทดสอบหรือไม่? เห็นได้ชัดว่าฉันต้องการที่จะปฏิบัติตามหลักการ DRY และ YAGNI แต่ฉันพบว่ารหัสทดสอบ (รหัสทดสอบอัตโนมัติสำหรับการทดสอบ GUI ต่อไป) สามารถทำให้หลักการเหล่านี้ยากที่จะปฏิบัติตาม หรือฉันต้องการเพียงแค่ฝึกฝนการเข้ารหัสและระบบโดยรวมที่ดีขึ้นในการทำสิ่งต่าง ๆ ? แก้ไข: เครื่องมือที่ฉันใช้คือ SilkTest ซึ่งเป็นภาษาที่เป็นกรรมสิทธิ์ที่ชื่อว่า 4Test เช่นกันการทดสอบเหล่านี้ส่วนใหญ่ใช้สำหรับเดสก์ท็อปของ Windows แต่ฉันได้ทำการทดสอบเว็บแอปโดยใช้การตั้งค่านี้เช่นกัน

5
เหตุใดจึงมีวิธีที่ส่งกลับ bool / int และมีวัตถุจริงเป็นพารามิเตอร์ส่งออก
ฉันเห็นรูปแบบรหัสต่อไปนี้ทั่วทุกแห่งใน codebase ของ บริษัท ของฉัน (แอปพลิเคชัน. NET 3.5): bool Foo(int barID, out Baz bazObject) { try { // do stuff bazObject = someResponseObject; return true; } catch (Exception ex) { // log error return false; } } // calling code BazObject baz = new BazObject(); fooObject.Foo(barID, out baz); if (baz …

4
วิธีที่สะอาดที่สุดในการเขียนซอฟต์แวร์ที่มีขั้นตอนตามหลักเหตุผลในภาษา OO
ฉันเป็นวิศวกรไฟฟ้าและฉันไม่รู้ว่าฉันทำอะไรอยู่ โปรดบันทึกผู้ดูแลรหัสของฉันในอนาคต เมื่อเร็ว ๆ นี้ฉันได้ทำงานกับโปรแกรมขนาดเล็กจำนวนมาก (ใน C #) ซึ่งฟังก์ชั่นการใช้งานเป็น "ขั้นตอน" ตามหลักเหตุผล ตัวอย่างเช่นหนึ่งในนั้นคือโปรแกรมที่รวบรวมข้อมูลจากฐานข้อมูลต่าง ๆ ใช้ข้อมูลนั้นเพื่อสร้างเรียงลำดับของหน้าสรุปพิมพ์และจากนั้นออก ตรรกะที่จำเป็นสำหรับทั้งหมดนั้นอยู่ที่ประมาณ 2,000 บรรทัด แน่นอนฉันไม่ต้องการสิ่งทั้งหมดในที่เดียวmain()แล้ว "ทำความสะอาด" กับ#regions เป็นนักพัฒนาก่อนหน้านี้ได้ทำ (ตัวสั่น) นี่คือบางสิ่งที่ฉันได้ลองไปแล้วโดยที่ไม่พึงพอใจมาก: สร้างยูทิลิตี้แบบคงที่สำหรับการใช้งานแต่ละบิตอย่างคร่าวๆเช่น DatabaseInfoGetter, SummaryPageGenerator และ PrintUtility ทำให้ฟังก์ชั่นหลักดูเหมือนว่า: int main() { var thisThing = DatabaseInfoGetter.GetThis(); var thatThing = DatabaseInfoGetter.GetThat(); var summary = SummaryPageGenerator.GeneratePage(thisThing, thatThing); PrintUtility.Print(summary); } สำหรับโปรแกรมหนึ่งฉันยังไปกับอินเตอร์เฟส int main() …

6
การต่อสู้และการพัฒนาที่มั่นคงสร้างความขัดแย้งหรือไม่?
ฉันเป็นส่วนหนึ่งของกลุ่มพัฒนา 5 ทีมรวมนักพัฒนาประมาณ 40 คน เรากำลังติดตามวิธีการแย่งชิงกันโดยใช้เวลา 3 สัปดาห์ เรามีการตั้งค่าการรวมระบบอย่างต่อเนื่อง (เจนกินส์) โดยมีขั้นตอนการสร้างใช้เวลาหลายชั่วโมง (เนื่องจากการทดสอบอัตโนมัติที่กว้างขวาง) โดยทั่วไปกระบวนการพัฒนาทำงานได้ดี อย่างไรก็ตามเราสังเกตว่าหลังจากสองสามวันไปสู่การวิ่งใหม่งานสร้างของเรามักจะไม่เสถียรและยังคงสั่นคลอนจนสิ้นสุดการวิ่ง "หยุดทำ" ผลข้างเคียงของสิ่งนี้คือการสร้างขั้นตอนไกลไปป์ไลน์โดยเฉพาะอย่างยิ่ง UI- / การทดสอบทางเว็บจะไม่ถูกดำเนินการเป็นเวลาหลายวัน ดังนั้นข้อผิดพลาดที่แนะนำใหม่มักตรวจพบได้ช้ามากในการวิ่ง การยืนยันแต่ละครั้งจะถูกตรวจสอบกับชุดการทดสอบพื้นฐาน เมื่อตรวจสอบแล้วการเปลี่ยนแปลงจะถูกส่งไปยังต้นแบบหลังจากตรวจสอบโค้ด (Gerrit) การทดสอบหน่วยพื้นฐานทำงานทุก 30 นาทีระยะเวลาน้อยกว่า 10 นาที การทดสอบการรวมจะทำงานทุก 2 ชั่วโมงและระยะเวลา 1 ชั่วโมง UI- / Webtests ทำงานบนการทดสอบการรวมที่ประสบความสำเร็จใช้เวลาหลายชั่วโมง ขึ้นอยู่กับว่าใครเป็นผู้รับผิดชอบในการสร้างความมั่นคงในระหว่างการวิ่ง (ความรับผิดชอบนั้นจะถูกส่งต่อการวิ่ง) อาจจะมีระดับกลางโฆษณาเฉพาะกิจ "คอมมิชชันหยุด" เพื่อให้ได้งานสร้างกลับมาที่มั่นคง ดังนั้นเราต้องการ: ทีมนักพัฒนาของเราในการพัฒนาและกระทำการเปลี่ยนแปลงในระหว่างการวิ่งไม่ จำกัด กระบวนการสร้างของเราที่จะละทิ้งหากขั้นตอนการสร้างล้มเหลวเนื่องจากผลการสร้างต่อมามีความหมายน้อย กระบวนการสร้างของเราเพื่อให้ข้อเสนอแนะในการพัฒนาคุณภาพแก่นักพัฒนาในเวลาที่เหมาะสม รับ (2) คะแนน …

4
คุณควรปรับปรุงคุณภาพของรหัสขณะทำงานในฟีเจอร์ Branch
ฉันชอบบทความนี้มากเกี่ยวกับการทิ้งโค้ด / ไซต์แคมป์ไว้ในสถานะที่ดีกว่าที่คุณพบ - ดูเหมือนว่าแนวทางปฏิบัติในโลกแห่งความเป็นจริงเพื่อรักษาความสะอาดของโค้ดเอาไว้ ฉันชอบสาขาคุณลักษณะเป็นวิธีในการพัฒนาคุณลักษณะแยกต่างหากดังนั้นถ้าคุณไม่ชอบคุณจะไม่สามารถรวม ฯลฯ ได้อย่างง่ายดาย อย่างไรก็ตามหากฉันทำงานในสาขาฟีเจอร์และฉันพบรหัสที่น่าเกลียดฉันควรแก้ไขไหม รู้สึกเหมือนมีจำนวนขาลงที่จะแก้ไข: เมื่อฉันรวมสาขากลับเข้า diff จะยุ่งเหยิงรกด้วยการเปลี่ยนชื่อตัวแปรหรือการดึงฟังก์ชั่น หากสถานที่นั้นถูกทิ้งร้างคุณต้องเลือกการทำความสะอาด (ซึ่งอาจหรืออาจจะไม่ทำงานขึ้นอยู่กับว่าโค้ดที่อยู่ใกล้มันมีการเปลี่ยนแปลงอย่างไรทำให้เกิดความสับสน) ทำการทำใหม่หรือทิ้งมันไป ด้านพลิกถ้าฉันไม่ทำในขณะที่ฉันอยู่ในไฟล์แล้วชัดเจนฉันจะลืมที่จะทำในเวลาสองสามวันเมื่อฉันรวมสาขาใน ฉันถูกเตือนว่านี่เป็นพื้นฐานของความคิดเห็น (ฉันคิดว่าเป็นความจริงที่ชื่อรวมอยู่ด้วยshould) แต่ฉันรู้สึกเหมือนมีคำตอบ (แน่นอนว่าผู้คนใช้วิธีทั้งสองนี้ดังนั้นพวกเขาจึงต้องมีคำตอบ) นอกจากนี้คำถามเกี่ยวกับdevelopment methodologiesอยู่ในหัวข้อและฉันคิดว่าพวกเขาต้องการระดับความคิดเห็น

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