<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Yazılım arşivleri - Ad Tescil Alan adı ve Yazılım sistemleri</title>
	<atom:link href="https://adtescil.net/blog/yazilim/feed/" rel="self" type="application/rss+xml" />
	<link>https://adtescil.net/blog/yazilim/</link>
	<description></description>
	<lastBuildDate>Tue, 26 Dec 2023 16:56:39 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">227245323</site>	<item>
		<title>Yazılım Geliştirmenin Temel Taşları: SOLID Prensipleri</title>
		<link>https://adtescil.net/yazilim-gelistirmenin-temel-taslari-solid-prensipleri/</link>
					<comments>https://adtescil.net/yazilim-gelistirmenin-temel-taslari-solid-prensipleri/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Aylas]]></dc:creator>
		<pubDate>Tue, 26 Dec 2023 16:56:35 +0000</pubDate>
				<category><![CDATA[Yazılım]]></category>
		<guid isPermaLink="false">https://adtescil.net/?p=127</guid>

					<description><![CDATA[<p>Yazılım geliştirmede, kodun okunabilirliği, sürdürülebilirliği ve değiştirilebilirliği önemli unsurlardır. Bu noktada, SOLID prensipleri, yazılım geliştirmenin temel taşlarını oluşturan beş prensipten oluşan bir rehberdir. Bu prensipler, yazılım tasarımını daha esnek ve anlaşılır hale getirerek, geliştiricilere yol gösterir. Şimdi, SOLID prensiplerini ayrıntılı bir şekilde inceleyelim. 1. S (Single Responsibility Principle &#8211; Tek<a class="moretag" href="https://adtescil.net/yazilim-gelistirmenin-temel-taslari-solid-prensipleri/"> Devamı&#8230;</a></p>
<p><a href="https://adtescil.net/yazilim-gelistirmenin-temel-taslari-solid-prensipleri/">Yazılım Geliştirmenin Temel Taşları: SOLID Prensipleri</a> yazısı ilk önce <a href="https://adtescil.net">Ad Tescil Alan adı ve Yazılım sistemleri</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Yazılım geliştirmede, kodun okunabilirliği, sürdürülebilirliği ve değiştirilebilirliği önemli unsurlardır. Bu noktada, SOLID prensipleri, yazılım geliştirmenin temel taşlarını oluşturan beş prensipten oluşan bir rehberdir. Bu prensipler, yazılım tasarımını daha esnek ve anlaşılır hale getirerek, geliştiricilere yol gösterir. Şimdi, SOLID prensiplerini ayrıntılı bir şekilde inceleyelim.</p>



<h2 class="wp-block-heading">1. <strong>S (Single Responsibility Principle &#8211; Tek Sorumluluk Prensibi)</strong></h2>



<p>Bu prensip, bir sınıfın veya modülün sadece bir sorumluluğu olması gerektiğini belirtir. Yani, bir sınıfın değişiklik nedeni sadece bir olmalıdır. Bu sayede, kodun daha anlaşılır, bakımı daha kolay ve değişikliklere daha açık olmasını sağlar.</p>



<pre class="wp-block-code"><code>class KargoIslemleri {
  kargoGonder() { /* ... */ }
  kargoIzle() { /* ... */ }
  faturaKes() { /* ... */ }
}
</code></pre>



<p>Bu sınıfın her üç fonksiyonu da farklı sorumlulukları yerine getiriyor. SOLID prensiplerine uygun hale getirmek için bu fonksiyonları ayrı sınıflara bölmek daha doğru olacaktır.</p>



<h2 class="wp-block-heading">2. <strong>O (Open/Closed Principle &#8211; Açık/Kapalı Prensibi)</strong></h2>



<p>Bu prensip, bir sınıfın genişletilmeye açık, değiştirmeye kapalı olması gerektiğini ifade eder. Yeni özellikler eklemek için sınıfı değiştirmek yerine, var olan kodu genişletmek tercih edilmelidir.</p>



<p>Örnek:</p>



<pre class="wp-block-code"><code>class Odeme {
  odemeYap() { /* ... */ }
}

class KrediKartiOdeme extends Odeme {
  taksitYap() { /* ... */ }
}
</code></pre>



<p>Bu şekilde, yeni bir ödeme yöntemi eklemek için <code>Odeme</code> sınıfını değiştirmek zorunda kalmazsınız. Yalnızca yeni bir sınıf oluşturarak genişletebilirsiniz.</p>



<h2 class="wp-block-heading">3. <strong>L (Liskov Substitution Principle &#8211; Liskov Yerine Koyma Prensibi)</strong></h2>



<p>Bu prensip, bir sınıfın alt sınıflarının, üst sınıfın yerine kullanılabilecek şekilde tasarlanması gerektiğini belirtir. Yani, alt sınıflar, üst sınıfların yerine geçebilmelidir ve beklenen davranışı sergilemelidir.</p>



<p>Örnek:</p>



<pre class="wp-block-code"><code>class UcanKus {
  uc() { /* ... */ }
}

class Penguen extends UcanKus {
  // Hatalı örnek, penguen uçamaz!
  uc() { throw new Error("Penguenler uçamaz!"); }
}
</code></pre>



<p>Bu durum, <code>Penguen</code> sınıfının <code>UcanKus</code> sınıfından türetilmesinin yanlış olduğunu gösterir. Çünkü penguenler uçamaz, bu nedenle <code>uc</code> metodunu kullanmak beklenen bir davranış değildir.</p>



<h2 class="wp-block-heading">4. <strong>I (Interface Segregation Principle &#8211; Arayüz Ayrımı Prensibi)</strong></h2>



<p>Bu prensip, bir sınıfın ihtiyaç duymadığı metodları içeren arayüzleri uygulamaması gerektiğini ifade eder. Bir sınıf, yalnızca ihtiyaç duyduğu metodları içeren arayüzleri uygulamalıdır.</p>



<p>Örnek:</p>



<pre class="wp-block-code"><code>// Hatalı örnek, IAracArayuzu'nü implemente etmek gereksiz metodları getirir.
class Araba implements IAracArayuzu {
  hareketEt() { /* ... */ }
  dur() { /* ... */ }
  sirenCal() { /* ... */ } // Araba bu metodu kullanmaz
}
</code></pre>



<p>Bu durumda, <code>IAracArayuzu</code> arayüzünü implemente etmek yerine, sadece Araba&#8217;nın ihtiyaç duyduğu metotları içeren bir arayüz tasarlamak daha doğru olacaktır.</p>



<h2 class="wp-block-heading">5. <strong>D (Dependency Inversion Principle &#8211; Bağımlılıkların İnversiyonu Prensibi)</strong></h2>



<p>Bu prensip, yüksek seviyeli modüllerin, düşük seviyeli modüllere bağlı olmamalıdır. İkisi de soyuta bağlı olmalıdır. Soyutlamalar detaylara bağlı olmamalıdır.</p>



<p>Örnek:</p>



<pre class="wp-block-code"><code>// Hatalı örnek, yüksek seviyeli modül düşük seviyeli modüle bağımlıdır.
class VeritabaniBaglantisi {
  // Detaylar burada...
}

class KullaniciServisi {
  private veritabaniBaglantisi: VeritabaniBaglantisi;

  constructor() {
    this.veritabaniBaglantisi = new VeritabaniBaglantisi();
  }

  // Detaylara bağlıdır...
}
</code></pre>



<p>Bu durumda, <code>KullaniciServisi</code> sınıfı düşük seviyeli <code>VeritabaniBaglantisi</code> sınıfına doğrudan bağlıdır. Bu yerine, bağımlılığı tersine çevirmek için bir arayüz veya soyutlama eklemek daha doğru olacaktır.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Umarım bu yazımız, SOLID prensiplerini anlamanıza ve yazılım geliştirmenizde uygulamanıza yardımcı olur. Bu prensipleri benimsemek, kodunuzun daha temiz, esnek ve sürdürülebilir olmasına katkı sağlayacaktır.</p>
<p><a href="https://adtescil.net/yazilim-gelistirmenin-temel-taslari-solid-prensipleri/">Yazılım Geliştirmenin Temel Taşları: SOLID Prensipleri</a> yazısı ilk önce <a href="https://adtescil.net">Ad Tescil Alan adı ve Yazılım sistemleri</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adtescil.net/yazilim-gelistirmenin-temel-taslari-solid-prensipleri/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">127</post-id>	</item>
	</channel>
</rss>
