C# İç İçe İf Else Kullanımı

C# İç İçe İf Else Kullanımı

C# da iç içe if kullanım örneği olarak bir projemde yazdığım kodları sizlerle paylaşmak istedim. Hem kullanımını hemde kullanım şeklini görebilirsiniz

Selam arkadaşlar.

İkinci dersimde iç içe if kullanımını bir örnekle anlatmak istiyorum arkadaşlar. Belki sizlere de faydası olur.

paylaşacağım kodların senaryosu şu şekildedir.

Bir kayıt yada güncelleme işlemi yapılacaktır. İşlemi yapıldıktan sonra mail adresi seçilen kişilere işlem yapıldığına dair otomatik bir mail gönderecektir. Kayıt-Güncelleme işleminin ve mail gönderme işleminin kodlarını paylaşmayacağım. Sadece bu işlemleri gerçekleştirirken kullandığım yöntemi paylaşağım.

Görelim;

private void BTN_KAYDET_Click(object sender, EventArgs e)
        {
            string mailler = "";
            if (MailList.Count > 0)
            {
              // mail listemiz boş değilse aşağıdaki işlemleri yapacak...

                if RECno == 0)
                {
                  // Eğer bu işlem için bir RECno yoksa bu işlem bir INSERT işlemidir.
                  // INSERT Bloğu...
                  //...
                  //...
                    if (sql.ok == 1)
                    {
                      //SQL işlemleri için kullandığım classtan gelen bir değer. 
                      //Eğer değer 1 ise INSERT başarılıdır.
                        MessageBox.Show("Kayıt başarılı");

                        for (int i = 0; i < MailList.Count; i++) 
                            { 
                               mailler += MailList + ","; 
                            }
                          //burada Mailler adlı List içerisindeki mail adreslerini aralarına
                          //virgül atarak yan yana yazdık
                        mailler = (mailler.Substring(0, mailler.Length - 1));
                          //bu kod ise en sonra kalan virgülü silmek içindir.                          
                          
                        if (SendMail.SendMailLocal(mailler, "Bildirim" ,"Mail İçeriği", "Sistem", "") == true)
                            MessageBox.Show("Mailler Gönderildi.");

                           // Mail gönderme class'ı bir bool değer döndürüyor.                                               
                           // dönen değer True ise mail gönderilmiştir.
                           // NOT: if içerisinde tek satır kod kullanacaksanız "{}"
                           // açmanıza gerek yoktur.
                    }
                    else
                        MessageBox.Show("Kayıt başarısız");
                       // Classdan gelen " OK " değişkeni  1 olmadğı için kayıt başarısız.
                }
                else
                {
                    if (Durum == "Açık" & YetkiliKisi == Global_System.AktifKullanici)
                    {
                        // UPDATE Bloğu
                        //...
                        //...
                        if (sql.ok == 1)
                        {
                          //sql classından gelen bir kontrol. 1 ise güncelleme başarılıdır.                            
                            
                            MessageBox.Show("Güncelleme başarılı");

                            for (int i = 0; i < MailList.Count; i++) 
                               { 
                                  mailler += MailList + ","; 
                               }
                          //burada Mailler adlı List içerisindeki mail adreslerini aralarına
                          //virgül atarak yan yana yazdık

                            mailler = (mailler.Substring(0, mailler.Length - 1));
                          //bu kod ise en sonra kalan virgülü silmek içindir.                          
                          
                         if (SendMail.SendMailLocal(mailler, "Bildirim", "Mail İçeriği","Sistem", "") == true)
                        }
                        else
                        {
                            MessageBox.Show("Güncelleme başarısız");
                           // Classdan gelen " OK " değişkeni  1 olmadğı için güncelleme başarısız.
                            Close();
                        }
                    }
                    else
                        MessageBox.Show("Bu kayıt kapatılmış yada düzenleme yetkiniz yok. ");
                       // Durum açık olmadığı ve YetkiliKisi aktif kullanıcı olmadığı için
                       // bu mesajı gösterdik.
                }
            }
            else
                MessageBox.Show("Hiç mail adresi seçmediniz.");
                // mail gönderilecek kişi seçilmediği için buraya geçti.
                // bunu yaptık çünkü hiç mail seçilmezse for döngüsünde hata verecektir.
        }

