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

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

8
ฉันจะเรียนรู้การเขียนรหัส Pythonic อย่างมีประสิทธิภาพได้อย่างไร
ทำการค้นหาโดย Google สำหรับ "pythonic" เผยให้เห็นการตีความที่หลากหลาย หน้าวิกิพีเดียบอกว่า: neologism ทั่วไปในชุมชน Python คือ pythonic ซึ่งสามารถมีความหมายหลากหลายที่เกี่ยวข้องกับรูปแบบของโปรแกรม การบอกว่ารหัสไพ ธ อนิกนั้นคือการพูดว่ามันใช้สำนวนภาษาไพ ธ อนอย่างดีว่าเป็นเรื่องธรรมดาหรือแสดงความคล่องแคล่วในภาษา ในทำนองเดียวกันการพูดถึงส่วนต่อประสานหรือคุณสมบัติทางภาษาที่มันเป็น pythonic ก็คือว่ามันทำงานได้ดีกับ Python idioms ซึ่งการใช้งานนั้นเข้ากันได้ดีกับภาษาที่เหลือ นอกจากนี้ยังกล่าวถึงคำว่า "unpythonic": ในทางตรงกันข้ามเครื่องหมายของรหัส unpythonic คือมันพยายามที่จะเขียนโค้ด C ++ (หรือ Lisp, Perl หรือ Java) ใน Python— นั่นคือให้การถอดความแบบคร่าวๆมากกว่าการแปลแบบสำนวนจากภาษาอื่น แนวคิดของ pythonicity ถูกผูกไว้กับปรัชญาการอ่านที่เรียบง่ายของ Python และหลีกเลี่ยงวิธีการ "มีมากกว่าหนึ่งวิธีที่จะทำ" รหัสที่อ่านไม่ได้หรือสำนวนที่เข้าใจยากนั้นเป็นเสียงที่ไม่ไพเราะ คำว่า "pythonic" หมายถึงอะไร ฉันจะเรียนรู้วิธีการใช้อย่างมีประสิทธิภาพในทางปฏิบัติได้อย่างไร

13
ฉันทำคะแนนเรื่องราวได้มากกว่า 4-5 เท่าโดยเฉลี่ย แต่สร้างข้อบกพร่องในอัตราครึ่งหนึ่ง กราฟบอกว่ามันเป็นข้อผิดพลาดมากกว่า 2x วิธีจัดการกับมันได้อย่างไร
ดังนั้นจึงเป็นที่ยอมรับกันโดยทั่วไปว่าโปรแกรมเมอร์ระดับสูงสามารถสร้างลำดับความสำคัญได้มากกว่า / ดีกว่ารหัสโดยเฉลี่ย เป็นที่ยอมรับกันโดยทั่วไปว่าอัตราข้อผิดพลาดที่เกิดขึ้นในโค้ดนั้นค่อนข้างคงที่สำหรับโปรแกรมเมอร์ แต่มีแนวโน้มที่จะได้รับผลกระทบจากกระบวนการที่ใช้เมื่อเขียนรหัสและหลังจากเขียนรหัสแล้ว (ตามที่ฉันเข้าใจ) มนุษย์มักจะทำผิดพลาดในอัตราที่ค่อนข้างคงที่ - โปรแกรมเมอร์ที่ดีกว่าเพียงสังเกตเห็นพวกเขามากขึ้น โปรดทราบว่าการยืนยันทั้งสองข้างต้นมาจากCode Completeโดย Steve McConnell ดังนั้นจึงไม่ใช่เรื่องของมุมมองที่แตกต่าง ดังนั้นฉันจึงเริ่มเห็นสิ่งนี้ในรหัสของฉัน ฉันสามารถใช้จำนวนโค้ดประมาณ 4-5 เท่ากับเพื่อนร่วมงานของฉัน (วัดจากคะแนนเรื่องราวที่ประเมินโดยทีม) ด้วยคุณภาพที่สูงขึ้น (ขึ้นอยู่กับตัวชี้วัดประสิทธิภาพและจำนวนการเปลี่ยนแปลงที่เกิดขึ้นหลังจากเช็คอิน) แต่ฉันก็ยังทำผิดอยู่ ระหว่างการทดสอบหน่วยที่ดีขึ้นความเข้าใจที่ดีขึ้นเกี่ยวกับสิ่งที่รหัสกำลังทำอยู่และการมองปัญหาที่ดีขึ้นเมื่อทำการตรวจสอบโค้ดฉันไม่ได้ผลิตข้อผิดพลาด 4-5 เท่า แต่ฉันยังคงผลิตประมาณสองครั้งเป็นโรคจิตหลายพบได้โดยการควบคุมคุณภาพเป็นนักพัฒนาอื่น ๆ ในทีมของฉัน อย่างที่คุณอาจจินตนาการสิ่งนี้ทำให้เกิดปัญหาบางอย่างกับผู้ที่ไม่ใช้เทคนิคทำการวัดแบบเมตริก ฉันพยายามที่จะชี้ให้เห็นว่าฉันผลิตข้อบกพร่องในอัตราครึ่งหนึ่งของเพื่อนของฉัน (และแก้ไขสองเท่าเป็นจำนวนมาก) แต่มันเป็นเรื่องยากที่จะขายเมื่อมีกราฟบอกว่าฉันผลิตข้อผิดพลาดเป็นสองเท่า ดังนั้นวิธีจัดการกับความจริงที่ว่าผลผลิตที่เพิ่มขึ้นจะนำไปสู่การเพิ่มจำนวนข้อบกพร่อง?

