|
81 | 81 |
|
82 | 82 | ## OCP - Açık Kapalı Prensibi (Open/closed principle)
|
83 | 83 |
|
84 |
| -Bu prensibe göre programlar geliştirilmeye açık ama değiştirilmeye kapalı olmalıdır. |
| 84 | +Ivar Jacobson söyle demiştir. "Her program görev süresince değişikliğe uğrar. Bu ilk sürümden ötesi düşünülen |
| 85 | +programların yazılımında göz önünde bulundurulmalıdır." Yani mutlaka ama mutlaka yazılımınız ileride gelen yeni |
| 86 | +istekleri karşılabilecek kapasitede olmalıdır. Sektörde müşterilerine yazılımları satıp yeni istekler gelince |
| 87 | +köşe bucak kaçan bir sürü yazılım firması vardır. |
85 | 88 |
|
86 |
| -Programcının görevi müşterisinin ihtiyacını çözmektir ancak müşterinin ihtiyaçları sürekli değişmektedir. Hiç bir |
87 |
| -program zaman için müşterisinin ihtiyacını karşılamaya yetmeyecektir. Çevremizde müşterilerine eski programları |
88 |
| -satıp, yeni talepler gelince köşe bucak kaçan yazılım firmaları vardır. |
| 89 | +Bu prensibe göre programlar geliştirilmeye açık ama değiştirilmeye kapalı olmalıdır. Yani yeni bir istek geldiğinde |
| 90 | +eski yazdığınız kodları değiştirmemeli yeni kodlar yazarak müşterinin yeni isteklerini karşılamalısınız. Kodlar |
| 91 | +değişeme kapalı, geliştirilmeye açık olmalıdır. |
89 | 92 |
|
90 |
| -Yazılımlara yeni talep gelmesi <b>doğal bir süreç</b>tir. Ivar Jacobson söyle demiştir. "Her program görev süresince |
91 |
| -değişikliğe uğrar. Bu ilk sürümden ötesi düşünülen programların yazılımında göz önünde bulundurulmalıdır." Yani iyi bir |
92 |
| -yazılım kolay geliştirilebilen, projenin ilerleyen aşamalarında müşterinin diğer isteklerine destek verebilen bir |
93 |
| -yazılımdır. |
| 93 | +Basit bir örnek verelim. Müşterimiz bize AVEA ve Turkcell'den SMS atan bir program istedi diyelim. |
94 | 94 |
|
95 |
| -Açık kapalı prensibine göre bir yazılıma yeni talepler geldiğinde, programcı yeni kodlar yazarak bunları karşılabilmelidir. |
96 |
| -Eğer istenen yeni talep eski yazılan kodları değiştirmeyi gerekiyorsa eski kodlar açık kapalı prensibine uygun yazılmamış |
97 |
| -demektir. |
| 95 | +```ruby |
| 96 | +class Sms |
| 97 | + send_sms number, msg |
| 98 | + if number is turkcell |
| 99 | + # Turkcell'den SMS gönder |
| 100 | + elsif number is avea |
| 101 | + # Avea'dan SMS gönder |
| 102 | + end |
| 103 | + end |
| 104 | +end |
| 105 | +``` |
| 106 | + |
| 107 | +Yukarıda kod tam bir beladır. İleride müşteriniz Vodofan'dan bir kampanya alırsanız. Yukarıda ki kodu switch'e çevirmeniz |
| 108 | +gerekecektir. Yani eski yazdığınız kodu değiştirmeniz gerekecektir. Bunun yerine aşağıdaki kod daha kalitelidir. |
| 109 | + |
| 110 | +```ruby |
| 111 | +# Kadu yazalım |
| 112 | + |
| 113 | +``` |
98 | 114 |
|
99 | 115 | ## LSP - Liskov substitution principle
|
100 | 116 | ## ISP - Interface segregation principle
|
|
0 commit comments