วิธีการสร้างความสมดุลของคุณภาพของรหัสกับบุคลิกภาพที่แข็งแกร่ง


15

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

ฉันต้องการรักษาทีมที่เหนียวแน่นดังนั้นฉันไม่ต้องการสร้างความตึงเครียดด้วยการเป็นแกนนำเกี่ยวกับการจองของฉัน ฉันยังต้องการสร้างผลิตภัณฑ์ที่ยอดเยี่ยมสำหรับลูกค้าของเราโดยไม่ย่อท้อ

ตามเนื้อผ้าใครมีอำนาจ 'ยับยั้ง' ในสิ่งที่ได้รับการตรวจสอบและอย่างไร

วิธีการใช้รหัสที่ได้ผล แต่มันเกี่ยวข้องกับ / ฉลาดเกินไปจะถูกลบออกโดยไม่ต้องเหยียบนิ้วเท้า?


7
คุณสามารถเพิ่มตัวอย่างของสิ่งที่คุณคิดว่าเป็น "ฉลาด" เพียงเพื่อเราทุกคนในหน้าเดียวกันได้หรือไม่
BlackJack

ลำดับชั้นของบุคคลที่เกี่ยวข้องในเรื่องนี้คืออะไร?

2
ทางออกที่ฉลาดคืออะไร? ฉันจะไม่รู้สึกสะดวกสบายที่จะบอกคุณว่าจะปฏิเสธวิธีการแก้ปัญหาถ้ามีความเป็นไปได้มันจะดีกว่าความคิดของคุณเอง
jojo

รหัส 'ฉลาด' ได้รับการปรับให้เหมาะสมก่อนกำหนดหรือวางนัยทั่วไปก่อนกำหนดหรือไม่ โดยปกติแล้วรหัสที่สั้นที่สุดจะเป็นตัวชนะสำหรับการวัดความสั้นที่เหมาะสม (DRYness หรือโทเค็นไม่ใช่อักขระ)
วินไคลน์

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

คำตอบ:


16

ฉันรักคำพูดนี้:

"การดีบักนั้นยากกว่าการเขียนรหัสสองเท่าในตอนแรกดังนั้นถ้าคุณเขียนรหัสอย่างฉลาดที่สุดเท่าที่จะทำได้คุณจะต้องไม่ฉลาดพอที่จะทำการดีบั๊ก" - Brian W. Kernighan

ในอีกด้านหนึ่งสิ่งนี้ทำให้คุณเบื่อกับรหัสที่ฉลาดเกินไปเพราะมันจะยากที่จะดีบักและขยายในภายหลัง

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

หากคุณไม่คิดว่ามันเพิ่มคุณค่าให้วางเคาน์เตอร์ตอบโต้: "คุณจะสร้างส่วนนี้ใหม่ได้อย่างไร (คุณมีการทดสอบในสถานที่ใช่ไหม?) เพื่อให้อ่านได้ง่ายขึ้น อย่าลืมระบุว่ามันยากที่จะสร้างโค้ดที่ฉลาดและอ่านได้ซึ่งจะทำให้นักเก็ตที่ไม่ยอมรับ


เกือบ -1 การดีบักนั้นไม่ยากยกเว้นว่าโค้ดของคุณยุ่งเหยิงและเปราะบางเป็นพิเศษ ปัญหาเดียวของการดีบักคือผู้พัฒนาจำนวนมากไม่มีเงื่อนงำในการใช้เครื่องมือแก้ไขข้อบกพร่อง การเขียนโค้ดที่ยืดหยุ่นและผิดพลาดมากนั้นยากกว่ามาก
Coder

ฉันคิดว่าการแก้ไขข้อบกพร่องนั้นยากขึ้นอย่างแน่นอน คิดแบบนี้ หากรหัสถูกเขียนครั้งแรกอย่างถูกต้องการแก้จุดบกพร่องจะไม่เป็นปัญหาในการทดสอบ (หน่วยและการรวม) พบว่าไม่มีข้อบกพร่อง
tehnyit