10
การทำต้นแบบกับ Clean Code ในระยะแรก
ฉันวางแผนที่จะทำงาน / เริ่มโครงการส่วนบุคคลบางอย่างที่อาจจบลงด้วยการทำงานประจำวันของฉัน มันทำให้ฉันคิดว่าฉันควรเริ่มทางไหนดี? แค่ต้นแบบ - เขียนแค่การทำงานโค้ดพื้นฐานที่อาจทำให้ฉันเสียเวลาในการปรับให้เหมาะสมและปรับโครงสร้างใหม่เพื่อการขยายที่ง่าย เขียนโค้ดที่สะอาดเหมาะสมและได้รับการบันทึกไว้ตั้งแต่ต้นโดยจำไว้ว่าหากหลังจากผ่านไประยะหนึ่งแล้วจะไม่คุ้มค่า ปรับปรุง:การรวม YAGNI กับคำตอบ sunpech และ M.Sameer ทำให้ฉันสมบูรณ์แบบ :) ขอขอบคุณทุกคนสำหรับความช่วยเหลือ

10
มีเหตุผลใดที่จะใช้คลาส "ข้อมูลเก่าแบบธรรมดา" หรือไม่?
ในรหัสดั้งเดิมบางครั้งฉันเห็นชั้นเรียนที่ไม่มีอะไรนอกจากห่อหุ้มข้อมูล สิ่งที่ต้องการ: class Bottle { int height; int diameter; Cap capType; getters/setters, maybe a constructor } ความเข้าใจของฉันเกี่ยวกับ OO คือคลาสเป็นโครงสร้างของข้อมูลและวิธีการทำงานกับข้อมูล ดูเหมือนว่าจะแยกประเภทของวัตถุนี้ สำหรับฉันพวกเขาไม่มีอะไรมากไปกว่าstructsและชนิดของความพ่ายแพ้วัตถุประสงค์ของ OO ฉันไม่คิดว่ามันจะเป็นสิ่งชั่วร้ายแม้ว่ามันอาจจะเป็นกลิ่นรหัส มีกรณีที่วัตถุดังกล่าวจะมีความจำเป็นหรือไม่? หากมีการใช้งานบ่อยมันจะทำให้ผู้ต้องสงสัยในการออกแบบหรือไม่

4
ตรวจสอบโค้ดด้วย git-flow และ gitub
ด้วย git และ gitub ปกติฉันสามารถทำการตรวจสอบโค้ดได้โดยเพียงแค่สร้างคำขอดึงของสาขาฟีเจอร์ที่ฉันกำลังทำงานกับสาขาหลัก ฉันจะตรวจสอบโค้ดด้วย git-flow ได้อย่างไร ด้วยเวิร์กโฟลว์เช่น "ฟีเจอร์การไหลของคอมไพล์เสร็จสิ้น" ฉันสับสนว่าการตรวจสอบโค้ดเกิดขึ้นจริงได้อย่างไรและการไหลเวียนของคอมไพล์หรือคอมไพล์สามารถช่วยในการตรวจสอบได้อย่างไร

