İf ($Count>0) Mi Demeli İf ($Count==0) Mı?
-
merhaba arkadaşlar, yazdığım kodların daha düzenli olması adına, önce istisna ve hataları yazıp sonra yapmak istediğim işlemi yazıyorum
bir sql sorgulaması yaptıktan sonra ise örneğin bir data aradığım zaman sorguyu çalıştırıp
$stmt1->execute(); $count = $stmt1->rowCount(); if ($count > 0) {yapıyorum sonra datayla işimi görüp kapatıp else le de hatayı yazıyorum.
acaba başta söylediğim gibi daha düzenli olması için önce if ($count==0) { echo 'hata mesajı!';} yapsam, bu, sistemde bir açık yaratır mı?
if ($count==0) yeterli olmaz da if ($count===0 || !is_int($count) ) gibi bir şey mi yazmalıyım?
kofcu tarafından 08/Haz/16 23:04 tarihinde düzenlenmiştir -
Bu konuda uzmanlığım yok ama bence $count == 0 mantıksal olarak >0 dan daha keskin bir koşul oluyor. integer olduğundan emin olunması gerekiyor ama tabi.
-
if ($count==0) yeterli olur, boşuna oyalanma buralarda.
Ayrıca postun içeriği değil ama başlıktaki iki ifade birbirinin alternatifi değil, başka şeyleri ifade ediyor.
if ($count===0 || !is_int($count) ) bu sorguda da iki ifadenin yerini değiştirirsen daha mantıklı olur. || işleminde ilk ifade true ise ikinciye hiç bakılmıyor olmalı. Bu case'de ilki false olsa bile ikincinin true olma ihtimali bir işine yaramaz. İlk ifade true ise zaten ikinciye bakılmaz vs..
-
cevaplar için teşekkür ederim. kendimi anlatabildim ama değil mi?
direk somut örnek vermem gerekirse login formunda profili çekerken girilen kullanıcı adının önce olup olmadığına bakılıyor. varsa şifreyi karşılaştırıyor vesaire. varsa için if($count>0) yapmak yerine yoksa error ver exit yap şeklinde if ($count===0) { echo 'hata mesajı!';exit;} mi yapsam diye düşünmüştüm.
ayrıca evet başlığı yanlış yazmışım nedense :) (düzelttim)
"||" için o mantığı bilmiyordum teşekkürler.
soru sorma amacım olur da bi şekilde hata vesaire olabilir mi? mesela bir şekilde bir kullanıcı $count değişkenini '1==1 || 0' gibi bir şey gönderip bi açık oluşturmuş olabilir mi gerçi bu paranoyak mantıkla aynı şey kodun her yerinde olabilir :)
bu mesajı yazarken de düşündüm ki evet ya gereksiz kasıyorum, sonuçta çoğunlukla $count>0 olacaktır. gereksiz yere $count'ın 0 olup olmadığına bakmış olur o zamanlarda, gereksiz işlem yapmış olur server.
-
Sınıf içindeki fonksiyon olur, sınıf dışındaki fonksiyon olur, fonksiyon kullanmak lazım.
if( !koşul ) { if( !başkaKoşul ) { if( !bamBaşkaKoşul ) { // # İşlemler, işlemler } } }gibi bir yapı ya da
if( !koşul and !başkaKoşul and !bamBaşkaKoşul ) { // # İşlemler, işlemler }yerine
function birFonksiyon() { if( koşul ) { return false; } if( başkaKoşul ) { return false; } if( bamBaşkaKoşul ) { return false; } // # İşlemler, işlemler.. }gibi temiz birşeyler yazmak çok daha güzel olacaktır.
PcK0 tarafından 08/Haz/16 23:47 tarihinde düzenlenmiştir -
@kofcu
Sql Injection için her bir formu manuel kontrol etmek kolay değil gibi. Zaten bir sürü validation + kontrol olacaktır. Bu zahmetlerden de kurtarıp ayrıca bir sürü fayda daha sağlayacak bir framework kullanmak mantıklı olabilir bu konuda. En azından bütün bu ıvır zıvır ile uğraşmaktansa doğrudan konuya odaklanıp problemini çözebilirsin / işi geliştirebilirsin.
@PcK0
Ben olaya clean code olarak bakmamıştım, güzel noktaya değinmişsin. Ayrıca Object Calisthenics prensiplerine de uygun oluyor kod böyle olunca.
Bknz: ilk iki madde:
-
Tabi. Temiz kod yazmak iyidir. Gönlü ferahlatır, bakış açısını açar.
:)
-
PcK0 bunu yazdı
Tabi. Temiz kod yazmak iyidir. Gönlü ferahlatır, bakış açısını açar.
:)
aynen önceki mesajında verdiğin örnek tarzı bir şey yazmak için bu işe girdim hocam. yoksa if if if else else else ile de işimi görüyordum :) bunun dışında yine düzenli kod yazmak için özellikle return kullanımını keşfedince else'leri rafa kaldırdım :)
