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

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

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

16
คุณควรเสียสละการอ่านรหัสด้วยรหัสที่มีประสิทธิภาพหรือไม่ [ปิด]
คุณควรเสียสละการอ่านรหัสด้วยรหัสที่มีประสิทธิภาพหรือไม่ เช่น 3 บรรทัดของรหัสเป็น 1 บรรทัด ฉันอ่านในCode Craftโดย Pete Goodliffe ว่าการอ่านเป็นกุญแจสำคัญ ความคิดของคุณ?

5
ไฟล์โค้ดมีขนาดใหญ่เกินไป?
ฉันกำลังค้นหาไฟล์บรรทัด 2-3k มากมายและมันก็ไม่ได้รู้สึกว่ามันควรจะใหญ่ขนาดนั้น อะไรคือเกณฑ์ที่ดีในการโทรหาไฟล์ซอร์สโค้ดอย่างออบเจ็กต์ "ใหญ่เกินไป"?

14
แก้ไขข้อบกพร่องหรือรอให้ลูกค้าค้นหาพวกเขา
คนอื่น ๆ แก้ไขข้อผิดพลาดเมื่อพวกเขาเห็นพวกเขาหรือพวกเขารอจนกว่าจะมีข้อผิดพลาด / การสูญเสียข้อมูล / คนตายก่อนที่จะแก้ไขหรือไม่ ตัวอย่างที่ 1 Customer customer = null; ... customer.Save(); รหัสผิดอย่างเห็นได้ชัดและไม่มีทางแก้ไข - เรียกใช้วิธีการอ้างอิงแบบ null มันไม่ได้ผิดพลาดเพราะSaveไม่ได้เข้าถึงข้อมูลอินสแตนซ์ใด ๆ ดังนั้นมันก็เหมือนกับการเรียกฟังก์ชั่นคงที่ แต่การเปลี่ยนแปลงเล็ก ๆ น้อย ๆ ที่ใดก็สามารถทำให้รหัสที่เสียหายที่ไม่ผิดพลาด: เพื่อเริ่มต้นการทำงานล้มเหลว แต่ก็ยังไม่ได้นึกไม่ถึงว่าการแก้ไขรหัส: Customer customer = null; ... customer = new Customer(); try ... customer.Save(); ... finally customer.Free(); end; อาจแนะนำความผิดพลาด; ไม่มีใครค้นพบผ่านการทดสอบหน่วยที่มีการครอบคลุมที่สมบูรณ์และการทดสอบผู้ใช้ด้วยตนเอง ตัวอย่างที่ 2 float …
35 code-quality  bug 

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

7
คุณควรใช้ห้องสมุดเมื่อคุณสามารถทำงานได้โดยไม่ต้องหรือไม่ [ปิด]
ฉันอยู่ในสถานการณ์ที่ฉันสามารถใช้ปลั๊กอิน JavaScript แบบโอเพ่นซอร์สเพื่อทำภารกิจให้สำเร็จ แต่เมื่อฉันพยายามที่จะใช้มันฉันพบว่าตัวเองต้องออกแบบสิ่งต่าง ๆ มากมายที่ฉันได้ทำไปแล้วและมันก็เพิ่มความซับซ้อนบางอย่างในความเห็นที่ต่ำต้อยของฉันให้กับโครงการ ในขณะที่ฉันสามารถทำงานเดียวกันด้วยรหัสที่สะอาดฉันสามารถสร้างงานเองได้และไม่จำเป็นต้องเปลี่ยนสิ่งที่ฉันทำไปแล้ว คุณควรเลือกใช้ห้องสมุดในสถานการณ์นี้ (เช่นเพื่อประโยชน์ของรหัสที่มีคุณภาพดีกว่าหรือไม่)