15
การเขียนโค้ดโฆษณามีอะไรเลวร้าย [ปิด]
ฉันกำลังดูBob Rossวาดคืน "ต้นไม้แห่งความสุข" คืนนี้และฉันก็พบว่ามีอะไรที่ทำให้ฉันเครียดเกี่ยวกับรหัสของฉันเมื่อเร็ว ๆ นี้ ชุมชนของคนที่นี่และใน Stack Overflow ดูเหมือนจะปฏิเสธความไม่สมบูรณ์ใด ๆ เป้าหมายของฉันคือการเขียนโค้ดที่น่านับถือ (และสามารถบำรุงรักษาและใช้งานได้) โดยการพัฒนาทักษะของฉัน ยังฉันรหัสอย่างสร้างสรรค์ ให้ฉันอธิบายสิ่งที่ฉันหมายถึงโดย "การเข้ารหัสอย่างสร้างสรรค์": ขั้นตอนแรกของฉันในโครงการมักจะนั่งลงและทุบตีโค้ดบางส่วน สำหรับสิ่งที่ใหญ่กว่าฉันวางแผนที่นี่เล็กน้อยและที่นั่น แต่ส่วนใหญ่ฉันเพิ่งดำน้ำ ฉันไม่ทำแผนภาพคลาสใด ๆ ของฉันเว้นแต่ว่าฉันกำลังทำงานกับคนอื่น ๆ ที่กำลังสร้างงานอื่นในโครงการ ถึงอย่างนั้นมันก็ไม่ใช่สิ่งแรกที่ฉันทำ โดยทั่วไปฉันไม่ได้ทำงานในโครงการขนาดใหญ่และฉันไม่พบภาพที่มีประโยชน์มาก รหัสรอบแรกที่ฉันเขียนจะได้รับการเขียนใหม่หลายครั้งหลาย ๆ ครั้งที่ฉันทดสอบลดความซับซ้อนทำซ้ำและแปลงแฮ็กดั้งเดิมให้เป็นสิ่งที่สามารถนำกลับมาใช้ใหม่ได้ตรรกะและมีประสิทธิภาพ ในระหว่างกระบวนการนี้ฉันทำความสะอาดอยู่เสมอ ฉันลบรหัสที่ไม่ได้ใช้และแสดงความคิดเห็นทุกอย่างที่ไม่ชัดเจน ฉันทดสอบอย่างต่อเนื่อง กระบวนการของฉันดูเหมือนจะขัดกับสิ่งที่ยอมรับได้ในชุมชนนักพัฒนามืออาชีพและฉันต้องการจะเข้าใจว่าทำไม ฉันรู้ว่าส่วนใหญ่เกี่ยวกับการจับรหัสที่ไม่ดีคือคนที่ติดอยู่กับความยุ่งเหยิงของอดีตพนักงานและค่าใช้จ่ายเวลาและเงินในการแก้ไข ที่ฉันเข้าใจ สิ่งที่ฉันไม่เข้าใจคือกระบวนการของฉันผิดเพราะผลลัพธ์สุดท้ายนั้นคล้ายกับสิ่งที่คุณจะได้รับเมื่อวางแผนทุกอย่างตั้งแต่เริ่มต้น (หรืออย่างน้อยนั่นคือสิ่งที่ฉันได้พบ) ความวิตกกังวลของฉันเกี่ยวกับปัญหานั้นแย่มากเมื่อเร็ว ๆ นี้จนฉันหยุดเขียนโค้ดจนกว่าฉันจะรู้ทุกอย่างเกี่ยวกับวิธีการทุกวิธีในการแก้ปัญหาเฉพาะที่ฉันกำลังทำอยู่ กล่าวอีกนัยหนึ่งฉันได้หยุดเข้ารหัสส่วนใหญ่ทั้งหมด ฉันขอขอบคุณที่คุณป้อนข้อมูลอย่างจริงใจไม่ว่าคุณจะแสดงความคิดเห็นในประเด็นใดก็ตาม แก้ไข: ขอบคุณสำหรับคำตอบของคุณ ฉันได้เรียนรู้บางอย่างจากพวกเขาแต่ละคน คุณได้รับประโยชน์มากที่สุด

