การล้างโค้ดของคนอื่นสำคัญอย่างไรเมื่อต้องเผชิญกับกำหนดเวลาที่แน่นหนา [ปิด]


38

(ฉันกำลังพูดถึงโค้ด HTML / CSS (ไม่ใช่ภาษาการเขียนโปรแกรม) แต่ฉันคิดว่าเรายังต้องเผชิญกับปัญหาเช่นเดียวกับโปรแกรมเมอร์)

ฉันเป็นนักออกแบบ front-end อาวุโสในทีมและฉันมักจะต้องทำผลงานใหม่ของรุ่นน้องในเวลาที่ จำกัด

ฉันกำลังเผชิญกับปัญหาที่ 2:

  1. สไตล์การเขียนโค้ดของพวกเขาค่อนข้างยุ่งเหยิง
  2. ความสวยงามไม่ดี

ฉันพบสไตล์การเข้ารหัสของพวกเขาว่าเป็นถุงผสมที่ไม่มีแบบแผน / มาตรฐานที่เหมาะสม ฉันขาดการทำความสะอาดรหัสหรือจัดการกับรหัสของพวกเขา (แม้แต่การคัดลอกวิธีที่พวกเขาทำ)

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

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

(ฉันไม่ต้องการที่จะฟังดูหยิ่ง แต่นั่นคือความจริงมันจะใช้เวลาหลายปีกว่าในการเขียนโค้ดที่ดีกว่าฉันรู้ฉันเขียนโค้ดยุ่ง ๆ เมื่อฉันเริ่มต้น)