10

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

หากรหัสที่ดีที่ซับซ้อนเกินไปคนส่วนใหญ่จะได้รับคำใบ้โดยไม่ได้พูดอะไรเกี่ยวกับคุณภาพของรหัสหรือความเชี่ยวชาญของนักพัฒนา

PS เห็นได้ชัดว่ารหัสนี้ส่วนใหญ่จะเป็นอัตนัยอยู่แล้วดังนั้นรหัสที่เป็นไปไม่ได้ที่ฉลาดคนหนึ่งอาจเป็นเหตุผลที่สมเหตุสมผลและอาจเป็นอัลกอริธึมมาตรฐานอุตสาหกรรมให้กับนักพัฒนาคนอื่นดังนั้นคุณจึงไม่สามารถกล่าวหาใครได้โดยตรงว่า เช่นผู้รับเหมาที่คัดลอกอาร์เรย์ไบต์ลงในรายการ stl ส่งผ่านไปยังรูทีนการเข้ารหัสแล้วแปลงกลับเป็นอาร์เรย์ไบต์!)


4
การทดสอบของฉันคือ "โปรแกรมเมอร์ gradutae สามารถ (อาจ 1-2 ปี) สามารถรักษาได้หรือไม่" .... มันสามารถฉลาด แต่ต้องมีความชัดเจนและรัดกุม
mattnz

1
@ mattnz - ถ้าฉันจะใช้การทดสอบนั้นครึ่งหนึ่งของรหัสที่ฉันเขียนในช่วงหลายปีที่ผ่านมา โปรแกรมเมอร์ระดับบัณฑิตศึกษา (1-2 ปี) ไม่ใช่ทุกคนที่จะเข้าร่วม ไม่ได้บอกว่าเราควรเขียนโค้ดที่ไม่ดี เพียงแค่ว่า "การทดสอบ" ไม่สมเหตุสมผลมากนัก
โกง

6

กฎง่ายๆของฉันคือการงอแนวทางคุณภาพของโค้ดเพื่อให้สอดคล้องกับบุคลิกของนักพัฒนาที่แข็งแกร่ง ฉันใช้มันเสมอเมื่อฉันไม่มีเวลาขุดลึกพอ - โดยทั่วไปการขุดโดยวิธีนี้ค่อนข้างใช้ความพยายามมาก

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

การค้นพบนี้ทำให้ฉันลดการต่อสู้ส่วนใหญ่ซึ่งทำให้มีเวลามากขึ้นในการวิเคราะห์กรณีที่มีปัญหา และฉันพบว่าเมื่อฉันขุดลึกลงไปมากพอจะมีปัญหาด้านการออกแบบที่น่าสนใจอยู่ด้านหลังเป็นปัญหาเล็ก ๆ (หรือไม่ละเอียดเกินไป) ที่ซ่อนอยู่หลังบุคลิกต่อสู้

  • มันเหมือนกับว่าคุณรู้ไหมว่าฉันพบไฟล์ต้นฉบับ 31K เกินขีด จำกัด ขนาดที่แนะนำซึ่งก็คือ 30K ตัวเลือกของฉันอาจใช้เวลาไม่กี่นาที / ชั่วโมงในการต่อสู้เพื่อบังคับให้เจ้าของไฟล์บีบออกเป็นกิโลไบต์เป็นพิเศษหรือใช้เวลาหนึ่งหรือสองวันในการคิดและขุดเพื่อค้นหาสิ่งนั้นกล่าวว่ามี API ห้องสมุดบางตัวที่สามารถใช้ได้แทนทั้งหมด รหัสในไฟล์นั้น (เพื่อให้สามารถลบออกได้)

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


2

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

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

