ช่วยโปรแกรมเมอร์ผู้น้อยให้ผ่านข้อบกพร่องของพวกเขา? [ปิด]


15

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

ฉันไม่ได้หมายถึงทักษะระหว่างบุคคลเช่น 'การฟังคำแนะนำ' ฉันหมายถึงเรื่องทางเทคนิคเช่น (ถ้ามี):

  • 'คุณไม่เคยทำ SQL ใช่ไหม'

  • 'คุณไม่เคยเขียนการทดสอบหน่วยหรือไม่'

  • 'คุณไม่รู้ว่าจะใช้คำสั่ง Unix ได้อย่างไร'

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


13
สิ่งที่รำคาญที่สุด: ถามอย่างต่อเนื่องเกี่ยวกับสิ่งที่เกิดการระคายเคือง :-)
Jerry Coffin

12
ฉันไม่คิดว่าคุณควรหงุดหงิดเมื่อคนไม่รู้สิ่งที่คุณคาดหวังให้พวกเขารู้ สิ่งสำคัญคือพวกเขายินดีที่จะเรียนรู้ =)
koenmetsu

ใช่เห็นด้วยกับ @KoMet ถ้าคุณมีความตั้งใจที่จะเรียนรู้ที่จะฟังฉันคิดว่ามันเป็นสิ่งสำคัญ :)
MalsR

8
ฉันไม่ชอบคำถามนี้มันมีความคิดที่ผิดสำหรับนักพัฒนา เราเป็นมือใหม่ทุกครั้งและทุกวันเราเป็นมือใหม่ในบางสิ่ง ฉันจะไม่หงุดหงิดกับคนที่ไม่รู้อะไรเลย นี่รู้สึกว่ามีความเย่อหยิ่งมากเกินไป ....
Darknight

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

คำตอบ:


25

ไม่ทราบว่าการควบคุมเวอร์ชันเป็นหรือวิธีการใช้อย่างถูกต้อง

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


4
ประจบประแจง? เธอโชคดีที่เธอยังมีงานทำอยู่
Rein Henrichs

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

1
ฉันฟังดูเหมือนฉันฮ่าฮ่าเราไม่ได้ใช้การควบคุมเวอร์ชันจนกระทั่งเมื่อเร็ว ๆ นี้และฉันได้เข้าร่วม บริษัท ในฐานะผู้สำเร็จการศึกษาใหม่ฉันได้เรียนรู้การควบคุมเวอร์ชันและการโค่นล้มในมหาวิทยาลัย แต่ไม่เคยใช้มาก่อน
Sufendy

1
"นั่นเป็นเครื่องมือสำหรับการสำรองข้อมูลใช่ไหมคุณใช้เพื่อบันทึกรหัสของคุณทุกเย็น?"
เดวิด

2
มันเป็นเรื่องใหญ่ที่พวกเขาแทบจะไม่เคยสอนคุณในโรงเรียน
เอลียาห์ซาอุนคิน

23

ไม่ได้ถามคำถามมากพอ

ฉันรู้ว่าพวกเขาเป็นรุ่นน้องฉันคาดหวังว่าพวกเขาจะทำผิดพลาดและไม่รู้อะไรเลย ราชวงศ์ f ** k จำนวนมากสามารถหลีกเลี่ยงได้โดยเพียงแค่ถามคำถามแทนที่จะคิดอะไรบางอย่าง สุจริตฉันไม่สามารถรบกวนได้มากพอ

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


Gee ... เกือบคำตอบเดียวกับที่ฉันโพสต์คุณไปในประมาณ 5 วินาทีก่อน
quick_now

2
"คุณน่ารำคาญ !! ฉันยุ่งที่นี่คุณคิดเองไม่ได้เหรอ?" ถ้าคุณโชคร้าย !! haha
Sufendy

