รหัสทางวิทยาศาสตร์เป็นขอบเขตที่แตกต่างกันมากพอที่จะเพิกเฉยต่อมาตรฐานการเข้ารหัสทั่วไปหรือไม่?
ไม่มันไม่ใช่.
รหัสการวิจัยมักจะ "ละทิ้ง" และเขียนโดยคนที่ไม่ใช่นักพัฒนาโดยพื้นฐาน แต่มีความแข็งแกร่งของข้อมูลการศึกษาของพวกเขา บางส่วนของรหัสการวิจัยที่ผมเขียนจะทำให้ฉันปัจจุบันร้องไห้ แต่มันก็ได้ผล!
สิ่งหนึ่งที่ต้องพิจารณาคือผู้รักษาประตูสำหรับโครงการผลักดันสิ่งที่ได้รับมา หากโครงการขนาดใหญ่เริ่มต้นเป็นโครงการรหัสทางวิชาการ / การวิจัยจบลงด้วยการทำงานและตอนนี้ยุ่งเหยิงใครบางคนจะต้องใช้ความคิดริเริ่มเพื่อ refactor มัน
ต้องใช้เวลาอีกมากในการปรับโครงสร้างโค้ดที่มีอยู่ซึ่งไม่ทำให้เกิดปัญหา โดยเฉพาะอย่างยิ่งถ้ามันเป็นโดเมนที่เฉพาะเจาะจงทั้งหมดหรือไม่มีการทดสอบ คุณจะเห็นว่าOpenCV มีคู่มือสไตล์ที่ครอบคลุมมากแม้ว่าจะไม่สมบูรณ์แบบ ใช้สิ่งนี้ย้อนหลังกับรหัสที่มีอยู่ทั้งหมดหรือไม่ นั่นคือ .. ไม่ได้เพื่อคนที่ใจอ่อน
นี่เป็นเรื่องยากยิ่งขึ้นหากรหัสนั้นใช้งานได้ เพราะมันไม่แตก ทำไมต้องแก้ไข
แต่โครงการเหล่านี้ประสบความสำเร็จได้รับการดูแลและใช้อย่างกว้างขวาง!
นี่คือคำตอบในแง่หนึ่ง รหัสการทำงานยังคงมีประโยชน์และดังนั้นจึงมีแนวโน้มที่จะได้รับการบำรุงรักษา
มันอาจจะเป็นระเบียบโดยเฉพาะตอนแรก บางส่วนของโครงการเหล่านี้อาจเริ่มต้นเป็นโครงการแบบปิด 1 ครั้งที่ "ไม่จำเป็นต้องเรียกคืนซ้ำและถูกโยนทิ้งไป"
นอกจากนี้ให้พิจารณาด้วยว่าหากคุณใช้อัลกอริทึมที่ซับซ้อนอาจทำให้มีวิธีการที่ใหญ่กว่าเพราะคุณ (และคนอื่น ๆ ที่คุ้นเคยกับด้านวิทยาศาสตร์) สามารถเข้าใจแนวคิดเกี่ยวกับอัลกอริทึมได้ดีขึ้น วิทยานิพนธ์ของฉันเกี่ยวข้องกับการปรับให้เหมาะสม การมีตรรกะของอัลกอริทึมหลักเป็นวิธีการหนึ่งนั้นง่ายกว่าที่จะเข้าใจได้มากกว่าที่จะพยายามแยกมันออกจากกัน แน่นอนมันละเมิดกฎ "7 บรรทัดต่อวิธี" แต่ก็หมายความว่านักวิจัยคนอื่นสามารถดูรหัสของฉันและเข้าใจการแก้ไขอัลกอริทึมของฉันได้เร็วขึ้น
หากการดำเนินงานนี้ได้รับการแยกออกไปและออกแบบมาอย่างดีโปร่งใสนี้จะได้รับการสูญเสียให้กับโปรแกรมเมอร์ไม่ใช่
สำหรับเพื่อนผู้ตอบคำถาม: คำถามนี้หมายถึงฐานรหัสของไลบรารีโอเพนซอร์ซสำหรับงานที่ต้องใช้การคำนวณในโดเมนทางวิทยาศาสตร์ตั้งแต่หนึ่งโดเมนขึ้นไป คำถามนี้ไม่เกี่ยวกับรหัส throwaway โปรดหยุดสักครู่เพื่อให้แน่ใจว่าคุณเข้าใจทุกแง่มุมที่ไฮไลต์ก่อนที่จะเขียนคำตอบ
ฉันคิดว่าผู้คนมักจะมีความคิดนี้ว่าทุกโครงการโอเพ่นซอร์สเริ่มต้นด้วยการ "เฮ้ฉันมีความคิดที่ยอดเยี่ยมสำหรับห้องสมุดที่จะได้รับความนิยมอย่างมากและถูกใช้โดยคนนับพัน / ล้านคน" จากนั้นทุกโครงการก็เกิดขึ้นเช่นนั้น
ความจริงก็คือหลายโครงการเริ่มต้นและตาย เปอร์เซ็นต์เล็ก ๆ น้อย ๆ อย่างน่าขันของโครงการ "ทำให้" ถึงระดับของ OpenCV หรือ VTK เป็นต้น
OpenCV เริ่มต้นเป็นโครงการวิจัยจาก Intel Wikipedia อธิบายว่ามันเป็นส่วนหนึ่งของ "ชุดโครงการ" รุ่นแรกที่ไม่ใช่รุ่นเบต้าคือปี 2549 หรือเจ็ดปีหลังจากเริ่มใช้งานครั้งแรก ฉันสงสัยว่าเป้าหมายในตอนแรกนั้นเป็นรุ่นเบต้าที่มีความหมายไม่ใช่โค้ดที่สมบูรณ์แบบ
นอกจากนี้ "ความเป็นเจ้าของ" ของ OpenCV ได้เปลี่ยนไปอย่างมาก สิ่งนี้ทำให้การเปลี่ยนแปลงมาตรฐานเว้นแต่ผู้ที่รับผิดชอบทุกคนจะนำมาตรฐานเดียวกันมาใช้และคงไว้ตลอดระยะเวลาของโครงการ
ฉันควรจะชี้ให้เห็นว่า OpenCV เป็นเวลาหลายปีก่อนประกาศ Agile ที่ Clean Code ได้รับแรงบันดาลใจจากการตีพิมพ์ (และ VTK เกือบ 10) VTK เริ่มต้นเมื่อ 17 ปีก่อนการเผยแพร่ Clean Code (OpenCV คือ "เท่านั้น" 9 ปีก่อน)