ในที่สุดบางครั้งมันก็ลงเอยด้วยการใช้วิจารณญาณและในกรณีเหล่านั้นคำสุดท้ายควรไปถึงบุคคลที่รับผิดชอบรหัสและ / หรือผลิตภัณฑ์ในท้ายที่สุด โดยปกติแล้วจะมีคนอย่างนักพัฒนาอาวุโสฝ่ายเทคนิคหัวหน้าโครงการหรือผู้อำนวยการฝ่ายวิศวกรรม หากคุณเป็นคนที่รับผิดชอบและคุณรู้สึกว่ารหัสบางอย่างไม่สามารถบำรุงรักษาได้เพียงพอคุณไม่ควรกลัวที่จะพูดเช่นนั้น คุณสามารถทางการทูตเกี่ยวกับสิ่งนั้น:

แซมฉันประทับใจในความฉลาดของคุณที่นี่ แต่ฉันกังวลว่ามันอาจฉลาดเกินไป ฉันจะขอให้คุณพัฒนาต่อไปอีกหนึ่งปีจากนี้แทนที่จะรักษามันไว้และฉันกังวลว่าใครก็ตามที่ต้องรักษามันอาจไม่เข้าใจความสุดยอดของมันอย่างเต็มที่ ฉันรู้ว่าคุณเกลียดที่จะทำ แต่ฉันจะขอบคุณถ้าคุณกลับไปที่การปฏิบัติที่ตรงไปตรงมาที่เรากล่าวถึง

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


2

ในสถานที่ของคุณ(และบางครั้งฉันเป็นหนึ่งใน smartasses เหล่านั้น)ฉันจะไม่ลบมันออก แต่ขอให้ผู้เขียนที่มีไหวพริบ / ฉลาดในการบันทึกเป็นอย่างดีในความคิดเห็นและถ้าเป็นไปได้ที่จะรวมถึงการอภิปรายทางเลือกและ งานเขียนที่เรียบง่ายที่เขาสามารถใช้กับตัวอย่าง

ฉันจะขีดเส้นใต้เรื่องนี้ให้ดีที่สุดเพราะแม้กระทั่งเขาอาจจะไม่จำบิตและบ็อบทั้งหมดที่มีอยู่ในบรรทัดเหล่านั้นในเวลาสองเดือน

เขาอาจจะวางสมาร์ทโค๊ดเพื่อให้ง่ายที่สุดทันทีที่เขาถูกบังคับให้เขียนมันเป็นตัวอย่าง

ทำไมถึงใช้งานได้

  • คุณยอมรับว่าคุณดูแลเกี่ยวกับสิ่งที่เขาเขียน ,
  • คุณพบเขาเคารพโดยขอให้ ,
  • โดยการอ้างถึงหน่วยความจำ / ปัญหาการมุ่งเน้นที่คุณคิดและแยกแยะสถานการณ์ที่รหัสนั้นจะต้องเปลี่ยนและไม่สามารถในขณะที่เขายังคงทำงานให้กับ บริษัท หรือทีม

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


1

จากประสบการณ์ของฉันมักจะยากที่จะรับโค้ดที่เพียงพอกับความต้องการทั้งหมดจากฐานรหัส

อย่างไรก็ตามในครั้งต่อไปที่จะต้องดูแลรักษารหัสคุณสามารถโต้แย้งได้อย่างง่ายดายว่าการเปลี่ยนเป็นมาตรการประหยัดค่าใช้จ่ายในอนาคตเพราะรหัสเดิมนั้นยากต่อการบำรุงรักษา

เท่าที่ยับยั้งอำนาจผู้บริหารเห็นได้ชัดว่า
บางครั้งพวกเขาเป็นทีมหรือคณะกรรมการที่รับผิดชอบด้านคุณภาพของรหัสซึ่งในกรณีนี้พวกเขาจะมีอำนาจเช่นกัน