6
เป็นวิธีที่ดีที่สุดในการจัดการ refactoring ไฟล์ขนาดใหญ่อะไร
ขณะนี้ฉันกำลังทำงานในโครงการที่ใหญ่กว่าซึ่งน่าเสียดายที่มีไฟล์บางไฟล์ที่มีแนวทางด้านคุณภาพซอฟต์แวร์ที่ไม่ได้ติดตามตลอด ซึ่งรวมถึงไฟล์ขนาดใหญ่ (อ่าน 2,000-4,000 บรรทัด) ซึ่งมีฟังก์ชั่นการใช้งานที่แตกต่างกันอย่างชัดเจน ตอนนี้ฉันต้องการ refactor ไฟล์ขนาดใหญ่เหล่านี้เป็นไฟล์เล็ก ๆ หลายไฟล์ ปัญหาคือเนื่องจากพวกเขามีขนาดใหญ่หลายคน (รวมฉัน) ในสาขาต่าง ๆ กำลังทำงานกับไฟล์เหล่านี้ ดังนั้นฉันจึงไม่สามารถแยกจากการพัฒนาและการสร้างซ้ำได้เนื่องจากการรวมการปรับเปลี่ยนเหล่านี้เข้ากับการเปลี่ยนแปลงของคนอื่นจะกลายเป็นเรื่องยาก แน่นอนว่าเราต้องการให้ทุกคนรวมกลับไปพัฒนา "หยุด" ไฟล์ (เช่นไม่อนุญาตให้ใครแก้ไขอีกต่อไป) สร้างใหม่และจากนั้น "ยกเลิกการตรึง" แต่สิ่งนี้ก็ไม่ได้ดีเช่นกันเนื่องจากจะทำให้ทุกคนต้องหยุดทำงานในไฟล์เหล่านี้โดยทั่วไปจนกว่าจะทำการเปลี่ยนโครงสร้างใหม่ ดังนั้นมีวิธีการ refactor ไม่ต้องการให้คนอื่นหยุดทำงาน (นาน) หรือผสานสาขาคุณลักษณะของพวกเขาเพื่อพัฒนา?

13
การเขียน“ รหัสดี” หมายความว่าอย่างไร [ปิด]
ในคำถามนี้ฉันถามว่าการเป็นนักเขียนที่ไม่ดีขัดขวางคุณจากการเขียนรหัสที่ดีหรือไม่ คำตอบหลายคำเริ่มต้นด้วย "ขึ้นอยู่กับความหมายของรหัสที่ดี" ปรากฏว่าคำว่า "รหัสที่ดี" และ "รหัสไม่ดี" เป็นอัตนัย เนื่องจากฉันมีมุมมองเดียวจึงอาจแตกต่างจากมุมมองของคนอื่นมาก ดังนั้นการเขียน "รหัสที่ดี" หมายความว่าอย่างไร "รหัสดี" คืออะไร?

8
การแปลงคำสั่ง IF
ดังนั้นฉันจึงเขียนโปรแกรมมาหลายปีแล้วและเพิ่งเริ่มใช้ ReSharper มากขึ้น สิ่งหนึ่งที่ ReSharper แนะนำให้ฉันเสมอคือ "กลับด้าน" ถ้า "คำสั่งเพื่อลดการซ้อน" สมมติว่าฉันมีรหัสนี้: foreach (someObject in someObjectList) { if(someObject != null) { someOtherObject = someObject.SomeProperty; } } และ ReSharper จะแนะนำให้ฉันทำสิ่งนี้: foreach (someObject in someObjectList) { if(someObject == null) continue; someOtherObject = someObject.SomeProperty; } ดูเหมือนว่า ReSharper จะแนะนำให้ฉันย้อนกลับ IFs ไม่ว่าจะทำรังมากแค่ไหนก็ตาม ปัญหานี้คือฉันชอบทำรังในสถานการณ์อย่างน้อยบางครั้ง สำหรับฉันนั้นดูเหมือนง่ายต่อการอ่านและเข้าใจว่าเกิดอะไรขึ้นในบางสถานที่ นี่ไม่ใช่กรณีเสมอไป แต่ฉันรู้สึกสะดวกสบายในการทำรังในบางครั้ง คำถามของฉันคือ: …

