Çözüm Yolları ve Bakış Açısı
Bir sorunla karşılaştığımızda hedefimiz bellidir, bu sorunu en kısa yoldan çözmek. Veya bazen en “akılcı” yoldan çözmek de olabilir eğer en kısa yol makul olarak kabul ettiğimiz sınırlar içerisinde değilse.

Sorunumuzu tam olarak belirledikten sonra çözüm için çalışmaya başlarız, tasarladığımız cevapları soruna uygularız ve hedefimize ulaşıp ulaşmadığımızı değerlendiririz.
Ancak çözüm yolları arayışında probleme bakış açımız o kadar önemlidir ki, bazen bakış açımızı değiştirmediğimiz sürece en basit problemlerin bile altından kalkamayabiliriz. Benim yaşadığım ve bu yazıyı da yazmama vesile olan basit bir örnek ile bu duruma bir örnek vermek istiyorum.
Son günlerde üzerinde çalıştığım sunucuya dosya yükleme sınıfını geliştirirken bir problemle karşılaştım. Problem şöyle; kullanıcı, dosyayı yükleyeceği dizinin ismini belirtirken sonuna bir slash “/” işareti koymak zorunda. Koymazsa program çalışmıyor. Slash işaretini kullanmadığı durumda da programın çalışması için basit bir şey yapılabilir:
if(if($hedef[strlen($hedef) - 1] != '/')) { //degerin sonuna slash karakteri eklenecek. } else { //program normal olarak çalışacak... }
$hedef değişkeninin son karakterinin ‘/’ olup olmadığını kontrol edeceğiz, değilse sonuna bir ‘/’ karakteri ekleyeceğiz.
İşte bakış açısı burada devreye giriyor. Başlarken $hedef değişkenini array olarak ele alıp son karakterini kontrol ettim, dolayısıyla devamında $hedef değişkenini devamlı array olarak düşünüp ona göre işlem yapmaya çalıştım. Bir kaç denemeden sonra şöyle bir fonksiyon algoritması tasarladım:
- fonksiyon, kendisine gelen stringi array yapsın.
- Daha sonra bu değişkenin sonuna istediğimiz kadar karakteri for döngüsü ile yerleştirelim.
- Sonunda oluşturduğumuz arrayi stringe dönüştürelim
Probleme bakış açım öylesine sabitti ki, aşağıdaki fonksiyonu yazarak problemi çözmem yaklaşık 1 saat sürdü. Lütfen fonksiyonu dikkatlice inceleyelim:
function _sonaKarakterEkle($yazi, $karakter) { $yazi = str_split($yazi); //string -> array for($i == 0; $i<strlen($yazi); $i++) { array_push($yazi, $karakter[$i]); //son karakteri ekle } $yazi = implode('', $yazi); //array -> string return $yazi; }
Problemi tekrar hatırlayalım, $hedef değişkeninin sonua bir / karakteri ekleyecektik. Probleme bakış açım beni bu fonksiyonu yazmaya sürükledi.
Ama bundan daha inanılmazı, fonksiyonu yazdıktan sonra daha “basit” bir çözümü hatırlamam ile ortaya çıktı. Problemi çözmek için gereken sadece şu satır idi:
$yazi . $karakter
Sadece ‘.’ (nokta) karakteri ile iki değişken değerini birleştirebilirsiniz, ya da daha açık olursak, iki string değerini sadece nokta ile birleştirebilirsiniz!
Probleme bakış açım öylesine sabitti ki, 1 saate yakın bir süre boyunca aklıma dahi gelmedi! Üstelik o kadar sık kullanmama rağmen…
Kıssadan hisse; bir problem çözümü ile uğraştığınızda (bu problem yazılımla da ilgili olabilir, başka bir konuda da) olabildiğince farklı bakış açılarına sahip olmaya çalışın. Farklı açılardan bakamıyorsanız, biraz ara verin, bir kahve için sonra kafanızı toplayıp tekrar bakın. Yüksek olasılıkla daha kolay bir yol vardır, sadece siz göremiyorsunuzdur…
- Ya da bu blogda yer alan bütün yazıları içindekiler sayfasında görüntüleyebilirsiniz. Tıklayın!
görüşünü belirt
Arama
E-Posta Aboneliği
RSS Aboneliği
En Çok Yorumlanan Yazılar
- Blogger’da “devamını oku” bağlantısı (21)
- Ajax ile dinamik listeleme (21)
- MySQL’de Transaction ve PHP ile kullanımı (16)
- PHP ile sınırsız alt kategori mantığı (14)
- Kullanıcı dostu url hazırlamak (12)
- PHP’nin (muhtemelen) az bilinen 10 özelliği (12)
- Kullandığınız programlama dili ne kadar popüler? (12)
- MySQL’de “join” kullanımı (11)
- .htaccess konuları [Giriş] (11)
- Blogger’da arama kutusu ekleme (10)
Etiketler
Son Yorumlar
- isa engiz: Yazı için teşekkürler. sabit ip 2.75 tl. bu ücreti verip kendi web sunucumuzu kurabiliriz… En yakın...
- osman: Yazı için teşekkürler. Pardus projesinin Türkiye için çok önemli olduğunu düşünüyorum. Ancak yazıda da...
- Mustinet: siblings kullanarak da yazılabilir. Teşekkürler
- is: CSS kullanmadan sadece HTML kodlarıyla yanyana iki sütun (tablo kullanmadan) oluşturulabilir mi?
- Doğan Yılmaz: verdiğiniz bilgiler için çok ama çok teşekkür ederim. artık sıkı bir takipçiniz olmaya karar verdim
25 / Nisan / 2009