มันจะมีประโยชน์เช่นกันหากคุณยกตัวอย่างรูปแบบ 'ฉลาด' บางทีคุณอาจจะทำมากเกินไป ...

'ฉลาด' แทบจะไม่เคยเป็นสิ่งเลวร้ายในหนังสือของฉัน แต่ฉันสามารถยอมรับว่าอาจมีความชันลื่นระหว่างฉลาดและซับซ้อน


0

เช่นเดียวกับการปฏิบัติอื่น ๆ อีกมากมายผมคิดว่าคำตอบคือมันขึ้นอยู่กับ

  • หากมีข้อบกพร่องก็จะต้องได้รับการแก้ไขอย่างแน่นอน
  • หากการทำงานของรหัสคุณต้องรักษาความสมดุลของการยืนยันรหัสจะเปลี่ยนไปเทียบกับค่าใช้จ่ายในอนาคตของรหัสที่ฉลาด ในขณะที่มีกฎของหัวแม่มือเกี่ยวกับอัตราส่วนระหว่างงานพัฒนาและงานบำรุงรักษาพวกเขาจะแตกต่างกันมากจากโครงการต่อโครงการ มีเหตุผล
  • พิจารณาว่าทำไมคุณไม่สามารถโน้มน้าวให้เพื่อนร่วมทีมของคุณรู้ว่ารหัสนั้นจำเป็นต้องทำให้ง่ายขึ้น?
  • คุณไม่จำเป็นต้องทำให้ทุกอย่างสมบูรณ์แบบเสมอไป นั่นหมายความว่าการตรวจสอบโค้ดในวงวนไม่สิ้นสุดและไม่มีสิ่งใดถูกเช็คอินเพราะไม่มีสิ่งใด (ยกเว้นรหัสของฉันฮ่าฮ่า) สมบูรณ์แบบ
  • ความชอบส่วนตัวของฉันมีไว้สำหรับผู้เขียนรหัสที่จะกล่าวขั้นสุดท้าย เห็นได้ชัดว่าหากพวกเขาทำงานที่แย่มากอย่างต่อเนื่องคุณต้องดำเนินการบางอย่าง แต่อย่างที่คุณบอกว่าค่าลบของการบังคับให้นักพัฒนาเปลี่ยนรหัสอาจสูงกว่าผลที่ได้จากการแก้ไขถ้านี่เป็นสถานการณ์ที่หายากมาก .

0

ฉันสามารถเกี่ยวข้องกับคำถามนี้ได้อย่างแน่นอน ปัจจุบันฉันเป็นผู้นำทางด้านเทคนิคสำหรับ 2 ทีมและเป็นหน้าที่ของฉันที่จะต้องแน่ใจว่ารหัสที่เราผลิตนั้นสามารถอ่านได้และบำรุงรักษาได้มากที่สุด ในเวลาเดียวกันฉันได้รับการรู้จักในการผลิตรหัส "ฉลาด" บางอย่างและฉันรู้ว่าเพื่อนร่วมทีมของฉันส่วนใหญ่จะมีเวลายากมากที่จะปฏิบัติตามมัน