1
หากคุณมีตัวเลือกให้ดูที่ผลิตภัณฑ์ JetBrains (Re-Sharper สำหรับ C #, IntelliJ สำหรับ Java และแม้แต่ภาษา 'ไดนามิก') ซึ่งสามารถแก้ปัญหาการเปลี่ยนแปลงแก้ปัญหาทั้งโครงการโดยใช้เวลาน้อยมาก (นอกจากนี้ยังสามารถใช้ในการสอนจูเนียร์แบบโต้ตอบในสิ่งที่เป็นรูปธรรม แต่ให้แน่ใจว่าคุณและพวกเขาเห็นด้วยกับการตั้งค่าเดียวกันสำหรับโครงการ (และตรวจสอบให้แน่ใจว่าคุณทำทุกสิ่งในการกระทำแยกต่างหาก การเปลี่ยนแปลงที่สำคัญและความงามเปลี่ยนแปลงไปในความมุ่งมั่นเดียวกัน)
David Bullock


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

10
ฉันเห็นแล้วว่าคุณมีปัญหากับการขาดการทำงานเป็นทีมที่นี่ คุณควรให้การศึกษาและอบรมเลี้ยงดูรุ่นน้อง ไม่ใช่แค่เขียนรหัสใหม่และบ่นเกี่ยวกับมัน
James

3
@Ramhound ตั้งแต่ทัวริงคิดประดิษฐ์เครื่องทัวริงฉันเดา แต่กลับไปที่ประเด็นถ้าคุณเป็นรุ่นพี่ที่ควรให้รุ่นน้องได้ยินคุณ สอนพวกเขาถึงวิธีการทำอย่างถูกวิธี แต่มันเป็นสิ่งสำคัญที่จะถามความเห็นของพวกเขาและบางทีพวกเขาอาจมีความคิดบางอย่างเกี่ยวกับวิธีการทำสิ่งต่างๆในวิธีที่ดีกว่า นอกจากนี้หากคุณใช้ CSS ดิบสำหรับโครงการที่ไม่สำคัญที่คุณทำผิดลองนำโครงการของคุณไปใช้กับ LESS หรือ SASS
Hoffmann

คำตอบ:


79

ฉันเชื่อว่าคุณกำลังดูปัญหาผิดวิธี - คุณพลาดโอกาสที่ดีในการสอนรุ่นน้องให้รู้วิธีการเขียนโค้ดที่ดีขึ้น

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

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

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

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

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


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

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

23
@Phil เมื่อคำนวณวันครบกำหนดเวลาในการพิจารณาทบทวนรหัสควรนำมาพิจารณาด้วย มันไม่ได้เป็นขั้นตอนพิเศษนอกเหนือจากกระบวนการพัฒนาแบบ devleopment - มันเป็นส่วนสำคัญของกระบวนการพัฒนา
dj18

2
นอกจากนี้การฝึกอบรมรุ่นน้องผ่านการตรวจสอบรหัสอาจมีค่าใช้จ่ายจำนวนหนึ่งในขณะนี้ (ซึ่ง dj18 บอกว่าควรเป็นปัจจัยในกำหนดเวลาและประมาณการของคุณต่อไป) แต่มันจะได้รับการชำระคืนในหลักสูตรเนื่องจากหลายต่อหลายครั้ง งานเดิมมากขึ้น หากกำหนดเวลาของคุณแน่นมากจนคุณไม่เคยมีโอกาสทำแบบนี้มันจะมีกลิ่นของเกลียวมรณะ ...
Julia Hayward

2
@JustinPaulson อย่าเข้าใจฉันผิด - ความจริงที่ว่ามีคนเขียนโค้ดบางอย่างไม่ได้ทำให้รหัสนี้ "เขา" อีกหนึ่งสัปดาห์ต่อมาสมาชิกในทีมคนอื่นจะได้รับงานที่จะต้องให้เธอแก้ไขรหัสนั้นและเธอควรเปลี่ยนรหัสตามความต้องการของเธออย่างแน่นอน อย่างไรก็ตามฉันไม่เห็นกรณีการใช้งานที่ใครบางคนควร 'ล้างข้อมูล' รหัสของคนอื่นเพื่อทำความสะอาดโดยเฉพาะอย่างยิ่งไม่ได้เป็นสิ่งนาทีสุดท้ายในกำหนดเวลาแน่น
Uri Agassi

29

ฉันเคยพูดแบบนี้มาก่อนและจะพูดอีกครั้งว่า "รหัสการทำงานมีค่ามากกว่ารหัสสวย"

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

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


11
"ถ้านี่คือรหัสทดสอบคุณจะต้องยกเลิกความพยายามในการทดสอบทั้งหมดและจะต้องทำการทดสอบซ้ำ" ไม่คุณไม่ได้ทำการทดสอบใด ๆ คุณจะต้องเรียกใช้การทดสอบอีกครั้งซึ่งคุณควรทำสำหรับการยืนยันแต่ละครั้ง ถ้ามันใช้เวลานานจนถือว่าเป็นไปไม่ได้การทดสอบจะเป็นเรื่องไร้สาระและควรได้รับการแก้ไข
l0b0

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

20
ปัญหาคือรหัสน่าเกลียดอย่างรวดเร็ว devolves เป็นรหัสเสีย
Telastyn

1
@ramhound - แน่นอน แต่ OP (และเกือบทุกคนอื่น ๆ ) ไม่ได้พูดถึงรหัสที่ใช้มาตรฐานแบบเก่าเท่านั้น - พวกเขากำลังพูดถึงรหัสที่น่าอึดอัดใจไม่สอดคล้องกันและไม่ดี
Telastyn

1
@JamesAnderson นี่เป็นมุมมองที่สั้นมาก รหัสจะถูกเขียนเพียงครั้งเดียว แต่จะคงไว้ตลอดชีวิตของผลิตภัณฑ์ การเข้ารหัสส่วนใหญ่เป็นการปรับโครงสร้างใหม่ นานแค่ไหนที่คุณเขียนโค้ดบนหน้าจอว่างเปล่าก่อนที่คุณจะ tweaking และดูว่ามันทำงานตามที่คาดไว้? ดังนั้นคุณกำลัง refactoring แม้ในชั่วโมงแรกหลังจากเริ่มชั้นเรียนใหม่ ค่าใช้จ่ายในการปรับเปลี่ยนรหัสที่น่าเกลียดในการแก้ไขข้อบกพร่องและการปรับปรุงที่ตามมาจะทำให้ค่าใช้จ่ายน้อยลงโดยใช้เวลาเพียงเล็กน้อยในการตรวจสอบโค้ดและย้ายทีมไปสู่มาตรฐานที่ชัดเจน
Scott Shipp

16
  • คำตอบสั้น ๆ คือ: ไม่ เมื่อเวลายากลำบากบางครั้งคุณเพียงแค่ต้องก้มหัวและรับสัญลักษณ์ความงาม ;)

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

  • แต่บางครั้งการทำความสะอาดเล็กน้อยก็ทำให้การทำงานเร็วขึ้น แม้แต่การเปลี่ยนแปลงประเภทการค้นหาและแทนที่อย่างรวดเร็วยังทำให้ทุกอย่างเข้าถึงได้ง่ายขึ้น

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

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