4
+1 - กรณีย่อยนี้ไม่ได้ถามกลับหลังจากคำอธิบาย มันทำให้ฉันโกรธจริงๆเมื่อฉันอธิบายงานให้กับรุ่นน้องเขาพยักหน้าฉันคิดว่าเขาได้งานแล้วจะได้งานหลังจากนั้นสองสัปดาห์ต่อมาเขาก็กลับมาถามคำถามเดียวกันอีกครั้งพยักหน้าอีกสองครั้ง หลายสัปดาห์ต่อมา ... ยุติธรรมเพียงพอมันไม่ใช่งานที่น่ารำคาญ แต่เพื่อประโยชน์ของพระเจ้าอย่าแกล้งทำเป็นว่าคุณเข้าใจถ้าคุณไม่ทำ และถ้าคุณคิดว่าคุณเข้าใจบางอย่างให้จดบันทึกเพื่อให้คุณจำได้ในอีกสองสัปดาห์ต่อมา
PéterTörök

1
ในทางกลับกันบางคนถามคำถามมากเกินไป (ใน Stack Overflow)
BoltClock

1
@SnOrfus: คนที่ไม่มีเงื่อนไขเหล่านั้นคือคนที่ฉันหมายถึง: P
BoltClock

14

คัดลอกวางและทดลองใช้และข้อผิดพลาดแทนที่จะพยายามทำความเข้าใจพื้นฐานที่สำคัญ

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

การเก็บรหัส "ร่างแรก" ไว้

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

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


1
+1 สำหรับ "คัดลอกและวางแทนที่จะพยายามทำความเข้าใจ" แม้ว่าแน่นอนว่านี่ไม่ใช่ปัญหาเฉพาะของโปรแกรมเมอร์ใหม่ แต่เป็นปัญหาที่ไม่ดี โปรแกรมเมอร์ใหม่อย่างน้อยก็มีโอกาสเติบโตจากมัน - คนที่ฉันทำงานด้วยซึ่งเป็นโปรแกรมเมอร์มานานหลายสิบปีและยังคงทำเช่นนี้ไม่ได้
Tom Anderson

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

14

เชื่อว่าคุณเป็นคนแรกที่ประสบสถานการณ์

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

แก้ไข :

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


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

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

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

@ David Conrad ถูกต้องแล้วเราอยู่ในหน้าเดียวกันที่นี่
Elijah Saounkine

10

คิดว่าพวกเขารู้ทุกอย่าง

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

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


5

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


1
@Graig นั้นถูกต้องหลายสิ่งหลายอย่างที่ทำให้เรารำคาญนักพัฒนาที่มีประสบการณ์เกี่ยวกับรุ่นน้องเป็นสิ่งที่เราต้องเรียนรู้ไม่ใช่ที่มหาวิทยาลัย แต่อยู่ในสภาพแวดล้อมเชิงพาณิชย์
Nickz

5

ไม่ต้องการที่จะเพิ่มพูนความรู้ - ใช้เส้นทางของการต่อต้านน้อยที่สุดแทน

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

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

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

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


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

3

ไม่เข้าใจ OOP น่าเศร้าที่มันเป็นเรื่องธรรมดามากกว่าที่พวกเราส่วนใหญ่อาจตระหนัก

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


หากคุณต้องการหลีกเลี่ยงคำถามนี้ฉันพบคำถามเหล่านี้และคำตอบสำหรับพวกเขาที่ให้ความกระจ่าง:


เช่นเดียวกับในระดับพื้นฐานพวกเขาไม่รู้ว่าคุณหมายถึงอะไรโดยการสร้างวัตถุคลาสและการสืบทอด? หรือสิ่งที่ก้าวหน้ากว่าเช่นการใช้รูปแบบการออกแบบ (คุณต้องยอมรับว่าหนังสือ GoF นั้นค่อนข้างลึกซึ้งแม้ว่าจะมีหนังสือ / คู่มืออื่น ๆ อยู่แน่นอน)
Andrew M

@ Andy ฉันได้ขยายคำตอบเล็กน้อย
นิโคล

1
และฉันเห็นการสนทนา: ไม่ทราบวิธีการเขียนโค้ดขั้นตอนเก่าแบบธรรมดาใน C เพราะมีเพียงการสอน OOP เท่านั้น จากนั้นอีกครั้งอย่าให้ฉันไปเกี่ยวกับคนที่ไม่ได้สอนให้เขียนโปรแกรมแยกวิเคราะห์อีกต่อไปเพราะพวกเขาบอกว่าปัญหาทั้งหมดนั้นสามารถแก้ไขได้ด้วย lex และ yacc
quick_now