ข้อสังเกตเล็กน้อยที่ฉันสามารถเสนอได้:

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

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

  3. ฉันเชื่อว่ามันสำคัญมากที่จะต้องมีอินเทอร์เฟซสำหรับคลาสที่สะอาดและเข้าใจได้ง่ายกว่าที่จะไม่มีโค้ด "ฉลาด" ตัวอย่างเช่นเรามีคลาสที่เก็บรักษารายการที่ค้นหา 3 วิธีที่แตกต่างกัน ปัจจุบันมันใช้การค้นหาเชิงเส้นสำหรับการค้นหาทั้งหมดซึ่งทำงานในระดับเล็กน้อย แต่เนื่องจากคลาสนี้อยู่ในระดับที่ต่ำมากฉันจึงเห็นว่าการปรับขนาดไม่ดีนัก ฉันกำลังจะแทนที่ด้วยคลาสอื่นที่ใช้ Boost Intrusive container แต่ละองค์ประกอบจะสนับสนุนการวางลงในแต่ละดัชนีพร้อมกันและการค้นหาทั้งหมดจะทำใน O (sqrt (N)) ใช่มันจะซับซ้อนมากขึ้นภายในและผู้คนจำนวนมากไม่ชอบ Boost แต่ภายนอกจะมี 3 วิธี: เพิ่มลบลบ บรรทัดล่างคือผู้คนสามารถเขียนโค้ดอะไรก็ได้ที่พวกเขาต้องการ (ด้วยเหตุผล)

  4. รักษาแนวคิดของการเป็นเจ้าของรหัส แม้ว่าบางครั้งมันก็ยากที่จะบรรลุเพราะคนอื่นอาจต้องเพิ่ม / แก้ไขโค้ดบางอย่าง เมื่อเขียนโค้ดผู้พัฒนาดั้งเดิมจะเป็นผู้รักษารหัสขั้นสุดท้าย ไม่ได้หมายความว่าไม่มีใครสามารถสัมผัสได้ หากผู้อื่นแก้ไขโค้ดของพวกเขาก็ถือว่าใช้ได้ แต่ในตอนท้ายของวันนักพัฒนาดั้งเดิมจะตรวจสอบและยังคงรับผิดชอบต่อสิ่งที่เกิดขึ้นที่นั่น ไม่ว่ารหัสนั้นจะง่ายหรือฉลาด แต่เป็นลูกของเขา หาก / เมื่อคุณคาดการณ์ข้อผิดพลาดเริ่มซ้อนขึ้นเนื่องจากการออกแบบ / การตัดสินใจรหัสที่ทำแทนที่จะแก้ไขข้อบกพร่องเหล่านั้นเมื่อพวกเขาเข้ามานั่งกับผู้พัฒนานั้น (ผู้ที่ btw ควรแก้ไขข้อบกพร่องเหล่านั้นทั้งหมด) และไตร่ตรองถึงการตัดสินใจเหล่านั้นเพื่อดูว่าพวกเขาสามารถทำสิ่งที่แตกต่าง


0

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

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

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

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

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


0

จากประสบการณ์ส่วนตัวเมื่อสิ่งนี้เกิดขึ้นฉันจะขออนุญาตเป็นผู้ทดสอบหน่วยปฏิปักษ์ต่ออาสาสมัครเพื่อเขียนการทดสอบเพื่อทรมานการปฏิบัติที่ไม่คุ้นเคย

ฉันจะพยายามอย่างหนักที่จะเข้าใจวิธีการทำงานของรหัสอย่างแท้จริงและพยายามตรวจสอบด้วยวิธีต่างๆ

โปรดทราบว่านี่เป็นข้อตกลงด้านเวลา อาจเป็นชั่วโมงหรือหลายสิบชั่วโมงหรือเป็นส่วนที่ดีของสัปดาห์ ขึ้นอยู่กับว่าความซับซ้อนของรหัสนั้นสอดคล้องกับความซับซ้อนของข้อกำหนดหรือไม่

ถ้าฉันไม่ได้เหนือกว่าเช่นถ้ารหัสยังมีชีวิตอยู่การทดสอบหลายอย่างฉันจะโน้มน้าวตัวเองว่าการใช้งานอาจจะรู้แจ้งได้มากกว่าที่ฉันเป็นจริงและฉันจะสนับสนุนการรวมไว้ในผลิตภัณฑ์หลัก

ขึ้นอยู่กับวิธีการควบคุมแหล่งที่มารหัสอาจจะต้องมีความมุ่งมั่นชั่วคราวในระบบควบคุมแหล่งที่มา (อาจอยู่ในสาขา) ก่อนที่ขั้นตอนการทดสอบนี้จะเริ่ม

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

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