10
ผ่านตัวแปรสมาชิกเป็นพารามิเตอร์วิธี
ในโครงการฉันพบรหัสเช่นนี้: class SomeClass { private SomeType _someField; public SomeType SomeField { get { return _someField; } set { _someField = value; } } protected virtual void SomeMethod(/*...., */SomeType someVar) { } private void SomeAnotherMethod() { //............. SomeMethod(_someField); //............. } }; ฉันจะโน้มน้าวให้เพื่อนร่วมทีมของฉันว่านี่เป็นรหัสไม่ดีได้อย่างไร ฉันเชื่อว่านี่เป็นภาวะแทรกซ้อนที่ไม่จำเป็น ส่งผ่านตัวแปรสมาชิกเป็นพารามิเตอร์เมธอดทำไมถ้าคุณสามารถเข้าถึงมันได้? นี่ก็เป็นการละเมิด encapsulation คุณเห็นปัญหาอื่น ๆ ของรหัสนี้หรือไม่?

9
อะไรคือข้อเสียของการเขียนโค้ดก่อนที่จะทำการทดสอบหน่วย?
ฉันเห็นคำแนะนำเสมอว่าเราควรเขียนการทดสอบหน่วยแล้วเริ่มเขียนโค้ด แต่ฉันรู้สึกว่าวิธีอื่นจะสะดวกสบายกว่า (สำหรับฉัน) - เขียนโค้ดและทดสอบหน่วยเพราะฉันรู้สึกว่าเรามีความชัดเจนมากขึ้นหลังจากที่เราเขียนรหัสจริง ถ้าฉันเขียนรหัสและจากนั้นการทดสอบฉันอาจต้องเปลี่ยนรหัสของฉันเล็กน้อยเพื่อให้สามารถทดสอบได้แม้ว่าฉันจะมีสมาธิมากในการสร้างการออกแบบที่ทดสอบได้ ในทางกลับกันถ้าฉันเขียนการทดสอบและจากนั้นรหัสการทดสอบจะเปลี่ยนค่อนข้างบ่อยเป็นและเมื่อรหัสรูปร่างขึ้น เมื่อฉันเห็นข้อเสนอแนะจำนวนมากเพื่อเริ่มเขียนการทดสอบจากนั้นไปยังการเขียนโปรแกรมข้อเสียเปรียบถ้าฉันทำอย่างอื่น - เขียนโค้ดแล้วทดสอบหน่วย?

5
คุณอธิบายการแยกข้อกังวลให้ผู้อื่นได้อย่างไร
หากคุณมีเพื่อนร่วมงานที่ไม่เข้าใจประโยชน์ของการแยกข้อกังวลหรือไม่เข้าใจเพียงพอที่จะนำไปใช้อย่างสม่ำเสมอในการทำงานประจำวันของพวกเขาคุณจะอธิบายให้พวกเขาฟังอย่างไร

17
การวัดที่มีประโยชน์สำหรับซอร์สโค้ดคืออะไร [ปิด]
การวัดที่มีประโยชน์ในการจับภาพสำหรับซอร์สโค้ดคืออะไร เช่นเมตริก(ปฏิบัติการ) เส้นของรหัสหรือความซับซ้อน Cyclomaticช่วยให้มีการประกันคุณภาพหรือพวกเขาเป็นประโยชน์โดยทั่วไปสำหรับกระบวนการพัฒนาซอฟต์แวร์?

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

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

13
คุณจะตรวจสอบคุณภาพของรหัสผู้ว่าจ้างที่มีศักยภาพได้อย่างไรก่อนที่คุณจะเข้ารับตำแหน่ง [ปิด]
จากประสบการณ์ของฉันก่อนที่คุณจะเริ่มทำงานกับ บริษัท คุณไม่มีโอกาสได้ดู code-base (ฉันถามและด้วยเหตุผลของการรักษาความลับทุกคนมักจะบอกว่าไม่ฉันคิดว่ามันยุติธรรม) ดังนั้นระหว่างการสัมภาษณ์ คุณคิดว่าเป็นคำถามที่สำคัญที่สุดในการขอให้ตรวจสอบว่ารหัสอยู่ในสถานะใด (หลังจากทั้งหมดถ้าเป็นสุนัขคุณจะต้องอยู่ในกลุ่มผู้โชคร้ายที่ต้องเดินทุกวัน)? UPDATE: รายการตรวจสอบ: ถาม; สิ่งที่พวกเขาคิดเกี่ยวกับ codebase และเมื่อคุณทำอย่างนั้นให้ใส่ใจกับการแสดงออกทางสีหน้าและเวลาที่พวกเขาต้องตอบ [อานนท์] ระดับ CMM ของ บริษัท คืออะไร [DPD] (และถ้าคุณได้ยินระดับ 5 ให้ใช้วิธีอื่น [Doug T]) วงจรชีวิตใดที่พวกเขาใช้ [DPD] (และถ้าคุณได้ยิน "Agile" นั่นคือเมื่อคุณเริ่มถามคำถามเจาะเพื่อลองคิดดูว่าโดย "Agile" พวกเขาหมายถึง "Agile หรือ" Cowboy coding "[Carson63000] เครื่องมือใดที่พวกเขาใช้เพื่อประเมินคุณภาพโค้ด [DPD] เครื่องมืออะไรที่พวกเขาใช้สำหรับการพัฒนา [DPD] (ค้นหาเครื่องมือ refactoring และเซิร์ฟเวอร์บิลด์ต่อเนื่อง) ระบบที่ใช้ซอร์สโค้ด (การควบคุมเวอร์ชัน) คืออะไรและการติดตามที่ดีคือการถามว่าทำไมจึงใช้ [Zachary K] …

5
ถือว่าเป็น Pythonic ที่มีหลายคลาสที่กำหนดไว้ในไฟล์เดียวกันหรือไม่?
ในการทำงานกับ python เป็นครั้งแรกฉันพบว่าฉันเขียนหลายคลาสในไฟล์เดียวกันซึ่งตรงข้ามกับภาษาอื่นเช่น Java ซึ่งใช้หนึ่งไฟล์ต่อหนึ่งคลาส โดยปกติแล้วคลาสเหล่านี้จะประกอบไปด้วยคลาสฐานนามธรรม 1 ชุดโดยมีการใช้งานอย่างเป็นรูปธรรม 1-2 รายการซึ่งการใช้งานแตกต่างกันเล็กน้อย ฉันโพสต์ไฟล์ดังกล่าวหนึ่งไฟล์ด้านล่าง: class Logger(object): def __init__(self, path, fileName): self.logFile = open(path + '/' + filename, 'w+') self.logFile.seek(0, 2) def log(self, stringtoLog): self.logFile.write(stringToLog) def __del__(self): self.logFile.close() class TestLogger(Logger): def __init__(self, serialNumber): Logger.__init__('/tests/ModuleName', serialNumber): def readStatusLine(self): self.logFile.seek(0,0) statusLine = self.logFile.readLine() self.logFile.seek(0,2) return StatusLine …

11
ปัจจัยใดที่ควรมีอิทธิพลต่อวิธีที่ฉันพิจารณาเมื่อจะละทิ้งโครงการเล็ก ๆ กับเพื่อน [ปิด]
ฉันพบว่าตัวเองอยู่ในจุดที่ยากลำบากของสาย เคยทำงานในเกมกับเพื่อนเขียนโปรแกรมมาเกือบ 8 เดือนแล้ว เราทั้งคู่เริ่มต้นในฐานะผู้มาใหม่ในการเขียนโปรแกรมประมาณเดือนสิงหาคมของปีที่แล้วเขาเป็นนักเรียน CS ปีที่ 2 ฉันเป็นผู้ให้การสนับสนุนด้านเทคโนโลยีโดยการค้าและเป็นโปรแกรมเมอร์ที่สอนตัวเองด้วยหนังสือมากมายและการสมัครสมาชิกออนไลน์ ปัญหาที่ฉันเห็นอยู่ตลอดเวลาคือเมื่อเราเขียนโค้ดจำนวนหนึ่งบ่อยครั้งที่มันจะถูกแฮ็กเข้าด้วยกันมีความล้มเหลวมากมายและหากเป็นแนวคิดใหม่เอี่ยมสำหรับเราหนึ่งคนที่เต็มไปด้วยโซลูชั่นไร้เดียงสา นี่เป็นสิ่งที่ดีเรากำลังเรียนรู้ฉันคาดหวังว่าโค้ดทั้งสองของเราจะถูกแฮ็กเข้าด้วยกันในภาคเรียนหรือรอบที่สอง ปัญหานำเสนอตัวเองเมื่อมันมาถึงการแก้ไขและ refactoring พฤติกรรมที่แฮ็กด้วยกัน คู่ของฉันจะยึดติดกับก้อนกรวดที่สดใหม่ของเขาด้วยกันอย่างโจ๋งครึ่มปฏิเสธที่จะเห็นข้อผิดพลาดใด ๆ ในขณะที่มันเริ่มทำงาน การอ้างถึงความสมบูรณ์แบบจากชิ้นส่วนของโครงสร้างฉันไม่สามารถแม้แต่จะใช้แม้ว่ามันจะมีความคิดเห็นและวิธีการและฟิลด์ที่ตั้งชื่อไว้อย่างเหมาะสมก็ตาม ไม่ว่าฉันจะพยายามแค่ไหนฉันก็ไม่สามารถทำให้เขาเห็นข้อบกพร่องที่เห็นได้ชัดซึ่งจะป้องกันไม่ให้เกิดการเปลี่ยนแปลงหรือการขยายตัวของพฤติกรรมโดยไม่ทำลายมันและทุกอย่างที่มันเชื่อมโยงกับพวกเขาอาจจะอยู่ในชั้นเดียวกัน โซลูชันที่ถูกแฮ็กตลอดเวลาจะถูกแฮ็กอยู่ตลอดและคิดว่าการออกแบบที่ไม่ดีจะยังคงอยู่ในแบบที่พวกเขาคิด ฉันใช้เวลาไปกับการดูแลรหัสใหม่ให้มากขึ้นเพราะฉันเขียนด้วยตัวเองฉันเสียสิ่งที่ต้องทำ คู่ของฉันสูญเสียมันไปคืนนี้และทำให้ชัดเจนว่าไม่ว่าอะไรก็ตามไม่ว่าจะเป็นมาตรฐานไม่ว่าจะเป็นเรื่องธรรมดาการปฏิบัติไม่ว่าจะเป็นข้อพิสูจน์ที่หักล้างไม่ได้ก็ตามรหัสของเขาจะยังคงอยู่ในแบบที่เขาทำ แม้ว่าหนังสือทั้งเล่มจะถูกเขียนขึ้นเกี่ยวกับสาเหตุที่คุณต้องการหลีกเลี่ยงการทำอะไรเขาจะปฏิเสธที่จะยอมรับความถูกต้องของพวกเขาโดยอ้างว่าเป็นเพียงความเห็นของใครบางคน ฉันมีความสนใจในโครงการของเรา แต่ฉันไม่แน่ใจว่าฉันจะสามารถทำงานร่วมกับคู่ค้าของฉันได้หรือไม่ ฉันดูเหมือนจะมีสามตัวเลือกให้ฉันเปิด หยุดการดูแลเกี่ยวกับการทำงานของ codebase ที่ผ่านจุดรวบรวมและเพียงจัดการกับการพยายามที่จะรักษาและแยกวิเคราะห์พฤติกรรมที่แทบจะไม่คลานไปมา หวังว่าเมื่อสิ่งต่าง ๆ เริ่มสลายอย่างจริงจังเขาจะเห็นและพยายามทำมากกว่าแค่ใส่ bandaid เหนือการออกแบบที่มีข้อบกพร่องพื้นฐาน ติดตามข้อถกเถียงที่ไม่รู้จบเกี่ยวกับปัญหาที่เกิดขึ้นเมื่อทศวรรษที่แล้วโดยบุคคลที่มีความสามารถมากกว่า หยุดเขียนโปรแกรมในโครงการนี้ทิ้งโค้ดของฉันเกือบ 10,000 บรรทัดและใช้เวลาหลายชั่วโมงในการออกแบบและลองหาโปรเจคใหม่ด้วยตัวเอง ฉันจะใช้วิธีการใดเพื่อตรวจสอบว่าโครงการนี้ดำเนินต่อกับบุคคลนี้ได้หรือไม่ หรือปัจจัยใดที่ควรมีอิทธิพลต่อการตัดสินใจของฉัน เราได้เขียนโค้ดจำนวนมากและฉันไม่ต้องการยอมแพ้เว้นแต่จะจำเป็น

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