6
ต้องการสมาชิกชั้นเรียนหรือผ่านการขัดแย้งระหว่างวิธีการภายใน?
สมมติว่าในส่วนส่วนตัวของคลาสมีค่าที่ใช้โดยวิธีส่วนตัวหลายวิธี คนชอบมีการกำหนดนี้เป็นตัวแปรสมาชิกสำหรับชั้นเรียนหรือผ่านมันเป็นอาร์กิวเมนต์สำหรับแต่ละวิธี - และทำไม ในอีกด้านหนึ่งฉันสามารถเห็นการโต้เถียงที่จะทำให้การลดสถานะ (เช่นตัวแปรสมาชิก) ในชั้นเรียนโดยทั่วไปเป็นสิ่งที่ดีแม้ว่าค่าเดียวกันจะถูกใช้ซ้ำหลายครั้งตลอดทั้งวิธีการเรียนดูเหมือนว่าจะเหมาะ ผู้สมัครเพื่อเป็นตัวแทนของรัฐในชั้นเรียนเพื่อให้รหัสชัดเจนขึ้นถ้าไม่มีอะไรอื่น แก้ไข: เพื่ออธิบายความเห็น / คำถามบางอย่างที่ยกขึ้นฉันไม่ได้พูดถึงค่าคงที่และนี่ไม่ได้เกี่ยวข้องกับกรณีเฉพาะ แต่เป็นเพียงสมมติฐานที่ฉันได้พูดคุยกับคนอื่น ๆ ไม่สนใจมุม OOP สักครู่กรณีการใช้งานเฉพาะที่ฉันมีในใจคือต่อไปนี้ (สมมติว่าผ่านโดยการอ้างอิงเพียงเพื่อให้ตัวทำความสะอาดรหัสเทียม) int x doSomething(x) doAnotherThing(x) doYetAnotherThing(x) doSomethingElse(x) ดังนั้นสิ่งที่ฉันหมายถึงคือมีตัวแปรบางอย่างที่เป็นเรื่องธรรมดาระหว่างฟังก์ชั่นหลายอย่าง - ในกรณีที่ฉันจำได้ว่ามันเป็นเพราะการผูกมัดของฟังก์ชั่นขนาดเล็ก ในระบบ OOP หากวิธีการเหล่านี้เป็นวิธีการเรียน (พูดเนื่องจากการปรับโครงสร้างด้วยวิธีการแยกจากวิธีการขนาดใหญ่) ตัวแปรนั้นสามารถส่งผ่านไปรอบ ๆ พวกเขาทั้งหมดหรืออาจเป็นสมาชิกชั้นเรียน

