วิธีที่ดีที่สุดสำหรับโปรแกรมเมอร์ในการจัดการกับการตรวจสอบรหัสคืออะไร?


16

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

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

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



1
มีการอภิปรายไม่รีวิวของมันถ้ามันเป็นเพียงหนึ่งในการจราจรทาง
NimChimpsky

@gnat: คำถามนั้นไม่ซ้ำกันอย่างชัดเจน ดูที่โหวตสูงสุดตอบรับคำถามนั้น ถ้ามันได้รับเป็นคำตอบที่นี่ก็จะได้รับการ downvoted เพราะมันไม่ได้คำตอบนี้คำถาม
Michael Shaw


@gnat: คำถามอื่น ๆ เกี่ยวกับวิธีที่จะทำให้รหัสของคนอื่นถูกปฏิเสธในการตรวจสอบและหนึ่งนี้เกี่ยวกับวิธีจัดการกับการวิจารณ์ของรหัสของตัวเองในการตรวจสอบ ความคล้ายคลึงกันอย่างเดียวที่ฉันเห็นคือทั้งสองเกี่ยวข้องกับการตรวจสอบโค้ด
Michael Shaw

คำตอบ:


19

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

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

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

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

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

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


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

+1 "ความเห็นเป็นวิธีที่จะทำให้สมาชิกในทีมสื่อสารกับพวกเขาเกี่ยวกับการเปลี่ยนแปลงโค้ด"
Kwebble

20

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

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

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

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


4

คำตอบอื่น ๆ มีข้อมูลที่ดีอยู่แล้ว ฉันต้องการขยายมุมมองบางอย่างที่ gbjbaanb พูดถึง (ดูความคิดเห็นของฉันต่อคำตอบของเขา)

จากประสบการณ์ของฉันฉันสังเกตเห็นความคิดเห็นต่าง ๆ ระหว่างการตรวจสอบโค้ด:

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

ตัวเลือก 3, 4 อาจปลอมแปลงเป็น 1 และ 2: "มันสำคัญมากที่จะทำตามที่ฉันแนะนำ" หรือ "คุณสามารถปฏิเสธการเปลี่ยนแปลงได้หากคุณต้องการ" พูดด้วยน้ำเสียงที่จริงแล้วหมายถึงสิ่งที่ตรงกันข้ามกับสิ่งที่พูด ในกรณีที่คุณไม่เห็นด้วยกับการเปลี่ยนแปลงที่คุณเห็นว่าไม่จำเป็นการใช้รหัสร่วมกันสามารถใช้เหตุผลนี้ได้: "รหัสไม่ได้เป็นของคุณมันเป็นของทีม!" คุณสามารถบอกได้ว่าเจตนาของผู้ตรวจสอบนั้นไม่ตรงไปตรงมาหากผู้ตรวจสอบไม่ได้เปิดให้มีการอภิปรายเกิดความหงุดหงิดและพยายามผลักดันโซลูชันของพวกเขาในทุกกรณี โดยพื้นฐานแล้วพวกเขาได้ตัดสินใจแล้วและการสนทนาเพิ่มเติมใด ๆ ก็เป็นเรื่องเสียเวลา

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

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

หากสถานการณ์ 3 และ 4 เกิดขึ้นบ่อยเกินไปการทำงานเป็นทีมอาจไม่เป็นที่พอใจ ในสถานการณ์เช่นนี้ฉันจะพิจารณาออกจากทีม


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

@scragar: จริง: หนึ่งพยายามที่จะยึดติดกับข้อเท็จจริง อย่างไรก็ตามบางครั้งก็น่าเบื่อ ตัวอย่าง (ในบริบทของการคอมมิชชันที่ค่อนข้างครอบคลุม): คุณต้องเปรียบเทียบ std :: string กับ QString โซลูชันของคุณ: แปลง std :: string เป็น QString และใช้วิธี QString เพื่อเปรียบเทียบ การเปลี่ยนแปลงของผู้ตรวจสอบ: แปลง QString เป็น std :: string และใช้ std :: string method เพื่อเปรียบเทียบ คุณสามารถคิดเกี่ยวกับรูปแบบที่ไม่ จำกัด เกี่ยวกับวิธีการเปลี่ยนรหัสเป็นรหัสเทียบเท่าเพื่อแสดงว่าคุณได้อยู่ที่นั่นแล้ว มันสำคัญมากที่จะต้องแยกแยะระหว่างความคิดเห็นเชิงสร้างสรรค์และการสร้าง nitpicking
Giorgio

3

เพื่อแก้ไขปัญหาที่คุณต้องทำเมื่อคุณไม่เห็นด้วย ...

การพูดถึงมันเป็นวิธีที่เราจะไปได้เพราะคนส่วนใหญ่ได้ชี้ให้เห็นแล้ว

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

เราสามารถใส่ตั๋วแยกต่างหากสำหรับสิ่งนั้นได้หรือไม่?

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


1

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


1

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

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

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

หากผู้ตรวจทานทำการเปลี่ยนแปลงพวกเขาอาจมีปัญหาในการมอบหมายงานให้ผู้อื่นซึ่งเป็นเรื่องยากสำหรับคนฉลาดที่ต้องทำ

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

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

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


0

ดูเหมือนว่าคุณยังไม่ได้ตรวจสอบรหัสของคุณ :-)

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

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

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

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

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

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

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