มีการสนทนามากมายเกี่ยวกับแนวปฏิบัติที่ดีที่สุด1ในการพัฒนาซอฟต์แวร์ ฉันเคยเห็นจุดสำคัญอย่างน้อยสามข้อได้รับการอภิปรายมากมายทั้งใน SE และที่อื่น ๆ :
- สิ่งที่มีคุณสมบัติเป็นการปฏิบัติที่ดีที่สุดและทำไม?
- แนวปฏิบัติที่ดีที่สุดควรค่าแก่การพูดคุยกันตั้งแต่แรกเพราะมีเหตุผลที่จะยืนยันว่าการฝึกฝนนั้นไม่มีแนวปฏิบัติที่ดีที่สุด?
- เมื่อใดที่คุณควรสละแนวทางปฏิบัติที่ดีที่สุด - หรืออาจเป็นแนวทางปฏิบัติที่ดีที่สุด - เพราะมันดูไม่เหมาะสมหรือเนื่องจากข้อ จำกัด ภายนอก (เวลาเงิน ฯลฯ ) ที่ทำให้การแลกเปลี่ยนเป็นไปไม่ได้?
สิ่งที่ดูเหมือนว่าจะเกิดขึ้นน้อยกว่ามาก แต่ไม่เคยมีมาก่อนเป็นแนวคิดที่ใช้กันทั่วไปในการพัฒนาซอฟต์แวร์ ประสบการณ์เมื่อเร็ว ๆ นี้ได้นำความคิดนี้ไปสู่ความคิดของฉันอีกครั้ง
ความประทับใจครั้งแรกของฉันคือมันเป็นการสนทนาที่แตกต่างจากแนวปฏิบัติที่ดีที่สุด แต่อาจมีบางการผสมข้าม
เมื่อฉันคิดถึงสามัญสำนึกฉันคิดถึงกฎที่คุณเลือกขึ้นมาหรือได้รับการสอนที่ให้พื้นฐานกับเหตุผลและการตัดสินใจ การใช้สามัญสำนึกเป็นวิธีที่ดีในการหลีกเลี่ยงการยิงขาทั้งคู่ แต่นอกเหนือจากพื้นฐานที่ค่อนข้างต่ำสามัญสำนึกเปิดทางให้มีความจำเป็นในการตัดสินใจการศึกษาและการตัดสินใจที่มีการศึกษาสามารถแทนที่สามัญสำนึกเมื่อหลักฐานดูเหมือนน่าสนใจเพียงพอ ฉันอาจจะเล่นเล็กน้อยกับคำจำกัดความที่นี่ แต่ฉันคิดว่ามันใกล้พอที่จะเป็นหัวหอกในตัวอย่างของฉัน
เมื่อฉันนึกถึงสามัญสำนึกในการพัฒนาซอฟต์แวร์ฉันคิดถึงกฎพื้นฐานของสุขอนามัยขั้นพื้นฐานทั้งหมดเพื่อป้องกันไม่ให้ codebase เน่าเปื่อยอย่างรวดเร็วจนกลายเป็นระเบียบที่เข้าใจไม่ได้ ตัวอย่างเช่นสิ่งต่าง ๆ : ไม่ได้ใช้โครงสร้างส่วนกลางเดียวเพื่อบำรุงรักษาและสื่อสารสถานะภายในโปรแกรมที่ไม่สำคัญ ไม่ใช้ตัวแปร / เมธอด / คลาสที่เป็นเพียงการพูดพล่อยๆแบบสุ่ม; สิ่งที่อาจมีลักษณะคล้ายกับสิ่งที่เราได้เรียกต่อต้านรูปแบบที่ค่อนข้างใกล้ชิด ในกรณีที่ใช้แนวปฏิบัติที่ดีที่สุดแบบอะนาล็อกที่ใช้กับรูปแบบการเรียนรู้การใช้สามัญสำนึกอาจถูกมองว่าเป็นอะนาล็อกในทางปฏิบัติของการเรียนรู้รูปแบบการต่อต้าน
ด้วยความคิดนี้ฉันต้องการตั้งคำถามสองสามข้อที่เห็นคำตอบของคนอื่นเพราะอาจช่วยฉันหาเหตุผลผ่านสิ่งนี้
คนอื่นเชื่อหรือไม่ว่ามีความคิดสามัญสำนึกในการพัฒนาซอฟต์แวร์? จะมีความสนใจในการรู้เหตุผลด้วยวิธีใด
ถ้าเป็นเช่นนั้นเป็นความคิดที่คุ้มค่าพูดคุยหรือไม่ มันเป็นสิ่งที่เราควรผลักดันให้มากที่สุดเท่าที่บางครั้งเราทำกับแนวทางปฏิบัติที่ดีที่สุด? มันเป็นสิ่งที่คุ้มค่าที่จะผลักดันให้หนักขึ้นหรือไม่?
หากการเปรียบเทียบกับรูปแบบการต่อต้านดูเหมือนสมเหตุสมผลกฎทั่วไปก็คือการใช้รูปแบบการต่อต้านนั้นก็ต่อเมื่อไม่มีวิธีอื่นและแม้แต่ในสถานการณ์ที่ จำกัด เท่านั้น ควรมีความยืดหยุ่นแค่ไหนในการยอมให้ codebase เบี่ยงเบนจากสามัญสำนึก? ดูเหมือนว่าไม่มีเหตุผลว่าคำตอบคือ "ไม่เลย" เพราะบางครั้งความได้เปรียบก็ต้องการการเบี่ยงเบน แต่ดูเหมือนว่าจะเป็นข้อโต้แย้งที่แตกต่างไปกว่าเมื่อต้องใช้ "แนวปฏิบัติที่ดีที่สุด" อาจจะไม่ใช่ ถ้าคุณไม่คิดอย่างนั้นฉันอยากจะรู้ว่าทำไม
นี่เป็นเรื่องที่เปิดกว้างมากขึ้นและอาจคุ้มค่ากับคำถามที่ตามมาทั้งหมดของตัวเองคุณจะชี้ให้เห็นข้อแนะนำประเภทใดที่ดูเหมือนเป็นเรื่องของสามัญสำนึก
ความคิดอื่น ๆ ก็ยินดีต้อนรับ
1บางทีฉันอาจจะทำได้ดีกว่าที่จะเรียกพวกเขาว่า "รูปแบบโดเมนที่เกิดขึ้นเป็นประจำ" แต่ชื่อ "แนวทางปฏิบัติที่ดีที่สุด" นั้นเป็นเรื่องปกติที่ทุกคนรู้ว่าพวกเขาคืออะไรถึงแม้ว่าพวกเขาจะไม่เห็นด้วยก็ตาม หากส่วนที่ "ดีที่สุด" รบกวนคุณคุณลองจินตนาการว่าฉันได้แทนที่ "แนวปฏิบัติที่ดีที่สุด" ด้วยเสียงที่น่าเชื่อถือน้อยกว่า