9
การวิพากษ์วิจารณ์ "สร้างสรรค์" ของรหัสของคุณไม่เป็นประโยชน์ ณ จุดใด
ฉันเพิ่งเริ่มต้นเป็นนักพัฒนารุ่นน้อง เช่นเดียวกับการเป็นหนึ่งในคนที่มีประสบการณ์น้อยที่สุดในทีมฉันก็เป็นผู้หญิงคนหนึ่งซึ่งมาพร้อมกับความท้าทายทุกประเภทของตัวเองที่ทำงานในสภาพแวดล้อมที่เป็นชาย ฉันมีปัญหาเมื่อเร็ว ๆ นี้เพราะฉันรู้สึกว่าฉันได้รับคำวิจารณ์เชิงวิพากษ์วิจารณ์มากเกินไปในงานของฉัน ผมขอยกตัวอย่างสิ่งที่เกิดขึ้นเมื่อเร็ว ๆ นี้ หัวหน้าทีมยุ่งเกินไปที่จะผลักดันในบางสาขาที่ฉันทำดังนั้นเขาจึงไม่ไปถึงพวกเขาจนกว่าจะถึงสุดสัปดาห์ ฉันตรวจสอบเมลของฉันไม่ได้มีความหมายว่าจะทำงานใด ๆ และพบว่าทั้งสองสาขาของฉันถูกปฏิเสธโดยใช้ชื่อตัวแปรทำให้ข้อความแสดงข้อผิดพลาดมีความหมายมากขึ้นและย้ายค่าบางอย่างไปยังไฟล์ปรับแต่ง ฉันไม่รู้สึกว่าการปฏิเสธสาขาของฉันบนพื้นฐานนี้มีประโยชน์ ผู้คนจำนวนมากทำงานในช่วงสุดสัปดาห์และฉันไม่เคยบอกว่าจะทำงาน อย่างมีประสิทธิภาพบางคนอาจถูกบล็อกเพราะฉันไม่มีเวลาทำการเปลี่ยนแปลงและส่งอีกครั้ง เรากำลังทำงานในโครงการที่มีความอ่อนไหวต่อเวลามากและดูเหมือนว่าสำหรับฉันแล้วมันไม่ได้มีประโยชน์อะไรเลยที่จะปฏิเสธรหัสทันทีตามสิ่งต่าง ๆ ที่โปร่งใสสำหรับลูกค้า ฉันอาจจะผิด แต่ดูเหมือนว่าสิ่งเหล่านี้ควรได้รับการจัดการในประเภทปะแก้เมื่อฉันมีเวลา ตอนนี้ฉันเห็นแล้วว่าในบางสภาพแวดล้อมนี่จะเป็นบรรทัดฐาน อย่างไรก็ตามการวิจารณ์ไม่ได้กระจายเท่ากันซึ่งเป็นสิ่งที่นำไปสู่ปัญหาต่อไปของฉัน พื้นฐานของปัญหาเหล่านี้ส่วนใหญ่เกิดจากความจริงที่ว่าฉันอยู่ใน codebase ที่คนอื่นเขียนและพยายามที่จะบุกรุกน้อยที่สุด ฉันเลียนแบบชื่อตัวแปรที่ใช้ที่อื่นในไฟล์ เมื่อฉันพูดถึงสิ่งนี้ฉันก็บอกอย่างตรงไปตรงมาว่า "อย่าเลียนแบบคนอื่นทำในสิ่งที่ถูกต้อง" นี่อาจเป็นสิ่งที่มีประโยชน์น้อยที่สุดที่ฉันบอกได้ หากรหัสที่เช็คอินแล้วไม่สามารถยอมรับได้ฉันควรจะบอกได้อย่างไรว่าอะไรถูกและผิด? หากพื้นฐานของความสับสนนั้นมาจากรหัสพื้นฐานฉันไม่คิดว่า ' ฉันรู้สึกโดดเดี่ยวและผิดหวังมากในสถานการณ์นี้ ฉันได้รับสิ่งที่ดีกว่ามากเกี่ยวกับการทำตามมาตรฐานที่คาดไว้และฉันรู้สึกหงุดหงิดเช่นเมื่อฉันสร้างรหัสใหม่เพื่อตรวจสอบข้อผิดพลาดของ ADD ที่หายไปก่อนหน้านี้ฉันบอกเพียงว่าฉันไม่ได้ ทำให้เกิดข้อผิดพลาดอย่างเพียงพอ (และสาขาถูกปฏิเสธบนพื้นฐานนี้) จะเกิดอะไรขึ้นถ้าฉันไม่เคยเพิ่มลงไปเพื่อเริ่มต้น มันจะเริ่มต้นอย่างไรในรหัสเพื่อเริ่มต้นถ้ามันผิดดังนั้น? นี่คือเหตุผลที่ฉันรู้สึกแยกออกจากกัน: ฉันพบกับรหัสปัญหาที่มีอยู่นี้อย่างต่อเนื่องซึ่งฉันเลียนแบบหรือปรับเปลี่ยนใหม่ เมื่อฉันเลียนแบบมันเป็น "ผิด" และถ้าฉัน refactor มันฉัน chided สำหรับทำไม่เพียงพอ (และถ้าฉันไปตลอดทางแนะนำแมลง …

