ฉันใช้เวลาอ่านหนังสือหลายเล่มเกี่ยวกับ "การออกแบบที่ดี" "รูปแบบการออกแบบ" ฯลฯ ฉันเป็นแฟนตัวยงของแนวทางแบบSOLIDและทุกครั้งที่ฉันจำเป็นต้องเขียนโค้ดแบบง่าย ๆ ฉันก็คิดถึง อนาคต. ดังนั้นหากการใช้คุณสมบัติใหม่หรือการแก้ไขข้อบกพร่องจำเป็นต้องเพิ่มรหัสสามบรรทัดดังนี้:
if(xxx) {
doSomething();
}
ไม่ได้หมายความว่าฉันจะทำแบบนี้ หากฉันรู้สึกว่ารหัสชิ้นนี้มีแนวโน้มที่จะใหญ่ขึ้นในอนาคตอันใกล้ฉันจะคิดถึงการเพิ่ม abstractions ย้ายฟังก์ชันนี้ไปที่อื่น เป้าหมายที่ฉันใฝ่หาคือการรักษาความซับซ้อนโดยเฉลี่ยให้เหมือนกับก่อนการเปลี่ยนแปลงของฉัน
ฉันเชื่อว่าจากจุดยืนของรหัสมันค่อนข้างเป็นความคิดที่ดี - รหัสของฉันไม่นานพอและมันค่อนข้างง่ายที่จะเข้าใจความหมายของเอนทิตีต่าง ๆ เช่นคลาสวิธีและความสัมพันธ์ระหว่างคลาสและวัตถุ
ปัญหาคือมันใช้เวลานานเกินไปและฉันมักจะรู้สึกว่ามันจะดีกว่าถ้าฉันใช้คุณลักษณะนั้น "ตามที่เป็นอยู่" มันเป็นเรื่องเกี่ยวกับ "โค้ดสามบรรทัด" เทียบกับ "อินเทอร์เฟซใหม่ + สองคลาสเพื่อใช้อินเทอร์เฟซนั้น"
จากมุมมองของผลิตภัณฑ์ (เมื่อเรากำลังพูดถึงผลลัพธ์ ) สิ่งที่ฉันทำไม่มีความหมายเลยทีเดียว ฉันรู้ว่าถ้าเรากำลังจะทำงานในรุ่นถัดไปการมีรหัสที่ดีนั้นยอดเยี่ยมจริงๆ แต่ในทางกลับกันเวลาที่คุณใช้ในการทำให้โค้ดของคุณ "ดี" อาจถูกใช้ไปกับการใช้คุณสมบัติที่มีประโยชน์สองสามอย่าง
ฉันมักจะรู้สึกไม่พอใจกับผลลัพธ์ของฉันมาก - รหัสที่ดีที่สามารถทำได้ A นั้นแย่กว่ารหัสที่ไม่ดีที่สามารถทำ A, B, C และ D ได้
วิธีนี้มีแนวโน้มที่จะทำให้กำไรสุทธิเป็นบวกสำหรับโครงการซอฟต์แวร์หรือเสียเวลาหรือไม่?