Skip to content

Commit 8d7ae80

Browse files
author
Onur Özgür ÖZKAN
committed
Update tr/01-architecture.md
1 parent 208faea commit 8d7ae80

File tree

1 file changed

+27
-11
lines changed

1 file changed

+27
-11
lines changed

tr/01-architecture.md

+27-11
Original file line numberDiff line numberDiff line change
@@ -81,20 +81,36 @@ end
8181

8282
## OCP - Açık Kapalı Prensibi (Open/closed principle)
8383

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.
8588

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.
8992

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.
9494

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+
```
98114

99115
## LSP - Liskov substitution principle
100116
## ISP - Interface segregation principle

0 commit comments

Comments
 (0)