9

เมื่อแก้ไขรหัสและมีกำหนดเวลาฉันใช้กฎสองข้อตามปกติ:

รหัสนั้นแย่มาก แต่ก็เป็นไปได้ที่จะพบปัญหาในเวลาที่เหมาะสมและแก้ไขได้

ฉันจะแก้ไขปัญหาและออกจากส่วนที่เหลือเหมือนเดิม

รหัสยุ่งมากจนยากที่จะหาปัญหาที่นั่น การแก้ไขบางสิ่งบางอย่างทำให้เกิดการแตกทันทีอย่างอื่น มันอาจจะเร็วกว่าที่จะเขียนโค้ดนั้นตั้งแต่เริ่มต้นมากกว่าการแก้ไข

จากนั้นฉันก็ไม่มีทางเลือกอื่นนอกจากเขียนใหม่ / refactorจนกว่ารหัสจะสะอาดพอที่จะแปลและแก้ไขข้อผิดพลาด

เส้นเขตแดนกรณีคือ

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

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


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

6

ฉันสนใจที่จะทราบว่าคุณกำลังค้นหาปัญหานี้ในกระบวนการใด

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

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

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


4

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


3

เพื่อช่วยลดปัญหาในอนาคตให้พัฒนาเอกสารมาตรฐานการเข้ารหัสภายในและวิธีปฏิบัติที่พนักงานทุกคนต้องปฏิบัติตาม

สำหรับแบตช์ปัจจุบันให้ล้างรหัสตามเอกสาร S&P เมื่อคุณทำการปรับรหัสใหม่ แต่เฉพาะเมื่อคุณทำการรีแฟคเตอร์


ฉันทำงานให้กับ บริษัท ใหญ่ ๆ ที่มุ่งเน้นกระบวนการที่ต้องการใช้จ่ายเงินจำนวนหนึ่งเพื่อให้แน่ใจว่าตรงตามมาตรฐานการเข้ารหัสและการปฏิบัติ พวกเขาไม่เคยอยู่จนกระทั่งเครื่องมืออัตโนมัติเริ่มบังคับใช้
Dunk

@Dunk ทหารสหรัฐฯนับว่า "ใหญ่และมุ่งเน้นกระบวนการ" หรือไม่? พวกเขาใช้ S & Ps ตลอดเวลา: stroustrup.com/JSF-AV-rules.pdf
Casey

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

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

@Dunk ทีม JSF-AV ต้องยอมรับสิ่งนี้เอกสารกล่าวถึงการใช้เครื่องมืออัตโนมัติเพื่อบังคับใช้ S & Ps (ย้อนกลับไปในปี 2548)
Casey

2

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

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


2

การปรับปรุงคุณภาพโดยรวมนั้นยอดเยี่ยมกว่าการใช้คนเดียวเป็น "ตัวกรอง" สำหรับกลุ่มที่ใหญ่กว่า เมื่อทราบว่า:

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

2

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

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

มีประโยชน์มากมายสำหรับคนของคุณที่จะ:

  • เรียนรู้สไตล์ที่ดีขึ้น
  • ปฏิบัติตามแนวทางปฏิบัติที่ดีกว่า
  • เรียนรู้ที่จะค้นคว้าสิ่งที่พวกเขาทำ

และประโยชน์บางประการสำหรับตัวคุณเองคุณจะ:

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

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