Evet arkadaşlar kodlar bu kadar gördüğünüz gibi bir sürü iç içe if var ve karmaşık görünüyor. bu işlemlerin çok daha kısa yolu elbette vardır. Aceleye geldiği için oturup düzgünce kafa yoramadığım için bu şekilde uzun oldu. :)

İsterseniz birde hem daha az kod ile hemde daha düzenli bir şekilde bu işlemleri nasıl yapabiliriz ona bakalım :)

private void BTN_KAYDET_Click(object sender, EventArgs e)
        {
            string mailler = ""; bool MailGonder = false;
            for (int i = 0; i < MailList.Count; i++)
            {
                mailler += MailList + ",";
            }
            mailler = (mailler.Substring(0, mailler.Length - 1));
            if (MailList.Count > 0)
            {
                if (RECno == 0)
                {
                    // INSERT Bloğu...
                    //...
                    //...
                    if (sql.ok == 1)
                    {
                        MessageBox.Show("Kayıt başarılı");
                        MailGonder = true;
                        Close();
                    }
                    else
                        MessageBox.Show("Kayıt başarısız");
                }
                else
                {
                    if (Durum == "Açık" & YetkiliKisi == Global_System.AktifKullanici)
                    {
                        // UPDATE Bloğu
                        //...
                        //...
                        if (sql.ok == 1)
                        {
                            MessageBox.Show("Güncelleme başarılı");
                            MailGonder = true;
                            Close();
                        }
                        else
                            MessageBox.Show("Güncelleme başarısız");
                    }
                    else
                        MessageBox.Show("Bu kayıt kapatılmış yada düzenleme yetkiniz yok. ");
                }
            }
            else
                MessageBox.Show("Hiç mail adresi seçmediniz.");

            if (MailGonder == true)
            {
                if (SendMail.SendMailLocal(mailler, "Bildirim", "Mail İçeriği", "Sistem", "") == true)
                    MessageBox.Show("Mailler Gönderildi.");
            }
        }

En fazla 5 yada 6 satır kod azalttık ama ilkine göre çok daha düzenli ve anlaşılır oldu bence :)

-----

NOT 1: 100 satırda yapılacak bir işlemi 10 satırda yapabilmek için o 100 satırı defalarca yazmak gerekir. O kadar kodu defalarca yazmaktan bıkmaya başladığında kısa yolları görmeye başlarsın. :) 

NOT 2: Proje genelinde aynı kodu yada kod bloğunu iki kere bile yazıyorsan o kodlardan şüphelen. Çünkü o kodları bir kere yazıp defalarca kullanabileceğin bir yol mutlaka vardır. (Yukarıdaki örneği inceleyerek de bu sözümü anlayabilirsiniz ;) )

NOT 3: Çok satır kod yazmakla övünen biri asla profesyonel bir yazılımcı olamaz. Profesyonellik çok az koda bir sürü işlem yaptırabilen kişidir. Yani bugün şu kadar satır kod yazdım diyen adam benim gözümde hiçbir zaman pro olamaz.

------

Nacizane önerilerimle birlikte bu ders bu kadar sevgili arkadaşlar umarım faydalı olur.

Yorumlarınızı eksik etmeyin arkadaşlar. Artılarımı ve eksilerimi söylemekten çekinmeyin.

Mustafa BÜKÜLMEZ
Web sitesi, ERP, MRP, CRM ve kişiye özel uygulamalar hazırlanır. -- Deneyip çalıştığını onaylamadan çok nadir ders eklerim. Denemediklerim ise eski makalelerimdendir. Hem bildiklerimi paylaşmak hemde her seferinde aramamak için yayınlıyorum. -- *Bilgi paylaştıkça çoğalır. *Bir mum diğer mumu yakmakla ışığından bir şey kaybetmez. Aksine Daha çok ışık yayar. -- 1992 İstanbul doğumluyum. Kahramanmaraş'ta yaşıyorum. Lise: Ağ sistemleri ve Yönetimi, Üniversite: Bilgisayar Programcılığı.. -- 07.2014 tarihinden beri bir firmada Bilgi İşlem Müdürü olarak çalışmaktayım. -- Kişisel Bloğum : https://csharpiledundenbugune.blogspot.com.tr/
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git