You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
gereksiz yere bir başlık dosyası include edilmiş mi? (gereksiz başlık dosyalarının include edilmesinden kaçınılmalı)
ön bildirim (forward declaration) yapmak yerine gereksiz yere başlık dosyası include edilmiş mi?
başlık dosyasında olmaması gereken using bildirimi var mı? (başlık dosyalarında using bildirimi olmamalı namespace üyesi isimler başlık dosyalarında nitelenerek kullanılmalı)
başlık dosyasında olmaması gereken using namespace direktifi var mı? (başlık dosyalarında using namespace bildirimi olmamalı namespace üyesi isimler başlık dosyalarında nitelenerek kullanılmalı)
başlık dosyasında tek tanımlama kuralını (ODR) çiğneyen bir tanımlama var mı? (tek tanımlama kurallarına uyulmalı)
Aritmetik türlerden ya da pointer türlerinden ilk değer verilmeden tanımlanan değişkenler var mı? (akis yönde bir zorunluluk olmadıkça değişkenlere ilk değer verilmeli)
Const Doğruluğu (Const Correctness)
değişkenler varsayılan biçimde (default)const olarak tanımlanmamış mı? (default olarak parametre değişkenleri dışındaki değişkenler const olmalı)
salt okuma (read-only access) amaçlı kullanılacak değişkenler const yapılmamış mı?
arama tablosu (lookup table) olarak kullanılan veri yapıları const yapılmamış mı?
okuma amaçlı erişim sağlayan referans parametreler const yapılmamış mı?
gösterici değişkenlerin tanımında gereken yerlerde const anahtar sözcüğü kullanılmış mı?
low level const olması gerekenler low level const yapılmış mı?
top level const olması gerekenler top level const yapılmış mı?
aralık tabanlı for döngülerinde okuma amaçlı kullanılacak döngü değişkeni olarak kullanılan sol taraf referansları const yapılmamış mı?
const olması gereken üye fonksiyonları const yapılmamış mı?
constexpr & consteval
Derleme zamanında hesaplanabilecek değerler için constexpr olmayan fonksiyonlar kullanılmış mı?
Derleme zamanında hesaplanması gereken değerler için consteval olmayan fonksiyonlar (C++20) kullanılmış mı?
Yorum satırları (Comment Lines)
gereksiz yorum satırı var mı? (gereksiz yorum satırlarından kaçınmak gerekiyor)
kodun açık ve net olduğu yerlerde (selfexplanatory) açıklama satırları kullanılmış mı? (gereksiz yorum satırlarından kaçınmak gerekiyor)
güncellenmesi (update) gereken yorum satırları güncellenmemiş mi?
yorum satırları gereksiz yere uzun tutulmuş mu? (uzun açıklamalardan kaçınılmalı)
değişken bildirimleri için açıklama satırı var mı? (değişken bildirimleri için açıklama yapılmış ise muhtemelen kötü isimlendirme söz konusudur)
debug amaçlı comment out yapılmış kodlar kaynak dosyada bırakılmış mı?
İsimlendirme (Naming)
anlaşılmaz isimler kullanılmış mı? (isimler anlaşılır ve betimleyici olmalı)
Türkçe isim kullanılmış mı? (isimler Türkçe olmamalı)
isimlendirmede tutarlı biçimde bir konvensiyon kullanılmamış mı?
birbirine çok yakın isimler seçilmiş mi? (x1, x2, x3 gibi)
görsel olarak 0 ile karıştırılma riski olan 'o' karakteri kullanılmış mı?
fonksiyon isimleri fonksiyonun yaptığı işe betimlemiyor mu?
tamamı büyük harf olan (all caps) isimler kullanılmış mı? (all caps isimler kullanılmamalı)
isimlerde gereksiz ön ekler kullanılmış mı?
standart kütüphane tarafından rezerve edilmiş isimler kullanılmış mı?
Sabitler (constants)
nullptr yerine NULL makrosu kullanılmış mı? (NULL makrosu kullanılmamalı)
nullptr yerine tam sayı sabiti olarak 0 kullanılmış mı? (nullptr sabiti kullanılmalı)
tam sayı ve gerçek sayı sabitlerinin türü doğru seçilmiş mi?
isimlendirilmesi gereken sabitler isimsiz olarak kullanılmış mı? (özel anlama sahip sabitler isimlendirilmeli)
büyük tam sayı sabitlerinin yazımında basamak ayıracı (digit separator) kullanılmamış mı? (kodun kolay okunması için basamak ayraçları kullanılmalı)
Numaralandırmalar (enums)
kapsamlı enum türü (enum class) yerine kapsamsız enum türü kullanılmış mı? (zorunlu durumlar dışında kapsamsız enum türlerinin kullanımından kaçınılmalı)
isimlendirilmemiş bir enum türü kullanılmış mı? (kodun kolay okunması için enum türleri isimlendirilmeli)
gereksiz biçimde numaralandırma sabitlerinin değerleri belirlenmiş mi? (gerekmiyorsa tüm numara sabitleri varsayılan değerlere sahip olmalı)
gereksiz biçimde baz tür (underlying type) belirlenmiş mi? (gerekmedikçe baz tür belirtilmemeli)
numaralandırma sabitleri tamamı büyük harf (all caps) isimlendirilmiş mi? (all caps isimlerden kaçınılmalı)
İfadeler ve Operatörler (Expressions & Operators)
karmaşık ve fazla sayıda operatör içeren ifadelerde öncelik parantez(ler)i kullanılmamış mı? (uzun ve karmaşık ifadelerin okunmasını kolaylatırmak ve kodlama hatalarından kaçınmak için öncelik parantezleri kullanılmalı)
Kontrol Deyimleri (Control Statements)
STL algoritmaları yerine ham döngü deyimleri (raw loops) kullanılmış mı? (ham döngülerden mümkün olduğunca kaçınılmalı)
gereksiz do while döngüsü kullanılmış mı? (do while döngü deyimleri kod okumayı zorlaştırıyor ve hata yapma riskini arttırıyor. Gerekli durumların haricinde do while döngülerinden kaçınılmalı)
aralık tabanlı for döngü deyimleri (range-based for loop) yerine geleneksel for döngü deyimi kullanılmış mı?
gereksiz goto deyimi kullanılmış mı?
switch deyimlerinde gereksiz default case kullanımı var mı?
Tür Dönüşümleri ve Tür Dönüştürme Operatörleri
İsim Alanları (Namespaces)
global fonksiyonlar namespace içinde değil mi? (isim çakışmalarına karşı önlem almak için global fonksiyonlar bir namespace içinde olmalı)
isim alanları isimleri tamamı küçük harf mi (all lower case) ?
Fonksiyonlar
fonksiyon ismi iyi seçilmiş mi?
verilen isim yeterince betimleyici değil mi?
fonksiyonlara birden fazla görev yüklenmiş mi? (fonksiyonların tek bir görevi olmalı, bir fonksiyona birden fazla görev yüklenmemeli)
küçük birden fazla fonksiyon yerine tek bir (uzun) fonksiyon tanımlanmış mı? (uzun fonksiyonlardan kaçınılmalı, hata yapma riski artıyor, kod değişikliği yapmak ve test etmek zorlaşıyor)