ในฐานะที่เป็นโปรแกรมเมอร์ Python และผู้นำด้านการตรวจสอบโค้ดฉันได้พิมพ์ PEP 8 และคู่มือ Python Style ของ Google อย่างน้อยหนึ่งโหลเพื่อให้ส่งต่อไป สิ่งที่โปรแกรมเมอร์จะไม่เรียนรู้จากพวกเขาจะพบว่าตัวเองตกอยู่เบื้องหลังผู้ที่ทำ ที่กล่าวว่าฉันยอมรับว่าตัวตรวจสอบรูปแบบยังเป็นแนวปฏิบัติที่ดีหากคุณสามารถใช้งานได้
Aaron Hall

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

Python เป็นโอเพ่นซอร์ส Cornucopia ที่มีเครื่องมือฟรีทุกชนิด (pylint, pep8, pyflakes) ซึ่งเราได้รวมและพัฒนาขึ้นมาเนื่องจากเรามีนักพัฒนาหลายพันคน
Aaron Hall

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

2

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

นอกจากนี้ฉันเข้าใจว่าคนส่วนใหญ่ไม่ได้รับการแก้ไขเช่นนี้ ฉันเข้าใจสิ่งนี้เช่นกัน

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

หนี้เทคคือคำว่า มันจะกลับมาซักวันหนึ่งและใครบางคนจะจ่ายให้

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


0

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

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

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

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

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

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

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

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


0

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

รหัสน่าเกลียดที่ใช้งานได้ดีมักจะปรับ 90% ของเวลา แต่แยกออกจากกันที่ขอบ ทำให้แน่ใจว่าปกติแล้วมันจะไม่ง่ายพอโดยทำตามกฎง่ายๆเพียงไม่กี่ข้อ อันดับแรกควรบังคับให้โปรแกรมเมอร์ทุกคนกำหนดและบันทึกข้อ จำกัด ที่แน่นอนสำหรับทุกขั้นตอนหรือบล็อกการทำงานที่ผลิตขึ้น

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

ประการที่สามการตั้งค่าสภาพแวดล้อมการพัฒนามาตรฐานด้วยเครื่องมือที่กำหนดค่าไว้ล่วงหน้านั้นมีค่า เซิร์ฟเวอร์ TS นั้นยอดเยี่ยมสำหรับสิ่งนี้ ทุกคนมีเครื่องมือที่แน่นอนเหมือนกัน (และเวอร์ชั่น) การกำหนดค่าเดียวกันและการปรับปรุงเดียวกัน ติดตั้งเครื่องมือ refactoring เช่น CodeRush หรือ Resharper กำหนดค่าล่วงหน้าตามมาตรฐานของคุณและสั่งให้โปรแกรมเมอร์เขียนโปรแกรมว่าคุณจะปฏิเสธข้อผูกพันใด ๆ ที่ยังคงมีคำเตือนอยู่ ตอนนี้คุณสามารถใช้เวลาในการตรวจสอบรหัสของทีมเพื่อปรับปรุงกฎของคุณจากความคิดเห็นของพวกเขาและทีมงานของคุณจะแก้ไขตัวเองอย่างมีความสุขโดยที่คุณไม่ต้องทำความสะอาดอย่างต่อเนื่องในภายหลัง นอกจากนี้ยังง่ายกว่ามากสำหรับโปรแกรมเมอร์ที่จะวิจารณ์รหัสจากเครื่องมือที่กำหนดค่าไว้อย่างถูกต้องมากกว่าจากเพื่อนร่วมงานหรือเจ้านายซึ่งมาตรฐานอาจดูเหมือนกำหนดโดยพลการหรือไม่เข้าใจอย่างถูกต้อง ถ้า IDE บอกคุณว่าโค้ดของคุณต่ำ ไม่มีใครจะโต้แย้งกับมันและมันจะถูกแก้ไข คุณจะพบว่าคุณภาพของรหัสจะเพิ่มขึ้นอย่างมากและทีมโดยรวมจะใช้เวลาในการลดการสร้างและทำความสะอาดอีกครั้งหลังจากผ่านไปไม่กี่สัปดาห์ โปรแกรมเมอร์จะคุ้นเคยกับกฎและหยุดเขียนรหัสอึ

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


0

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

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

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