ฉันคิดว่ามันขึ้นอยู่กับว่าโครงการโดยรวมจะจบลงแค่ไหน
ที่สุดขั้วหนึ่งสมมติว่าคุณมีโครงการ 1 Mloc สำหรับโครงการขนาดใหญ่นั้นไม่น่าเป็นไปได้ที่คน ๆ เดียวจะเป็น "ผู้เชี่ยวชาญ" ในทุก ๆ ด้านที่เกี่ยวข้อง ดังนั้นในกรณีนี้ฉันจะยึดสไตล์โค้ดที่มีอยู่สำหรับแต่ละองค์ประกอบหลัก นักพัฒนาใหม่จะเลือกพื้นที่เรียนรู้และไม่น่าเป็นไปได้ที่พวกเขาจะเห็นส่วนประกอบอื่น ๆ ที่อาจมีรูปแบบโค้ดที่แตกต่างกัน
หากโครงการมีขนาดเล็กลงมากซึ่งเป็นไปได้ว่าบุคคลทั่วไปจะเข้าใจรหัสฐานทั้งหมดแล้วฉันจะเลือกสไตล์โค้ดที่โดดเด่นและยึดติดกับสิ่งนั้น ในกรณีนี้ฉันคิดว่าความสอดคล้องของทั้งโครงการมีความสมเหตุสมผลมากกว่าเนื่องจากผู้พัฒนารายใหม่จะทำงานในทุกส่วนของโครงการ
โครงการขนาดกลางอาจเป็นเรื่องยากที่สุดในการตัดสินใจ ในกรณีนี้คุณต้องคำนึงถึงต้นทุนสำหรับแต่ละวิธีและตัดสินใจเลือกวิธีที่คุณคิดว่าจะมีราคาแพงในระยะยาว ความท้าทายคือโครงการขนาดกลางมักจะโตพอที่จะทำให้การปรับเปลี่ยนรูปแบบที่สมบูรณ์ดูมีราคาแพง คุณอาจต้องการดูโครงสร้างของรหัสต้นไม้อีกเป็นครั้งที่สองเพื่อดูว่าสามารถจัดเรียงสิ่งต่าง ๆ เพื่อจัดกลุ่มสไตล์รหัสเฉพาะกันได้หรือไม่
ไม่ว่าจะด้วยวิธีใดการตัดสินใจขั้นสุดท้ายควรอยู่กับทีมที่คุณกำลังทำอยู่
ค่าผิดปกติบางอย่างที่อาจเปลี่ยนเหตุผลของฉันจากด้านบน:
หากหนึ่งหรือมากกว่าหนึ่งโมดูลมีสไตล์ที่โหดเหี้ยมก็ไม่มีเหตุผลที่จะทำอย่างนั้นแม้ในโครงการที่ใหญ่กว่า ใช่รูปแบบเป็นอัตนัย แต่ถ้าคุณและเพื่อนร่วมโครงการของคุณจริง ๆ ไม่ชอบวิธีการไหลของพื้นที่โดยเฉพาะอย่างยิ่งแล้วนุกแบบเก่าและให้ดีขึ้น
หากสไตล์ทั้งหมดอยู่ใกล้กันอย่างสมเหตุสมผลอาจเป็นการง่ายที่จะประกาศ "นี่คือวิธีการใหม่" และใช้สิ่งนั้นสำหรับรหัสใหม่และการปรับโครงสร้างที่สำคัญทั้งหมด นี่สามารถทำให้การแสดงความคิดเห็นเจ็บปวดเล็กน้อย แต่จากประสบการณ์ของฉันชาวบ้านส่วนใหญ่ค่อนข้างสามารถปรับตัวเข้ากับวิธีนี้ได้ นอกจากนี้ยังให้สัญญาณที่บอกว่ารหัสเก่าอยู่ที่ไหน
บางครั้งลักษณะจะเปลี่ยนไปตามฟังก์ชั่นใหม่ที่เพิ่มเข้าไปในภาษา C ++ ได้เลือกคุณสมบัติหลายอย่างในช่วงหลายปีที่ผ่านมา อาจเหมาะสมที่จะทำการปรับโครงสร้างใหม่ตามที่ต้องการด้วยรูปแบบเก่าไปสู่รูปแบบใหม่ที่ใช้ประโยชน์จากคุณลักษณะเหล่านั้น
ห้องสมุดบางแห่งอาจมีวิธีหรือรูปแบบโดยเฉพาะอย่างยิ่ง ถ้าเป็นเช่นนั้นฉันจะใช้สไตล์นั้นกับห้องสมุดนั้นแม้ว่ามันอาจขัดแย้งกับส่วนที่เหลือของโครงการ ความตั้งใจที่นี่คือการเพิ่มอัตราต่อรองที่คนที่ทำงานในfrobnosticators
โครงการอื่น ๆ จะทำงานในโครงการของคุณ
ความคิดเห็นบางส่วนได้กล่าวถึงรูปแบบที่จำเป็นและมีลักษณะเชิงวัตถุเพื่อเป็นการพิจารณา
โมดูลที่ "หนัก" ในรูปแบบเฉพาะอาจจะอยู่ในลักษณะนั้นถ้าโมดูลมีขนาดกลางหรือใหญ่กว่า ฉันได้ทำงานกับสไตล์ที่สำคัญสามแบบ (คำสั่งวัตถุประสงค์และการใช้งาน) และฉันได้ปรับรูปแบบคำสั่งที่หนักหน่วงเป็นสไตล์ OO ด้วยโค้ดที่มีขนาดกลางหรือใหญ่กว่าการปรับโครงสร้างอาจทำได้ยาก ประสบการณ์ของฉันสับสนเพราะฉันไม่มีเครื่องมือสนับสนุนเพื่อช่วยในการปรับโครงสร้างใหม่
ฉันคิดว่ามีความสัมพันธ์สูงระหว่างโมดูลที่มีสไตล์อย่างมากและโมดูลเหล่านั้นมีความหมายเฉพาะสำหรับการพัฒนาเฉพาะซึ่งกลับไปยังจุดสุดท้ายที่ฉันยกขึ้นด้วยค่าผิดปกติ ดังนั้นโมดูลใด ๆ ที่คุณจะพบกับการทำงานนั้นจะมีลักษณะเช่นนั้นและคุณต้องการให้ผู้เชี่ยวชาญของโดเมนนั้นสามารถทำงานโครงการของคุณได้อย่างง่ายดาย แต่ถ้ามีตัวเลือกและทีมของคุณไม่ชอบสไตล์ของโมดูลนั้นฉันจะตรวจสอบตัวเลือกต่างๆ
ในทำนองเดียวกันฉันได้ทำงานกับโมดูลแบบหนักที่ OO หลักการที่ถูกนำไปไกลเกินไปและใช้อย่างไม่ถูกต้อง ตัวอย่างเช่นอินเทอร์เฟซถูกใช้แทนการสืบทอดหลายรายการ และอย่างที่คุณคาดหวังมันเป็นการใช้งานที่หยาบคาย ฉันสามารถที่จะดำเนินการตามความเหมาะสมในการ refactoring โมดูลนั้น แต่ในที่สุดฉันก็เลิกใช้วิธีนี้เมื่อฉันพบแพ็คเกจที่ดีกว่าที่จะใช้แทน