1
@quickly_now นั่นเป็นจุดที่ดีแม้ว่าwriting code other ways than OOPและwriting bad OOPเป็นสองสิ่งที่แตกต่างกันโดยสิ้นเชิง ครั้งแรกฉันไม่มีปัญหากับ
นิโคล

มหาวิทยาลัยส่วนใหญ่ไม่สอนการออกแบบเชิงวัตถุ สถานที่ทำงานหลายแห่งทำงานเหมือนไซโลแม้กับนักพัฒนารุ่นเยาว์ ... หรือมีนักพัฒนา "อาวุโส" ที่ไม่รู้จักการเขียนโปรแกรมเชิงวัตถุ มีนักพัฒนา "อาวุโส" ที่ได้ชื่อจากการทำงานปี x และนักพัฒนาอาวุโสที่รู้ว่าสิ่งที่พวกเขา .... มี
Cervo

3

ไม่รู้ว่าคุณไม่รู้อะไรและไม่รู้ว่าคุณรู้ทุกสิ่ง

(และลูกพี่ลูกน้องที่ใกล้ชิดไม่ต้องการถาม)

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


2

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

นี่คือคำถามสัมภาษณ์ที่ฉันใช้ว่าโปรแกรมเมอร์รุ่นเยาว์เกือบทั้งหมดคิดถึงสิ่งสำคัญ:

เขียนรหัสที่คำนวณหมายเลขNth Fibonacci

พวกเขามักจะเขียนให้ชัดเจนที่สุด แต่ไม่มีประสิทธิภาพมากที่สุด

int Fib(int n)
{
    if (n == 0) return 0;
    if (n == 1) return 1;
    return Fib(n-2) + Fib(n-1);
}

เมื่อถูกถามให้แสดงความคิดเห็นเกี่ยวกับความซับซ้อนของอัลกอริทึมฉันมักจะได้รับ "มันแย่กว่า O (N) ... เอ่อ ... O (N logN)" จริงๆแล้วมันแย่กว่านั้นมาก


1
เพื่อตอบคำถามของคุณเกี่ยวกับ compleixty เราควรทราบว่าสูตรคำนวณตัวเลขฟีโบนักชีโดยไม่ต้องเรียกซ้ำซึ่งเขาจะใช้แทนการเรียกซ้ำในตอนแรก
P Shved

1
@Pavel: มีวิธีแก้ปัญหา O (n) และ O (1) ... ในความเป็นจริงLike every sequence defined by linear recurrence, the Fibonacci numbers have a closed-form solution. en.wikipedia.org/wiki/Fibonacci_number#Closed-form_expression
Eric J.

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

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

ในทางปฏิบัติฟังก์ชันดังกล่าวสามารถค้นพบได้โดยใช้ profiler และปรับให้เหมาะสมโดยการเพิ่มแคชการบันทึกความจำ ความไร้ประสิทธิภาพเป็นปัญหาสำหรับค่าขนาดใหญ่ของ N. วิธีที่ดีที่สุดในการสอนรุ่นน้องเกี่ยวกับรหัสดังกล่าวคือการบังคับให้พวกเขาก้าวผ่านการเรียกใช้รหัสทั้งหมดโดยใช้ดีบักเกอร์ สำหรับค่า N ที่มากจริงๆปรากฎว่ามีสูตรคณิตศาสตร์maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/…
Jamie McGuigan

1

ทำการเยื้องรหัสข้างหลัง!

แน่นอนว่ามันไม่ "ปกติ" มากนัก ฉันไม่เคยเชื่อเลยว่ามันจะเป็นไปได้ แต่สิ่งที่นักพัฒนาทั่วไปจะชอบเขียน

try {
    switch(action){
        case case1:
            ...
            break;
        case case2:
            ...
            break;
        default:
            break;
    }
}
catch(Exception e) {
    e.printStackTrace();
}

เธอจะเขียนเหมือน (พระเจ้ามันก็ดูเหมือนเป็นไปไม่ได้สำหรับฉัน!)

            try {
        switch(action){
    case case1:
...
break;
    case case2:
...
break;
    default:
break;
        }
            }

น่าผิดหวังใช่ไหม


ชื่ออะไรใน ...
Mike Speed

1
มันน่าทึ่งมาก !!!
javanna

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