4
วิธีที่เป็นมิตรกับมนุษย์มากที่สุดในการสั่งซื้อคำจำกัดความวิธีการเรียน?
ในคำจำกัดความของคลาสใดก็ตามฉันเคยเห็นคำจำกัดความของวิธีการเรียงลำดับในหลายวิธี: เรียงตามตัวอักษร, เรียงตามลำดับการใช้งานทั่วไป, เรียงตามตัวอักษรตามทัศนวิสัย, เรียงตามตัวอักษร ฉันมักจะพิมพ์ทุกอย่างแล้วเรียงลำดับใหม่เมื่อฉันเขียนทั้งชั้น ในบันทึกนั้นฉันมีคำถามสามข้อ: การสั่งซื้อมีความสำคัญหรือไม่ มีคำสั่ง "ดีที่สุด" หรือไม่? ฉันเดาว่าไม่ได้ดังนั้นข้อดีและข้อเสียของกลยุทธ์การสั่งซื้อที่แตกต่างกันคืออะไร

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

9
ฉันจะเอาชนะอัมพาตโดยการวิเคราะห์ได้อย่างไรเมื่อเขียนโค้ด?
เมื่อฉันเริ่มโครงการใหม่ฉันมักจะเริ่มคิดเกี่ยวกับรายละเอียดของการดำเนินการทันที "ฉันจะวาง DataBaseHandler ไว้ที่ไหนฉันควรใช้มันอย่างไรคลาสที่ต้องการใช้มันขยายจาก Abstractclass superclass บางส่วน .. ฉันควรใช้อินเทอร์เฟซหรือไม่ฉันจะใช้อินเทอร์เฟซในระดับใด วิธีในการส่งคำขอและการแยกวิเคราะห์ข้อมูล " ฉันสิ้นสุดการถ่วงเวลานานเพราะฉันต้องการรหัสสำหรับความสามารถในการขยายและการนำกลับมาใช้ใหม่ แต่ฉันรู้สึกว่าแทบจะเป็นไปไม่ได้เลยที่จะคิดถึงอดีตเกี่ยวกับวิธีการนำไปใช้อย่างสมบูรณ์ แล้วถ้าฉันพยายามจะพูดว่า "ขันมันให้เสร็จแล้ว!" ฉันก็ชนกำแพงอิฐอย่างรวดเร็วเพราะรหัสของฉันไม่ได้จัดระเบียบฉันผสมระดับนามธรรมต่าง ๆ เป็นต้น คุณมีเทคนิค / วิธีการอะไรบ้างในการเปิดตัวโครงการใหม่ในขณะที่ตั้งค่าโครงสร้างแบบลอจิคัล / แบบแยกส่วนที่จะขยายได้ดี - -แก้ไข - - นี่เป็นประเภทของคำถามที่ตอบรับยากแล้ว แต่ต้องการได้รับคำติชมเพิ่มเติมดูว่ามีฉันทามติบ้างไหม TDD ฟังดูเจ๋งจริงๆและตรงไปตรงมาฉันหมายถึงการเพิ่มความเร็วในการใช้ JUnit ฯลฯ ในเวลาเดียวกันแฟน ๆ ของ TDD คิดอย่างไรเกี่ยวกับความจริงที่ว่าจุดที่ถูกต้องตามกฎหมายที่เกี่ยวข้องกับการแก้ไข TDD ของฉัน ปัญหาเฉพาะคือ TDD ไม่ได้ตอบคำถามการออกแบบ แน่นอนว่าฉันเห็นด้วยกับ TDD จะช่วยฉันกำหนดสิ่งที่ฉันต้องการจะทำและจากนั้นฉันสามารถค่อยๆทำตามวิธีได้ แต่มีรูปแบบ / โครงสร้างการออกแบบโดยรวมที่แตกต่างกันมากมายที่ทุกคนสามารถผ่านการทดสอบหน่วยได้ นั่นเป็นเพียงแค่มันทดสอบหน่วยเดียว …

12
ความครอบคลุมของรหัส“ เพียงพอ” คือเท่าใด
เรากำลังเริ่มต้นผลักดันการครอบคลุมโค้ดในที่ทำงานของฉันและทำให้ฉันคิดว่า .... การครอบคลุมโค้ดมีมากพอเพียงใด เมื่อไหร่ที่คุณจะไปถึงจุดที่จะได้รับผลตอบแทนจากการครอบคลุมโค้ด? อะไรคือจุดหวานระหว่างความครอบคลุมที่ดีและไม่เพียงพอ มันแตกต่างกันไปตามประเภทของโครงการที่คุณทำ (เช่น WPF, WCF, มือถือ, ASP.NET) (นี่คือคลาส C # ที่เรากำลังเขียน)

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