Programlamada Kopyala Yapıştırın Mantığı, dersimiz ile son hızla devam ediyoruz. Bu dersimizde bir kod yada nesneden değil, birçok yazılımcı adayının yanlış yaptığı ve adaylarında bazılarının, bu yanlışı yüzünden insanlara hakaret ettiğini gördüğümden dolayı yazmak istedim. Arkadaşlar, diyelim ki ben bir işlem için bir kod bloğu yada class hazırladım. Bu hazırladığım class %90 oranında sana direk uymayacaktır. Atıyorum mail gönderme ile ilgili bir işimiz olsun. Bu kodlar genelde hep aynıdır. Ancak bazı durumlarda bu kodların değiştirilmesi gerekir. Bu durumda da aldığınız kodları kendi projenize uyarlamanız gerekir. Gelin şimdi bu programlamada kopyala yapıştırın mantığı na beraber bakalım.
Programlamada Kopyala Yapıştırın Mantığı
Örnek vermek gerekirse, mail gönderme kodlarını kopyalayıp projenize yapıştırdınız. Eğer projenizde ilgili namespace’ler ekli değilde bir çok satırda hata gösterecektir. Daha bu namespace’leri eklemeden insanlara hakaret etmeniz çok amatörce bir davranıştır. Namespace’leri eklediniz yine hata alıyorsunuz, bu sefer hata aldığınız yerlere bir bakın, orada sizin değişkenleriniz mi var yoksa kopyaladığınız yerdeki kişinin yazdığı değişkenler mi? (NameSpace’ler hakkında dersim için tıklayınız.). Yada bir public olmayan bir classa yazdığınız bu kodları başka yerden çağırmaya mı çalışıyorsunuz kontrol edin. (Erişim belirleyiciler hakkındaki dersim için tıklayınız.). Yani kopyala yapıştır yaptığınızda kontrol etmeniz gereken bir çok alan var.
Hiç hata almadığınızı varsayalım, ama kodlar istediğiniz gibi çalışmıyor. Bu sefer kodların başlangıcına bir BreakPoint koyup kodlarınızı aşama aşama kontrol edin. Değişkenler doğru geliyor mu?, Gönderdiğiniz değişkenlerde bir sorun var mı? Mail göndermeden örnek verdik, İnternetiniz var mı?, Karşı mail doğru mu? Yazdığınız şifre doğru mu? Gördüğünüz gibi kontrol edilmesi gereken bir çok yer var.
Örnek Yapalım
Şimdi bir siteden mail gönderme kodu kopyalayacağım ve kendi projeme uyarlayacağım. Bakalım programlamada kopyala yapıştırın mantığı neymiş?.
MailMessage mail = new MailMessage("you@yourcompany.com", "user@hotmail.com"); SmtpClient client = new SmtpClient(); client.Port = 25; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Host = "smtp.gmail.com"; client.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword"); mail.Subject = "this is a test email."; mail.Body = "this is my test email body"; client.Send(mail);
İşte bir siteden aldığım kodlar yukarıda. Şimdi uyarlayalım.
using System; using System.Collections.Generic; using System.Linq; using System.Net.Mail; using System.Text; using System.Threading.Tasks; namespace mustafabukulmez_com.Metodlar { public class SendMail { public bool Send(string Baslik, string Mail, string Sifre, string GonderilecekKisi, int Port, string Host, string Konu, string MailIcerik) { bool MailSend = false; MailMessage mail = new MailMessage(Mail, GonderilecekKisi) { Subject = Konu, Body = MailIcerik, IsBodyHtml = true }; SmtpClient client = new SmtpClient() { Port = Port, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Host = Host, Credentials = new System.Net.NetworkCredential(Baslik, Sifre) }; try { client.Send(mail); MailSend = true; } catch (Exception ex) { MessageBox.Show("Mail Göndermede Hata." + Environment.NewLine + ex.ToString()); } return MailSend; } } }
Gördüğünüz gibi, kodlarımı hemen bir class içerisine aldım. Dışarıdan alması gereken kısımları değişkenlerle gönderdim. Görünüm olarak daha profesyonel hale getirdim. Try ile mail gönderildi mi gönderilemedi mi kontrol ettim. Gönderilmedi ise program kırılmasın diye hatayı bir messagebox ile gösterdim. Bu kodları hiç denemedim ama çalışmaması için hiçbir neden yok…
Şimdi diyebilirsiniz. bu kadarını bilmiyoruz diye… Doğru bilmiyor olabilirsiniz ama en azından istenen bilgileri kendinize göre göndermeniz gerektiğini bilmelisiniz. Örneğin uyarlanmış haldeki kod yazım şeklini bende yakın zamanda öğrendim. Yani bu şekilde değil de,
SmtpClient client = new SmtpClient(); client.Port = 25; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Host = "smtp.gmail.com";
Bu şekilde yazmayı…
SmtpClient client = new SmtpClient() { Port = Port, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Host = Host, Credentials = new System.Net.NetworkCredential(Baslik, Sifre) };
İki şekilde de aynı işi görecektir. Ancak ikinci yazdığım daha profesyonelce bir yazım şeklidir ve aslında olması gereken de aşağıdaki gibidir. Ben bunu bildiğim için kendime göre uyarlamış oldum.
Ne Yaptık?
- Genel bir işlem olduğundan kodlarımızı merkezi bir noktaya almak amacı ile bir class içerisine aldık.
- Kodların çalışabilmesi için gerekli olan namespace’leri import ettik.
- Asıl işi yapacak olan kodları parametre alan bir void içerisine aldık.
- İçerebileceği tüm değişkenleri işimi yapabileceği şekilde dışarıdan gönderdik.
- Yazım şekillerini kendi alışkanlıklarımıza göre ayarladık.
- Hata çıkabilme ihtimaline karşı programın kırılmaması için gerekli olan kontrolleri ekledik.
Kopyala yapıştır yaptığımız gibi çalışmasını bekleyemeyiz. Kendi projemize göre uyarlamamız gerekmektedir. Yeri gelecek kodlarınızı son hali kopyaladığınız ile alakasız bir hale gelecektir. Şahsen, bir çok kez bunu yaşadım. Kopyaladığım kodlar ile mantığını kavradım ve silip kendime göre tekrardan yazdım. Zaten kodların mantığını ve yazmasını bu şekilde öğreniriz.
Programlamada kopyala yapıştırın mantığı dersi biraz aceleye geldiğinden hızlı geçtim ama elimden geldiği kadar da konuyu açıklamaya çalıştım.
C Sharp Eğitim Seti ve ERP Programlama ders listesi için tıklayınız.
Takipte ve sağlıcakla kalın. ;)
Yorumlar (1)