[{"data":1,"prerenderedAt":576},["ShallowReactive",2],{"post-\u002Ftr\u002Fprogralama-ipucu-yoda-gosterimi":3},{"page":4,"translation":403,"nav":421,"related":550,"random":563},{"id":5,"title":6,"body":7,"categories":401,"category":403,"date":404,"description":405,"draft":406,"extension":407,"image":408,"kind":403,"lang":81,"meta":409,"navigation":410,"path":411,"readingTime":187,"seo":412,"slug":413,"stem":414,"tags":415,"translationKey":413,"type":402,"updated":419,"__hash__":420},"postsTr\u002Ftr\u002Fprogralama-ipucu-yoda-gosterimi.md","Yoda Koşulları (Yoda Conditions) Nedir? Programlama İpucu",{"type":8,"value":9,"toc":395},"minimark",[10,56,63,66,69,74,152,154,159,162,197,200,223,230,232,236,246,249,272,289,292,315,320,322,326,329,351,354,357,362,391],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Özet (TL;DR):",[22,23,24,36,46],"ul",{},[25,26,27,30,31,35],"li",{},[18,28,29],{},"Yoda Koşulu Nedir?:"," Koşullu ifadelerde (if bloklarında) sabit değeri (constant) değişkenin soluna yazma yöntemidir (örn: ",[32,33,34],"code",{},"if (101 == $value)",").",[25,37,38,41,42,45],{},[18,39,40],{},"Amacı:"," Tek eşittir (",[32,43,44],{},"=",") ile yapılan yanlış atama hatalarını (bug'ları) derleme aşamasında yakalamak.",[25,47,48,51,52,55],{},[18,49,50],{},"Modern Yaklaşım:"," Modern dillerde (Python, Rust) ve linter araçlarında (ESLint ",[32,53,54],{},"no-cond-assign"," kuralı vb.) bu hata otomatik engellendiğinden Yoda koşulları günümüzde eskisi kadar kritik bir zorunluluk değildir, ancak alışkanlık olarak hala faydalıdır.",[14,57,58,59,62],{},"Bugün sizlerle neredeyse tüm programlama dillerinde işinize yarayacak klasik bir ipucu paylaşmak istiyorum. ",[18,60,61],{},"Yoda gösterimi (Yoda conditions)",", koşullu bir ifadede alışıldık sıralamanın tam tersinin kullanılmasını ifade eden bir programlama jargonudur. Yoda koşullarında sabit olan değeri koşullu ifadede sol tarafa, değişkeni ise sağ tarafa alıyoruz.",[14,64,65],{},"Yoda gösterimi, adını İngilizceyi kendine has devrik bir sırayla konuşan Star Wars'un ünlü Yoda karakterinden alır.",[67,68],"hr",{},[70,71,73],"h3",{"id":72},"standart-gösterim-vs-yoda-gösterimi","Standart Gösterim vs. Yoda Gösterimi",[75,76,77,101],"table",{},[78,79,80],"thead",{},[81,82,83,88,95],"tr",{},[84,85,87],"th",{"align":86},"left","Özellik",[84,89,90,91,94],{"align":86},"Standart Gösterim (",[32,92,93],{},"$variable == constant",")",[84,96,97,98,94],{"align":86},"Yoda Gösterimi (",[32,99,100],{},"constant == $variable",[102,103,104,118,139],"tbody",{},[81,105,106,112,115],{},[107,108,109],"td",{"align":86},[18,110,111],{},"Okunabilirlik",[107,113,114],{"align":86},"Doğal konuşma diline yakın (\"değer 101 ise\")",[107,116,117],{"align":86},"Tersine sıralama (\"101 değer ise\")",[81,119,120,125,132],{},[107,121,122],{"align":86},[18,123,124],{},"Atama Hatası Riski",[107,126,127,128,131],{"align":86},"Yüksektir (örn: ",[32,129,130],{},"if ($x = 5)"," sessizce çalışır)",[107,133,134,135,138],{"align":86},"Yoktur (örn: ",[32,136,137],{},"if (5 = $x)"," derleme hatası verir)",[81,140,141,146,149],{},[107,142,143],{"align":86},[18,144,145],{},"Linter Desteği",[107,147,148],{"align":86},"Hata tespiti için ek linter kuralları gerekir",[107,150,151],{"align":86},"Derleyici seviyesinde doğal güvenlik sağlar",[67,153],{},[155,156,158],"h2",{"id":157},"yoda-gösterimi-örneği","Yoda Gösterimi Örneği",[14,160,161],{},"Koşullu bir ifade genel klasik yöntemle şu şekilde oluşturulur:",[163,164,169],"pre",{"className":165,"code":166,"language":167,"meta":168,"style":168},"language-php shiki shiki-themes github-light github-dark","if ($value == 101) \n{ \n  \u002F\u002F Değer 101'e eşitse şunları yap\n}\n","php","",[32,170,171,179,185,191],{"__ignoreMap":168},[172,173,176],"span",{"class":174,"line":175},"line",1,[172,177,178],{},"if ($value == 101) \n",[172,180,182],{"class":174,"line":181},2,[172,183,184],{},"{ \n",[172,186,188],{"class":174,"line":187},3,[172,189,190],{},"  \u002F\u002F Değer 101'e eşitse şunları yap\n",[172,192,194],{"class":174,"line":193},4,[172,195,196],{},"}\n",[14,198,199],{},"Yoda gösteriminde ise aynı ifadeyi şu şekilde oluşturuyoruz:",[163,201,203],{"className":165,"code":202,"language":167,"meta":168,"style":168},"if (101 == $value) \n{ \n  \u002F\u002F 101 değere eşitse şunları yap\n}\n",[32,204,205,210,214,219],{"__ignoreMap":168},[172,206,207],{"class":174,"line":175},[172,208,209],{},"if (101 == $value) \n",[172,211,212],{"class":174,"line":181},[172,213,184],{},[172,215,216],{"class":174,"line":187},[172,217,218],{},"  \u002F\u002F 101 değere eşitse şunları yap\n",[172,220,221],{"class":174,"line":193},[172,222,196],{},[14,224,225,226,229],{},"Gördüğünüz üzere sabit (",[32,227,228],{},"101",") olan bölümü koşullu ifadenin sol tarafına aldık.",[67,231],{},[155,233,235],{"id":234},"bu-gösterim-bizi-hangi-hatadan-kurtarır","Bu Gösterim Bizi Hangi Hatadan Kurtarır?",[14,237,238,239,242,243,245],{},"Sabiti ifadenin sol tarafına almak programın çalışma mantığını değiştirmez. Öte yandan programlamada iki eşit işareti (",[32,240,241],{},"==",") karşılaştırma için kullanılırken tek eşittir işareti (",[32,244,44],{},") atama yapmak için kullanılır.",[14,247,248],{},"Klasik gösterimde yanlışlıkla iki yerine tek eşittir yazdığınızda:",[163,250,252],{"className":165,"code":251,"language":167,"meta":168,"style":168},"if ($value = 101) \n{ \n  \u002F\u002F Bu blok her halükarda çalışacaktır!\n}\n",[32,253,254,259,263,268],{"__ignoreMap":168},[172,255,256],{"class":174,"line":175},[172,257,258],{},"if ($value = 101) \n",[172,260,261],{"class":174,"line":181},[172,262,184],{},[172,264,265],{"class":174,"line":187},[172,266,267],{},"  \u002F\u002F Bu blok her halükarda çalışacaktır!\n",[172,269,270],{"class":174,"line":193},[172,271,196],{},[14,273,274,275,278,279,281,282,285,286,288],{},"Burada karşılaştırma yapmak yerine ",[32,276,277],{},"$value"," değişkenine ",[32,280,228],{}," değerini atamış olursunuz. Atama işlemi başarıyla gerçekleştiği için koşullu ifade ",[32,283,284],{},"true"," dönecek, ",[32,287,277],{}," değişkeninizin değeri sessizce değişecek ve bu durum tespiti çok zor olan kritik mantıksal hatalara (bug) neden olacaktır.",[14,290,291],{},"Aynı ifadeyi Yoda gösterimi ile oluşturup aynı hatayı yaptığımızda ise:",[163,293,295],{"className":165,"code":294,"language":167,"meta":168,"style":168},"if (101 = $value) \n{ \n  \u002F\u002F Derleyici veya yorumlayıcı hata verecektir!\n}\n",[32,296,297,302,306,311],{"__ignoreMap":168},[172,298,299],{"class":174,"line":175},[172,300,301],{},"if (101 = $value) \n",[172,303,304],{"class":174,"line":181},[172,305,184],{},[172,307,308],{"class":174,"line":187},[172,309,310],{},"  \u002F\u002F Derleyici veya yorumlayıcı hata verecektir!\n",[172,312,313],{"class":174,"line":193},[172,314,196],{},[14,316,317,319],{},[32,318,228],{}," sabit bir değer olduğu için ona yeni bir değer ataması yapılamaz. Derleyici (veya yorumlayıcı) anında hata vererek programı durduracak ve gözden kaçabilecek bir hatanın koda karışmasını henüz yazım aşamasında engelleyecektir.",[67,321],{},[155,323,325],{"id":324},"modern-programlamada-yoda-koşulları-gerekli-mi","Modern Programlamada Yoda Koşulları Gerekli mi?",[14,327,328],{},"Günümüz modern yazılım ekosisteminde Yoda koşullarına olan ihtiyaç geçmişe kıyasla oldukça azalmıştır:",[330,331,332,342],"ol",{},[25,333,334,337,338,341],{},[18,335,336],{},"Dil Seviyesinde Engelleme:"," Python (",[32,339,340],{},"if x = 5:"," syntax hatası verir) veya Rust gibi diller, koşullu ifadeler içerisinde atama yapılmasına doğrudan izin vermez.",[25,343,344,347,348,350],{},[18,345,346],{},"Statik Analiz ve Linter Araçları:"," JavaScript\u002FTypeScript projelerindeki ESLint (",[32,349,54],{}," kuralı), PHP projelerindeki PHPStan veya Psalm gibi araçlar bu tür hataları kod henüz commit edilmeden önce otomatik olarak yakalar.",[14,352,353],{},"Yine de, herhangi bir linter veya statik analiz aracı kullanmadığınız hızlı betiklerde veya eski kod tabanlarında çalışırken Yoda gösterimi alışkanlığı hayat kurtarmaya devam etmektedir.",[14,355,356],{},"Tavsiyem, kullanım alışkanlığını çok kısa sürede kazanacağınız ve farkında bile olmadan büyük avantajlar sağlayacak bu gösterim yöntemini kod yazarken aklınızın bir köşesinde bulundurmanızdır.",[358,359,361],"h5",{"id":360},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[22,363,364,388],{},[25,365,366,367,370,371,374,375,370,378,374,381,370,384,387],{},"21.06.2026: Yoda gösteriminin modern dillerdeki (Python, Rust) ve linter araçlarındaki (ESLint vb.) güncel durumu eklenerek teknik derinlik artırıldı. Türkçe yazım ve klavye hataları (",[32,368,369],{},"oluşturuyouruz"," -> ",[32,372,373],{},"oluşturuyoruz",", ",[32,376,377],{},"şunları şunları",[32,379,380],{},"şunları yap",[32,382,383],{},"dönürecek",[32,385,386],{},"döndürecek",") giderildi. Standart vs. Yoda karşılaştırma tablosu ile özet paneli eklendi.",[25,389,390],{},"11.05.2022: Yazı özeti düzenlendi.",[392,393,394],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":168,"searchDepth":181,"depth":181,"links":396},[397,398,399,400],{"id":72,"depth":187,"text":73},{"id":157,"depth":181,"text":158},{"id":234,"depth":181,"text":235},{"id":324,"depth":181,"text":325},[402],"technical",null,"2021-07-23","Yoda gösterimi (Yoda conditions) nedir, ne işe yarar? Koşullu ifadelerde atama hatalarını (bug'ları) önleme yöntemi ve modern linter'lardaki durumu.",false,"md","\u002Fimages\u002Fhero\u002Fyoda-notation.avif",{},true,"\u002Ftr\u002Fprogralama-ipucu-yoda-gosterimi",{"title":6,"description":405},"progralama-ipucu-yoda-gosterimi","tr\u002Fprogralama-ipucu-yoda-gosterimi",[416,417,167,418],"ipucu","javascript","programlama","2026-06-21","EPx3oYyhZ73oYwRV6LBXcWXR1YFdS12PtVsS-epxUHY",{"prev":422,"next":425,"others":428,"lucky":547,"readingTime":187},{"path":423,"title":424},"\u002Ftr\u002Fvue-3-hakkinda-bilmeniz-gerekenler-yenilikler","Vue 3 Hakkında Bilmeniz Gerekenler ve Yenilikler",{"path":426,"title":427},"\u002Ftr\u002Ftailwind-css-just-in-time-modu","Tailwind CSS Just-in-Time (JIT) Modu Nedir?",[429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,510,513,516,519,520,523,526,529,532,535,538,541,544],{"path":430,"title":431},"\u002Ftr\u002Fdigital-oceanda-vps-kurulumu","DigitalOcean'da VPS (Droplet) Kurulumu: Adım Adım Rehber",{"path":433,"title":434},"\u002Ftr\u002Fphalcon-frameworkun-gelecegi","Phalcon Framework'ün Geleceği: Bir Devrin Sonu",{"path":436,"title":437},"\u002Ftr\u002Fwsl-2-kurulumu-6-kolay-adim","WSL 2 Kurulumu - 6 kolay adım",{"path":439,"title":440},"\u002Ftr\u002Fdocker-swarm-nedir","Docker Swarm Nedir?",{"path":442,"title":443},"\u002Ftr\u002Fadapter-tasarim-deseni-nedir","Adapter Tasarım Deseni Nedir?",{"path":445,"title":446},"\u002Ftr\u002Frest-api-hata-yonetimi","REST Api Hata Yönetimi",{"path":448,"title":449},"\u002Ftr\u002Fheadless-wordpress-hakkinda-her-sey","Headless WordPress Hakkında Her Şey",{"path":451,"title":452},"\u002Ftr\u002Fnext-js-on-bellegi-nasil-yenilenir-on-demand-cache-regeneration","Next.js Önbelleği Nasıl Yenilenir? \"On-Demand Cache Regeneration\"",{"path":454,"title":455},"\u002Ftr\u002Fproxy-tasarim-deseni-nedir","Proxy Tasarım Deseni Nedir?",{"path":457,"title":458},"\u002Ftr\u002Frest-api-uri-yapisi-nasil-olmali","REST API URI Yapısı Nasıl Olmalı?",{"path":460,"title":461},"\u002Ftr\u002Fes9-nedir-ecmascript-2018-nedir","ES9 Nedir? ECMAScript 2018 Nedir?",{"path":463,"title":464},"\u002Ftr\u002Fubuntu-20-04-uzerinde-cyberpanel-kurulumu","Ubuntu 20.04 üzerinde CyberPanel kurulumu",{"path":466,"title":467},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-factory-method-nedir","Factory Method Tasarım Deseni Nedir?",{"path":469,"title":470},"\u002Ftr\u002Frestful-api-bilesenleri","RESTful API Bileşenleri",{"path":472,"title":473},"\u002Ftr\u002Frest-api-kimlik-dogrulama-nasil-yapilir","REST API Kimlik Doğrulama Nasıl Yapılır?",{"path":475,"title":476},"\u002Ftr\u002Fmerhaba-gluster","Merhaba Gluster: Dağıtık Dosya Sistemi Nedir?",{"path":478,"title":479},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama",{"path":481,"title":482},"\u002Ftr\u002Fes16-nedir-ecmascript-2025-nedir","ES16 nedir? ECMAScript 2025 nedir?",{"path":484,"title":485},"\u002Ftr\u002Fvite-nedir","Vite Nedir? Modern Web Geliştirme ve Paketleme Aracı",{"path":487,"title":488},"\u002Ftr\u002Fes14-nedir-ecmascript-2023-nedir","ES14 nedir? ECMAScript 2023 nedir?",{"path":490,"title":491},"\u002Ftr\u002Fgo-slice-veri-tipi","Go Veri Tipleri: Slice",{"path":493,"title":494},"\u002Ftr\u002Fes5-nedir","ES5 Nedir? JavaScript Geliştiricileri İçin Kılavuz",{"path":496,"title":497},"\u002Ftr\u002Fchain-of-responsibility-deseni-nedir","Chain of Responsibility Deseni Nedir?",{"path":499,"title":500},"\u002Ftr\u002Fdocker-ile-litespeed-enterprise-kurulumu","Docker ile LiteSpeed Enterprise Kurulumu",{"path":502,"title":503},"\u002Ftr\u002Fgo-ile-websockets-websocket-upgrader-nedir","Go ile WebSockets: Upgrader Nedir?",{"path":505,"title":506},"\u002Ftr\u002Fphp-ve-makine-ogrenimi-php-ml-kutuphanesi","PHP ve Makine Öğrenimi: PHP-ML Kütüphanesi ile Pratik Çözümler",{"path":508,"title":509},"\u002Ftr\u002Fes15-nedir-ecmascript-2024-nedir","ES15 nedir? ECMAScript 2024 nedir?",{"path":511,"title":512},"\u002Ftr\u002Fself-hosted-api-gateway-nasil-kurulur-kapsamli-rehber","Self-Hosted API Gateway Nasıl Kurulur? Kapsamlı Rehber",{"path":514,"title":515},"\u002Ftr\u002Fvisitor-tasarim-deseni-nedir","Visitor Tasarım Deseni Nedir?",{"path":517,"title":518},"\u002Ftr\u002Fgo-veri-tipleri-map","Go Veri Tipleri - Map",{"path":426,"title":427},{"path":521,"title":522},"\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi","PHP'de Temiz, Modüler ve Yeniden Kullanılabilir Kod Yazma Rehberi",{"path":524,"title":525},"\u002Ftr\u002Fdocker-ile-mariadb-kurulumu","Docker ile MariaDB Kurulumu",{"path":527,"title":528},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",{"path":530,"title":531},"\u002Ftr\u002Fphp-8-0-yenilikler","Merhaba PHP 8: Modern PHP 8.x Çağı",{"path":533,"title":534},"\u002Ftr\u002Fgarbage-collection-ve-golang","Garbage Collection ve Go (Golang)",{"path":536,"title":537},"\u002Ftr\u002Fdocker-ile-mongodb-kurulumu","Docker ile MongoDB Kurulumu",{"path":539,"title":540},"\u002Ftr\u002Fnostalji-ibibik-online","Nostalji: İbibik Online (1998'den Bir Web Macerası)",{"path":542,"title":543},"\u002Ftr\u002Ffull-stack-proje-agaci","Full-Stack Proje Yol Haritası ve İçindekiler",{"path":545,"title":546},"\u002Ftr\u002Ffactory-method-ve-abstract-factory-farki-nedir","Factory Method ve Abstract Factory Farkı Nedir?",{"path":548,"title":549},"\u002Ftr\u002Froot-yetkisi-olmayan-kullanici-ssh-baglantisini-ssh-baglantisini-ssh-anahtari-ile-nasil-kurabilir","Root yetkisi olmayan kullanıcı, SSH bağlantısını, SSH anahtarı ile nasıl kurabilir?",[551,555,559,562],{"path":552,"title":553,"date":554},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?","2021-09-11",{"path":556,"title":557,"date":558},"\u002Ftr\u002Fmutable-ve-immutable-kavrami","Mutable ve Immutable Kavramları Nedir?","2021-08-17",{"path":560,"title":561,"date":404},"\u002Ftr\u002Fyeni-tema-honeywind","Yeni WordPress Temam Honeywind: Tailwind CSS ve Minimalizm",{"path":484,"title":485,"date":419},[564,568,572],{"path":565,"title":566,"date":567},"\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir","ES10 Nedir? ECMAScript 2019 Nedir?","2021-10-19",{"path":569,"title":570,"date":571},"\u002Ftr\u002Frest-api-tasarimi","REST API Tasarım İncelikleri","2021-02-04",{"path":573,"title":574,"date":575},"\u002Ftr\u002Fubuntu-24-04-uzerinde-cyberpanel-kurulumu","Ubuntu 24.04 LTS ve 22.04 LTS Üzerinde CyberPanel Kurulumu","2026-06-20",1782142069835]