Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
5 yazı bulundu
Coding Convention Nedir, Neden İnsana Değil Araca Bırakılır? Kaynaklar, Seviyeler ve Ekip Kararı
Yazılım Tasarımı SERİ 01

Coding Convention Nedir, Neden İnsana Değil Araca Bırakılır? Kaynaklar, Seviyeler ve Ekip Kararı

Coding convention'ın değeri kuralın kendisinden değil, tartışılmaz ve araçla uygulanır olmasından gelir: Bookstore'da tek satırlık bir indirim değişikliği editör ayarları yüzünden 55 satırlık diff'e gömüldü, .editorconfig ve dotnet format onu tekrar tek satıra indirdi. Yazı formatting, stil, naming ve mimari kural seviyelerini, kaynak seçimini ve ekipte kararı bir kez verip kayda geçirmeyi anlatıyor.

14 Kas 2026 12 dk 4
C# Convention'larını .editorconfig ile Kodlamak: Code-style Option'ları, Naming Rule'lar ve Build'de Zorlamak
Yazılım Tasarımı SERİ 02

C# Convention'larını .editorconfig ile Kodlamak: Code-style Option'ları, Naming Rule'lar ve Build'de Zorlamak

Naming rule'un kendi severity satırı build'de okunmaz; kuralları dotnet build'de zorlamak için EnforceCodeStyleInBuild ile birlikte dotnet_diagnostic.IDE1006.severity gerekir. Yazı .editorconfig hiyerarşisini, code-style option'larının IDE kural ID'lerini, naming rule'ların symbols-style-severity üçlüsünü, test klasörü override'ını, category-Style'ın seçmediğin varsayılanları zorlamasını ve yalnız IDE'de çalışan kuralları gerçek build çıktılarıyla anlatıyor.

14 Kas 2026 12 dk 5
C# Formatter Seçimi: dotnet format mı, CSharpier mı? Kuralı Tek Sahibe Vermek
Yazılım Tasarımı SERİ 03

C# Formatter Seçimi: dotnet format mı, CSharpier mı? Kuralı Tek Sahibe Vermek

İki formatter aynı kuralın sahibi olursa döngü hiç bitmez: 1.000 dosyalık Bookstore çözümünde dotnet format CSharpier çıktısında 6.002 sorun, CSharpier de dotnet format çıktısında 1.001 formatlanmamış dosya buldu. Çözüm whitespace'i CSharpier'a, stili analyzer'a vermek; yazı iki aracın çıktısını, süre ölçümünü, IDE0055'i kapatmanın neden yetmediğini ve sürümü dotnet tool manifest'iyle sabitlemeyi gösteriyor.

14 Kas 2026 12 dk 4
Angular ve TypeScript'te Convention: Style Guide, Prettier ve ESLint'in Sorumluluk Paylaşımı
Yazılım Tasarımı SERİ 04

Angular ve TypeScript'te Convention: Style Guide, Prettier ve ESLint'in Sorumluluk Paylaşımı

Angular projesinde biçim Prettier'ın, adlandırma ve selector kuralları ESLint'in olmalı ve ikisinin arasındaki sınırı eslint-config-prettier çizer: o olmadan kopyalanmış iki @stylistic kuralı Prettier'dan geçmiş kodda 110 hata üretti. Yazı Angular 22 Style Guide'ın kararlarını, eski projelerde tip son ekli adlandırmayı, yeni projede Prettier'ın 7 dosya bulmasını, naming-convention kuralını ve ESLint 10'un .eslintrc'yi yok saymasını gösteriyor.

14 Kas 2026 12 dk 5
Kuralları Otomatikleştirmek: Pre-commit Hook, CI Kapısı, Legacy Kod Tabanına Kademeli Geçiş ve .git-blame-ignore-revs
Yazılım Tasarımı SERİ 05

Kuralları Otomatikleştirmek: Pre-commit Hook, CI Kapısı, Legacy Kod Tabanına Kademeli Geçiş ve .git-blame-ignore-revs

Pre-commit hook hızlı geri bildirim verir ama --no-verify ile atlanır; convention'ı main'e girmeden durduran tek yer zorunlu bir CI kontrolüdür. Yazı Husky.Net ve lint-staged ile yalnız staged dosyaları formatlamayı, düzeltme komutunu söyleyen CI adımlarını, legacy kodda dokunulan dosyalar ile big bang arasındaki seçimi, .git-blame-ignore-revs'i, açık PR'ları çatışmasız güncellemeyi ve suppression politikasını gerçek çıktılarla anlatıyor.

14 Kas 2026 15 dk 4
Blog Haritası