{"id":2426,"date":"2022-01-09T20:24:00","date_gmt":"2022-01-09T20:24:00","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2426"},"modified":"2022-01-09T20:24:00","modified_gmt":"2022-01-09T20:24:00","slug":"dry-do-not-repeat-yourself","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/","title":{"rendered":"DRY &#8211; Do not Repeat Yourself"},"content":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, bu yaz\u0131mda, yaz\u0131l\u0131mc\u0131lar\u0131n vak\u0131f olmas\u0131 gereken bir hususa de\u011finmeye \u00e7al\u0131\u015faca\u011f\u0131m.<\/p>\n<p>Bu husus temelinde \u00e7ok karma\u015f\u0131k olmasa da, uygulamaya gelince bazen g\u00f6zden ka\u00e7\u0131yor olabilir. Bunu zaten uyguluyor da olabilirsiniz ama bundan haberdar olmak her zaman i\u00e7in sizlere faydal\u0131 olacakt\u0131r. Asl\u0131nda bakarsan\u0131z, buna benzer ve olduk\u00e7a \u00f6nemli olan\u00a0 bir\u00a0 tak\u0131m prensiplere (SOLID), \u00f6nceki yaz\u0131lar\u0131mda de\u011finmi\u015ftim. E\u011fer onlar\u0131 okumad\u0131ysan\u0131z, muhakkak bir g\u00f6z at\u0131n l\u00fctfen:<\/p>\n<ol>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/05\/10\/solid-1-tek-sorumluluk-prensibi\/\">SOLID 1 \u2013 Tek Sorumluluk Prensibi<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/08\/06\/solid-2-acik-kapali-prensibi\/\">SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/09\/08\/solid-3-liskovun-yerine-gecme-prensibi\/\"><strong>SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi<\/strong><\/a><\/span><\/li>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/?p=1430&amp;preview=true\"><strong>SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi<\/strong><\/a><\/span><\/li>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/?p=1520\"><strong>SOLID 5 \u2013 Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi<\/strong><\/a><\/span><\/li>\n<\/ol>\n<p>Daha fazla oyalanmadan, ilk prensibimiz ile ba\u015flayal\u0131m: Don&#8217;t Repeat Yourself<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/deviq.com\/static\/3e02e519e129d9c8296f3aff3787a59e\/e17e5\/DontRepeatYourself-400x400.png\" alt=\"Don't Repeat Yourself\" \/><\/p>\n<p id=\"MwMlQNo\"><em><span style=\"color: #000000;\"><strong>DRY (Don&#8217;t Repeat Yourself) nedir?<\/strong><\/span><\/em><\/p>\n<p>K\u0131saca, bu prensibin alt\u0131nda yatan temel husus, olabildi\u011fince kod \u00e7oklamas\u0131ndan\/tekrar\u0131ndan ka\u00e7\u0131nmak ve tekrar kullan\u0131m\u0131 artt\u0131rmakt\u0131r. Velev ki yapmad\u0131k, bunun bize ne zarar\u0131 olabilir peki?<\/p>\n<ul>\n<li>\u00d6ncelikle bak\u0131m maliyetini artt\u0131r\u0131 ve idameyi zorla\u015ft\u0131r\u0131r (ard\u0131n\u0131zdan gelen yaz\u0131l\u0131mc\u0131 dostlar\u0131n\u0131z kulaklar\u0131n\u0131z\u0131 hay\u0131rla \u00e7\u0131nlat\u0131rlar :)),<\/li>\n<li>Kod kalitesini d\u00fc\u015f\u00fcr\u00fcr,<\/li>\n<li>Kod de\u011fi\u015fikliklerinde\/g\u00fcncellemelerinde, hatal\u0131 ve uyumsuz durumlar\u0131n ortaya \u00e7\u0131kmas\u0131na sebebiyet verir,<\/li>\n<li>Yaz\u0131l\u0131m\u0131n uyarlanmas\u0131n\u0131 ve geni\u015flemesini engeller,<\/li>\n<li>G\u00fcncelleme ve yay\u0131nlama s\u00fcrelerini uzat\u0131r.<\/li>\n<\/ul>\n<p>Burada, \u00f6nceki yaz\u0131lar\u0131mda da \u00e7ok de\u011findi\u011fim Robert C. Martin&#8217;in bir s\u00f6z\u00fcn\u00fc sizler ile payla\u015fmadan edemeyece\u011fim:<\/p>\n<blockquote><p>&#8220;Duplication may be the root of all evil in software.&#8221;<\/p><\/blockquote>\n<p>Yani,<\/p>\n<blockquote><p>Kod tekrar\u0131\/\u00e7oklama, yaz\u0131l\u0131mdaki b\u00fct\u00fcn \u015feytanl\u0131klar\u0131n k\u00f6k\u00fcd\u00fcr.<\/p><\/blockquote>\n<p><em><strong><span style=\"color: #000000;\">Peki, neden b\u00f6yle bir durum ortaya \u00e7\u0131k\u0131yor?<\/span><\/strong><\/em><\/p>\n<ul>\n<li>Kopyala yap\u0131\u015ft\u0131r \ud83d\ude42<\/li>\n<li>B\u00fcy\u00fck uygulamalarda, farkl\u0131 yaz\u0131l\u0131mc\u0131lar ya da ayn\u0131 yaz\u0131l\u0131mc\u0131, unutup benzer kabiliyeti kodlarsa,<\/li>\n<li>Farkl\u0131 s\u0131n\u0131f ya da fonksiyonlar zamanla, birbirlerinin yapt\u0131\u011f\u0131 i\u015flevleri i\u00e7erecek \u015fekilde b\u00fcy\u00fcrse,<\/li>\n<li>Yaz\u0131l\u0131m mimarisinde\/tasar\u0131m\u0131nda s\u0131k\u0131nt\u0131lar\u0131 olmas\u0131,<\/li>\n<\/ul>\n<p>bu tarz durumlar ortaya \u00e7\u0131kabilmekte. Kaynak veya niyet ne olursa olsun, sonu\u00e7ta elimizde, tekrarlanan kodlar olmaktad\u0131r.<\/p>\n<p><em><strong>Peki bu durum nas\u0131l ortaya \u00e7\u0131k\u0131yor?<\/strong><\/em><\/p>\n<p>\u00d6rne\u011fin, fonksiyon seviyesinde, e\u011fer bir i\u015flevi yapan ayn\u0131 sat\u0131rlar\u0131 birden fazla yerde kullan\u0131yorsan\u0131z bunu ayr\u0131 bir fonksiyona ta\u015f\u0131y\u0131p, ilgili yerlerde bu fonksiyonu \u00e7a\u011f\u0131rabilirsiniz. Ya da ayn\u0131 i\u015flevi farkl\u0131 tipler i\u00e7in yapt\u0131\u011f\u0131n\u0131z\u0131 fark etti\u011finizde, &#8220;template&#8221; kullan\u0131m\u0131na y\u00f6nelebilirsiniz. Benzer \u015fekilde, benzer unsurlar\u0131 ifade eden s\u0131n\u0131flar, veri yap\u0131lar\u0131 kulland\u0131\u011f\u0131n\u0131z\u0131 fark ettiyseniz bunlar\u0131 ortaklamaya kafa yormal\u0131s\u0131n\u0131z (e\u011fer tasar\u0131m a\u015famas\u0131nda yormad\u0131ysan\u0131z, tasar\u0131m\u0131n\u0131z\u0131 g\u00f6zden ge\u00e7irmelisiniz). Ayr\u0131ca, \u00f6zellikle if\/else tarz\u0131 ko\u015fullar\u0131 i\u00e7eren kodlarda da, tekrar ile kar\u015f\u0131la\u015f\u0131labilmektedir. Bu durumda, if\/else ya da switch yerine, nesne y\u00f6nelimli yaz\u0131l\u0131m pratiklerini kullanabilirsiniz.<\/p>\n<p><em><strong><span style=\"color: #000000;\">Peki bunu nas\u0131l \u00f6nleriz, ne yapabiliriz?<\/span><\/strong><\/em><\/p>\n<p>Bunu farkl\u0131 seviyelerde ele alabiliriz ama her ne olursa olsun, \u00f6ncelikle, s\u00fcrekli olarak geli\u015ftirdi\u011finiz yaz\u0131l\u0131m\u0131 ve kodlar\u0131 g\u00f6zden ge\u00e7iriyor ve g\u00fcncelliyor olmam\u0131z gerekiyor. <strong>Refakt\u00f6r<\/strong> yapmaktan korkmamal\u0131y\u0131z (Martin Fowler&#8217;\u0131n Refactoring kitab\u0131n\u0131 muhakkak okuyun). Sonras\u0131nda ise, s\u0131n\u0131flar\u0131m\u0131z\u0131, fonksiyonlar\u0131m\u0131z\u0131 olabildi\u011fince, mant\u0131ksal olarak k\u00fc\u00e7\u00fck par\u00e7alara ay\u0131rmal\u0131y\u0131z. Buna ayk\u0131r\u0131 bir husus g\u00f6r\u00fcr g\u00f6rmez, hemen gecikmeden bunu d\u00fczeltmeliyiz.<\/p>\n<p>Ba\u015fta sizler ile payla\u015ft\u0131\u011f\u0131m SOLID prensiplerinden SRP, &#8220;Single Responsibility Principle&#8221;&#8216;na uymak da kod tekrar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7menize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p>\u015eu ana kadar hep kaynak kodtan bahsetsek de, asl\u0131nda kod \u00e7oklaman\u0131n alt\u0131nda yatan sebeplerin \u00e7o\u011fu, do\u011fru bir soyutlama yap\u0131lmamas\u0131ndan \u00f6t\u00fcr\u00fc ortaya \u00e7\u0131kmaktad\u0131r. Bu sebeple, tekrar eden unsurular ya da kavramlar do\u011fru bir \u015fekilde soyutlanmal\u0131d\u0131r. Bunun ile birlikte, yaz\u0131l\u0131m\u0131n\u0131z geli\u015ftirmeden \u00f6nce, uygulaman\u0131z\u0131n mimarisine kafa yormak, \u00e7ok karma\u015f\u0131k bir tasar\u0131mdansa, daha basit ve geni\u015fleyebilir bir mimari takip etmek de, kod \u00e7oklamas\u0131 ve benzeri durumlar\u0131n olu\u015fmas\u0131na engel olacakt\u0131r.<\/p>\n<p>DRY prensibi do\u011frultusunda dikkat etmemiz gereken son husus da, olabildi\u011fince tekerle\u011fi tekrar icat etmekten <strong>ka\u00e7\u0131nmam\u0131z<\/strong> (bunun da elbette bir ka\u00e7 istisnas\u0131 olabilir de\u011finece\u011fim).<\/p>\n<p>Art\u0131k, internet \u00fczerinde, eri\u015febilece\u011finiz ve uygulamalar\u0131n\u0131zda kullanabilece\u011finiz bir \u00e7ok k\u00fct\u00fcphane ve koda eri\u015fmeniz m\u00fcmk\u00fcn. Elbette, bunlar\u0131 g\u00f6z\u00fc kapal\u0131 bir \u015fekilde, hi\u00e7 bir \u015feye dikkat etmeden al\u0131p kullanmak \u00e7ok do\u011fru olmasa da, kullanmamak da do\u011fru olmayabilir. \u00d6zellikle, geni\u015f bir kullan\u0131c\u0131 kitlesine sahip ve olgun k\u00fct\u00fcphaneleri kullanmak, hem size zaman kazand\u0131racak hem de uygulaman\u0131zda ortaya \u00e7\u0131kabilecek (kullanmak yerine sizin yazman\u0131z durumunda) hatalar\u0131 azaltacakt\u0131r. A\u015fa\u011f\u0131da, C++ i\u00e7in \u00f6zellikle ba\u015fvurabilece\u011finiz kaynaklar\u0131 s\u0131ralad\u0131m, ayr\u0131ca C++ kaynaklar\u0131n\u0131n bulundu\u011fu sayfama da g\u00f6z atabilirsiniz.<\/p>\n<ul>\n<li>Boost C++ K\u00fct\u00fcphaneleri (<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.boost.org\/\">https:\/\/www.boost.org\/<\/a><\/strong><\/span> )<\/li>\n<li>POCO K\u00fct\u00fcphaneleri, (<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/pocoproject.org\/\">https:\/\/pocoproject.org\/<\/a><\/strong><\/span>)<\/li>\n<li>Google&#8217;s Abseil (<a href=\"https:\/\/abseil.io\/)\"><strong><span style=\"color: #008000;\">https:\/\/abseil.io\/<\/span><\/strong>)<\/a><\/li>\n<li>Folly, Facebook Open-source K\u00fct\u00fcphanesi (<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/github.com\/facebook\/folly\">https:\/\/github.com\/facebook\/folly<\/a><\/strong><\/span>)<\/li>\n<li>Electronic Art Standar Template Library (EASTL) (<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/github.com\/electronicarts\/EASTL\">https:\/\/github.com\/electronicarts\/EASTL<\/a><\/strong><\/span>)<\/li>\n<li>Bloomberg&#8217;s BDE K\u00fct\u00fcphaneleri (<span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/github.com\/bloomberg\/bde\"><strong>https:\/\/github.com\/bloomberg\/bde<\/strong><\/a><\/span>)<\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/kutuphaneler\/\">https:\/\/www.yazilimperver.com\/index.php\/kutuphaneler\/<\/a><\/strong><\/span><\/li>\n<\/ul>\n<p>Peki hangi durumlarda tekrar kullan\u0131m\u0131 tercih etmeyebiliriz? Bir konu ya da kavram\u0131 \u00f6\u011frenmek istiyorsan\u0131z, teknik m\u00fclakatlara haz\u0131rlan\u0131yorsan\u0131z \ud83d\ude42 ya da \u00f6zel bir donan\u0131ma yaz\u0131l\u0131m geli\u015ftiriyorsan\u0131z, bu kural\u0131 biraz esnetebilirsiniz. O durumda, bile yazd\u0131ktan sonra kar\u015f\u0131la\u015ft\u0131rmak anlam\u0131nda bu k\u00fct\u00fcphanelere ba\u015fvurabilirsiniz.<\/p>\n<p>Yaz\u0131m\u0131 kapatmadan, peki ger\u00e7ekten kod \u00e7oklamas\u0131ndan kurtuldum mu? Ya da bu s\u0131k\u0131nt\u0131dan ne kadar m\u00fczdaribimi \u00f6l\u00e7ebilir miyiz? Evet, SonarQube tarz\u0131 statik kod analiz ara\u00e7lar\u0131 sizlere bu konuda yard\u0131mc\u0131 olabilir ama en \u00f6nemli kontrol bence \u015fu olmal\u0131: e\u011fer yaz\u0131l\u0131mda bulunan bir elemana\/bile\u015fene ili\u015fkin de\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda, mant\u0131ksal olarak bu bile\u015fen ile ilgili olmayan k\u0131s\u0131mlarda de\u011fi\u015fiklik gerekmiyorsa ve sadce bir de\u011fi\u015fiklik yeterli oluyorsa, do\u011fru yolda oldu\u011funuza dair iyi bir i\u015faret olarak kabul edebiliriniz.<\/p>\n<p>Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle, kendinize \u00e7ok iyi bak\u0131n sevgili yaz\u0131l\u0131mperver dostlar\u0131m.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, bu yaz\u0131mda, yaz\u0131l\u0131mc\u0131lar\u0131n vak\u0131f olmas\u0131 gereken bir hususa de\u011finmeye \u00e7al\u0131\u015faca\u011f\u0131m. Bu husus temelinde \u00e7ok karma\u015f\u0131k olmasa da, uygulamaya gelince bazen g\u00f6zden ka\u00e7\u0131yor olabilir. Bunu zaten uyguluyor da olabilirsiniz ama bundan haberdar olmak her zaman i\u00e7in sizlere faydal\u0131 olacakt\u0131r. Asl\u0131nda bakarsan\u0131z, buna benzer ve olduk\u00e7a \u00f6nemli olan\u00a0 bir\u00a0 tak\u0131m prensiplere (SOLID), \u00f6nceki&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,188],"tags":[952,950,949,953,951,887,331,440,449],"class_list":["post-2426","post","type-post","status-publish","format-standard","hentry","category-c","category-yazilim-muhendisligi","tag-coklamasi","tag-do-not-repeat-yourself","tag-dry","tag-high-quality-code","tag-kod-tekrari","tag-refactoring","tag-software-engineering","tag-solid","tag-srp"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>DRY - Do not Repeat Yourself - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DRY - Do not Repeat Yourself - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, bu yaz\u0131mda, yaz\u0131l\u0131mc\u0131lar\u0131n vak\u0131f olmas\u0131 gereken bir hususa de\u011finmeye \u00e7al\u0131\u015faca\u011f\u0131m. Bu husus temelinde \u00e7ok karma\u015f\u0131k olmasa da, uygulamaya gelince bazen g\u00f6zden ka\u00e7\u0131yor olabilir. Bunu zaten uyguluyor da olabilirsiniz ama bundan haberdar olmak her zaman i\u00e7in sizlere faydal\u0131 olacakt\u0131r. Asl\u0131nda bakarsan\u0131z, buna benzer ve olduk\u00e7a \u00f6nemli olan\u00a0 bir\u00a0 tak\u0131m prensiplere (SOLID), \u00f6nceki... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-09T20:24:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/deviq.com\/static\/3e02e519e129d9c8296f3aff3787a59e\/e17e5\/DontRepeatYourself-400x400.png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"DRY &#8211; Do not Repeat Yourself\",\"datePublished\":\"2022-01-09T20:24:00+00:00\",\"dateModified\":\"2022-01-09T20:24:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/\"},\"wordCount\":1107,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"\u00e7oklamas\u0131\",\"do not repeat yourself\",\"DRY\",\"high quality code\",\"kod tekrar\u0131\",\"refactoring\",\"software engineering\",\"SOLID\",\"SRP\"],\"articleSection\":[\"C++\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/\",\"name\":\"DRY - Do not Repeat Yourself - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2022-01-09T20:24:00+00:00\",\"dateModified\":\"2022-01-09T20:24:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DRY &#8211; Do not Repeat Yourself\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DRY - Do not Repeat Yourself - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/","og_locale":"tr_TR","og_type":"article","og_title":"DRY - Do not Repeat Yourself - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, bu yaz\u0131mda, yaz\u0131l\u0131mc\u0131lar\u0131n vak\u0131f olmas\u0131 gereken bir hususa de\u011finmeye \u00e7al\u0131\u015faca\u011f\u0131m. Bu husus temelinde \u00e7ok karma\u015f\u0131k olmasa da, uygulamaya gelince bazen g\u00f6zden ka\u00e7\u0131yor olabilir. Bunu zaten uyguluyor da olabilirsiniz ama bundan haberdar olmak her zaman i\u00e7in sizlere faydal\u0131 olacakt\u0131r. Asl\u0131nda bakarsan\u0131z, buna benzer ve olduk\u00e7a \u00f6nemli olan\u00a0 bir\u00a0 tak\u0131m prensiplere (SOLID), \u00f6nceki... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2022-01-09T20:24:00+00:00","og_image":[{"url":"https:\/\/deviq.com\/static\/3e02e519e129d9c8296f3aff3787a59e\/e17e5\/DontRepeatYourself-400x400.png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"DRY &#8211; Do not Repeat Yourself","datePublished":"2022-01-09T20:24:00+00:00","dateModified":"2022-01-09T20:24:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/"},"wordCount":1107,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["\u00e7oklamas\u0131","do not repeat yourself","DRY","high quality code","kod tekrar\u0131","refactoring","software engineering","SOLID","SRP"],"articleSection":["C++","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/","name":"DRY - Do not Repeat Yourself - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2022-01-09T20:24:00+00:00","dateModified":"2022-01-09T20:24:00+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/01\/09\/dry-do-not-repeat-yourself\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"DRY &#8211; Do not Repeat Yourself"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=2426"}],"version-history":[{"count":5,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2426\/revisions"}],"predecessor-version":[{"id":2435,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2426\/revisions\/2435"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=2426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}