หลังจากเขียนโค้ดแล้วทำไมฉันถึงรู้สึกว่า“ ฉันจะเขียนได้ดีขึ้น” หลังจากผ่านไประยะหนึ่ง [ปิด]


12

ฉันทำงานเกี่ยวกับโครงการอดิเรกใน C ++ เป็นเวลานานกว่า 2 ปีแล้ว เมื่อใดก็ตามที่ฉันเขียนโมดูล / ฟังก์ชั่นฉันรหัสมันด้วยความคิดมากมาย ตอนนี้ดูปัญหา

do {
  --> write the code in module 'X' and test it
  --> ... forget for sometime ...
  --> revisit the same piece of code (due to some requirement)
  --> feel that "This isn't written nicely; could have been better"
} while(true);

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

นี่เป็นความรู้สึกร่วมกันของหลาย ๆ คนหรือไม่? นี่เป็นปรากฏการณ์เฉพาะทางภาษาหรือไม่? (เพราะใน C ++ เราสามารถเขียนสิ่งเดียวกันได้หลายวิธี)

ฉันควรทำอย่างไรถ้าผมได้รับนี้อีกครั้งแฟความรู้สึกสำหรับรหัสการผลิตโลกแห่งความจริงที่เปลี่ยนรหัสการทำงานจะไม่ได้รับฉันได้รับเกียรติมาก แต่มันอาจเชิญปัญหาถ้ามันล้มเหลว


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

1
ถ้าคุณดูที่รหัสเดิมของคุณและไม่ได้คิดว่า "ยี้ไม่ได้ฉันทำทำไมมันนี้ทางด้านหลังแล้ว ?!" แล้วคุณไม่ได้เรียนรู้มากพอที่ตั้งแต่คุณเขียนโค้ด
sbi

คำตอบ:


17

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

โดยทั่วไปมีสองสิ่งที่ต้องหลีกเลี่ยงการวนรอบโครงสร้างซ้ำ:

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

อ่านนี่. en.wikipedia.org/wiki/Buyer's_remorse มีประโยชน์มาก
S.Lott

3

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

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

ฉันใช้จ่าย 20% -30% ของเวลาในการสร้างรหัสที่มีอยู่ใหม่ ฉันทำงานใน บริษัท เทคโนโลยีและ "การจัดการ" ไม่เคยบ่นเกี่ยวกับการเปลี่ยนรหัสที่มีอยู่ อย่างไรก็ตามฉันตระหนักว่านี่อาจเป็นปัญหาในบาง บริษัท มาร์ตินฟาวเลอร์ยังมีส่วนในหนังสือฟื้นฟูของเขาอีกด้วย

โดยสรุปแล้วมันเป็นความรู้สึกร่วมกันในประสบการณ์ของฉัน แต่ไม่ใช่เชิงลบ


2

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


2

นี่เป็นความรู้สึกร่วมกันของหลาย ๆ คนหรือไม่? นี่เป็นปรากฏการณ์เฉพาะทางภาษาหรือไม่?

นั่นหมายความว่าคุณกำลังขยายความรู้และมุมมองของคุณ

หากคุณไม่มีภารกิจที่มีลำดับความสำคัญสูงกว่าคุณควรย้อนกลับและปรับปรุงรหัสของคุณ


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

1
@David Wallace - หากไม่มีใครเคยกลับไปใช้รหัสเดิมเราคงไม่ต้องกังวลอะไร
JeffO

1
"เมื่อรหัสของคุณใช้งานได้ให้ดำเนินการต่อ" - คุณจะไม่เชื่อว่าข้อผิดพลาดแบบใดที่ฉันเห็นในรหัสการผลิตเนื่องจากรหัสทำงาน;)
B --овић

@Jeff O - จริงมาก หากฉันกำลังจะรักษารหัสเดิมฉันจะพิจารณาแก้ไขมันไม่ว่าจะเป็นรหัสของฉันหรือคนอื่น แต่ถ้าไม่มีโครงการที่มีเงินดอลลาร์อยู่ด้านหลังซึ่งต้องมีการบำรุงรักษารหัสนั้นก็ไม่มีวิธีที่จะพิสูจน์เวลาที่ใช้ในการจัดระเบียบมันได้ แน่นอนเว้นแต่ว่าเป็นรถบั๊กกี้แน่นอน
Dawood ibn Kareem

@VJovic - หากมีข้อบกพร่องในการผลิตเป็นเพราะรหัส DIDN'T ใช้งานไม่ได้ ฉันคิดว่า OP กำลังพูดถึงโค้ดที่ทำงานอย่างถูกต้อง แต่น่าเกลียด
Dawood ibn Kareem

2

ฉันมักจะคิดเสมอว่าคน ๆ หนึ่งจะเรียนวิชาคณิตศาสตร์เพื่อเสริมสร้างทักษะของพวกเขาในชั้นเรียนก่อนหน้า พีชคณิตดูเหมือนยากจนกว่าคุณจะเอาพีชคณิต II; จากนั้นทักษะที่คุณเรียนรู้ในพีชคณิตก็มีประโยชน์ มันเป็นสิ่งเดียวกันในการเขียนโปรแกรมการเขียนงานไม้หรือสิ่งอื่นใด

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


2

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

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


1

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

หากคุณไม่มีความรู้สึกนี้มันหมายถึงหนึ่งในสองสิ่งนี้:

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