
Daha İyi Bir Programcı Nasıl Olunur? (1. Bölüm): Başarılı bir MQL5 programcısı olmak için bu 5 şeyi yapmayı bırakmalısınız
Giriş
— Oliver Wendell Holmes
Daha iyi bir programcı olmak için yalnızca 7/24 kodlama öğrenmemiz değil, aynı zamanda kötü alışkanlıklardan kurtulmamız, iyi alışkanlıklar geliştirmemiz, en iyi pratik uygulamaları öğrenmemiz ve muhtemelen programlamanın temel ilkelerini yeniden gözden geçirmemiz gerekir. Tüm bunlar, bir programcı olarak başarılı bir kariyer inşa etmek isteyen herkes için çok önemlidir. Nasılları ve nedenleri bilerek, ne yaptığımızın farkına varırız; bu, hatırlama yeteneğimizi artırır ve genel olarak kodlarımızı geliştirmemize yardımcı olur.
Programlama deneyiminizi neredeyse bir gecede iyileştirebilecek bazı kanıtlanmış yöntemlere göz atalım - bunun için bu makaleyi dikkatlice okumanız ve ipuçlarını uygulamaya koymanız gerekir.
01: Kodları körü körüne kopyalamayı bırakın
"En asil zevk, anlama sevincidir."
— Leonardo Da Vinci
Bu, yeni başlayanların en büyük alışkanlığıdır ve bazen deneyimli programcılar bile bunu yapmaktadır. 2019'da programlamaya ilk başladığımda, çoğu zaman forumlarda "çalışan kod" aradığımı hatırlıyorum. Belirli bir konuda arama yaptığımda açıklamalara pek dikkat etmiyordum; tek aradığım, birisinin "Teşekkür ederim! Kod çalışıyor!" gibi yanıt verdiği bir yorum veya yararlı olduğunu söyleyen herhangi bir yorumdu (özellikle bu yorumlar, forumda yardım isteyen kişiden geldiyse)... Çalışan kod parçasını bulduğumda ne yaptığımı biliyorsunuz: "kopyalandı".
Şimdi hatırladım, itiraf etmekten utanıyorum ama bir keresinde bir forumda standart kütüphanenin çalışmadığını yazmıştım.
Şimdi kodun neden çalışmadığını biliyorum. Nedeni bendim. Çünkü bu kodu bir yerden kopyalamıştım (nereden olduğunu dahi hatırlamıyorum). Burada söylemek istediğim şey şu:
Her zaman ne yaptığınızı anladığınızdan emin olun. Sadece çabucak işleri halletmek ve sorunları düzeltmek için forumdaki kodları körü körüne kopyalayıp yapıştırmayın.
Birçok deneyimli geliştiricinin çoğu zaman forumdaki insanlara cevap verme şekli, kopyala-yapıştır alışkanlığa sahip kişiler için zordur, çünkü yalnızca belirli bir konudaki MQL5 dokümantasyonuna link sağlayarak yanıtlar verirler (yazarın kendisi ilgili konuyu böylece inceleyebilir). Ayrıca, bu kötü alışkanlığa sahip kişiler forumdaki yorumlara otomatik olarak eklenen diğer ilgili faydalı linklerle de kesinlikle ilgilenmezler. Bunun nedeni, temel bilgileri tam olarak bilmediğimiz ve ortaya çıkan çıkan sorunlara ilişkin konuları da tam olarak anlamak istemediğimizdir.
NE KADAR DOĞRU: Sadece bir çözüm bulmakla kalmayıp her zaman anlamaya çalışmalısınız!
Temelleri tam olarak öğrendiğinizde, kodlama doğal ve otomatik hale gelecektir.
Kopyala-yapıştır alışkanlıkları sadece itibarınızı zedelemekle kalmaz, aynı zamanda çözdüğünden daha fazla sorun yaşamanıza da neden olur.
02: Sorununuzu hacklemeye çalışmayın
Sorununuza çözüm aramadan önce, ortaya çıkış nedenlerini bilmeniz gerekir. Bunları bilmek, neyi ve nasıl kodladığınızı tam olarak bilmemenizden dolayı sizden kaynaklanan sorunu çözmek adına forumda kod beklemek yerine, forumda doğru soruları sormanıza yardımcı olacaktır. Örneğin yine yukarıdaki örneğimi ele alalım: standart kütüphane aracılığıyla grafiklerle çalışma hakkında hiçbir şey bilmediğimden ve ortaya çıkan sorunun ortaya çıkış nedenlerini araştırmadan, grafik şablonunu değiştirmeyi umarak kodu bir yere kopyaladım - bu yüzden standart kütüphanenin çalışmadığını söyledim.
Bir sorunla veya hatayla karşılaştığınızda, çalışmayan kodu ve kütüphaneyi anladığınızdan emin olun. Bu bilgileri edinmenin MQL5'te birkaç yolu vardır, başlıcaları:
- MQL5 dokümantasyonu
- MQL5 forumu
Şanslıyız ki, tam burada, ihtiyacımız olan tüm bilgileri içeren ve İnternette herhangi bir yerde arama yapmamıza gerek olmayan mükemmel dokümantasyonlara sahibiz. Profesyonel programcılar dokümantasyonları bilir ve kullanır. Yeni başlayanlar içinse, onu nasıl hızlıca bulacağınızı yazacağım: MetaEditor'ı açın, ardından Yardım bölümüne gidin ve MQl5 Referansını seçin.
Kodunuzla ilgili ve kodunuzda bulunmayan her şeyi burada bulabilirsiniz. Sorunlarınız hakkında diğer geliştiricilerle konuşarak değerli bilgiler elde edebilirsiniz. Ancak benim yaptığım hatayı yapmayın, KODLARI KÖRÜ KÖRÜNE KOPYALAMAYIN!
"Gerçek bilgiye ve ustalığa götüren yol zanaatkarlık yoludur."
Nooblar, noob döngüsü adını verdiğim döngüde kaybolurlar.
03: Mükemmeliyetçilikten vazgeçin
"Mükemmel olacağına tamamlanmış olsun."
— Silikon Vadisi'ndeki popüler fikir
Tam olarak mükemmeliyetçilik yüzünden gelişmelerimi yayınlamakta kaç kez tereddüt ettiğimi anlatamam. Bu web sitesinde diğer kullanıcılarla paylaşabilmek için her zaman kutsal kaseyi (en iyisini) arıyordum. Paylaşacak bir şeyim varsa, onu paylaşmam ve kendi düşüncelerim tarafından engel olmamam gerektiğini anlamam biraz zaman aldı.
Hangisi daha iyi?
Gelecek birkaç yıl içinde yalnızca bir gösterge, Uzman Danışman, Kütüphane veya kod parçası yazmak mı yoksa üretken olmak ve bir yılda yüzlerce eksik sonuç çıkarmak mı?
Kendiniz için mükemmel değil, geliştirici arkadaşlarınız veya müşterileriniz için kaliteli kod yazın. İyileştirmeler gerekirse, kodu geliştirmek için her zaman zamanınız ve fırsatınız olacaktır; böylece, hızlı bir şekilde kod yazacak ve çok zaman kazanacaksınız.
Bu yaklaşım, günlük hayatta karşılaştığımız her şeyde gözlemlenebilir:
- Mobil uygulamalarımız sürekli olarak güncelleniyor
- Bilgisayar ve telefonlarımızın işletim sistemleri ve yazılımları da sürekli olarak güncelleniyor
- Hatta MQL5, Python vb. gibi programlama dilleri bile günbegün güncellenerek geliştiriliyor
Programlama dilleri ve çerçeveleri bile zaten güncelleniyorsa, ürün üzerinde çalışmaya devam etmenin ve geliştirmenin de normal olduğu ortaya çıkmaktadır.
Aynısı MQL5.com web sitesi için de geçerlidir; örneğin, Markette satılan ürünler de sürekli olarak güncellenmektedir.
Forumda, gönderinizi düzenleyebilir, yanıtınızı silebilir veya güncelleyebilir ve hatta kendi yorumunuzu dahi düzenleyebilirsiniz, bu nasıl bir çılgınlık!! , haha
04: Akıllı kod yazmaktan kaçının
"Hata ayıklama, kodu baştan yazmaktan iki kat daha zordur. Bu nedenle, kodu olabildiğince akıllı yazarsanız, tanım gereği hata ayıklamak için yeterince akıllı değilsiniz."
— Brian Kernighan
Dokümantasyonlar göz önünde bulundurularak iyi yazılmış bir kod zaten yeterince iyidir!
Okunması ve anlaşılması kolay, iyi, temiz ve basit bir kod yazın. Siz dahil hiç kimse üç ay sonra akıllı kodunuzdan memnun olmayacak. Pek çok yeni başlayan için akıllı kodlarla çalışmak son derece zordur (freelance geliştiriciler bu dediğimi onaylayacaklardır). Hiç bir Uzman Danışmanı başka birinin koduna göre düzeltmeniz ya da Kod Kütüphanesinden yeniden oluşturmanız gerekti mi? Bunları yapabilmek bazen çok zor olabilir çünkü ilgili kodları anlamak çok karmaşıktır. Beni yanlış anlamayın, kimseyi yargılamıyorum ve kesinlikle karmaşık sorunları çözmek için basit kod yazmayı teşvik etmiyorum; tek söylemek istediğim, karmaşık kodlarla bile çalışmayı her zaman kolaylaştırabileceğinizi belirtmek istiyorum (sanırım yaratıcılık bu). Temiz kodun yardımcı olabileceği yer burasıdır.
Temiz kod yazmak için bazı ipuçları:
- Stilist uygulayın
- Tutarlı olun
- Yorumları kullanın
- DRY prensibini takip edin
Stilist uygulayın:
Örnek olarak pozisyonları türlerine göre sayan bir fonksiyon kullanacağım.
int CountPosByType(ENUM_POSITION_TYPE type){ int counter = 0; for (int i=PositionsTotal(); i>=0; i--) if (m_position.SelectByIndex(i)) if (m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type) { counter++; } return counter; }
Fonksiyonun anlaşılması oldukça kolaydır, ancak yukarıdaki temiz kod ipuçlarını yerine getirmiyor, bu yüzden önce stilist uygulayacağım. Bunu yapmak çok basit - MetaEditor'da saç tarağı gibi görünen mavi düğmeye tıklamanız yeterlidir.
Stilist uyguladıktan sonra kod artık şu şekilde görünüyor:
int CountPosByType(ENUM_POSITION_TYPE type) { int counter = 0; for(int i=PositionsTotal(); i>=0; i--) if(m_position.SelectByIndex(i)) if(m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type) { counter++; } return counter; }
Bakın, sadece stilist uygulayarak kodun okunabilirliğini iyileştirdik. Kodun okunabilirliğini artırmak için illa ki kodun kendisini değiştirmeniz gerekmez. Bu, okunmasını ve bakımını kolaylaştıran temiz kod yazmaya yönelik ilk adımdır. Kod kolayca okunabilirse, kolayca da düzenlenebilir. Nokta.
Tutarlı olun:
Farklı seviyelerdeki fonksiyonlarda çalışmak için hemen hemen aynı işler adına kaç kez çok fazla değişken yarattığımı size söyleyemem. Ama bunun yerine, sadece bir global değişken yaratmak gerekliydi. Ek olarak, sizin için daha fazla kolaylık sağlaması adına, bir süre sonra bile fonksiyonların ne yaptıklarını kolayca anlayabilmeniz için basit, anlaşılır ve mantıksal fonksiyon adları kullanmanızı öneririm. Bu, üretkenliğinizi önemli ölçüde hızlandıracaktır; bir sonraki geliştirmeleriniz için gerekli olan fonksiyonları zaten önceki geliştirmelerinizde de kullandıysanız, bu defa bu gerekli tüm fonksiyonları yeniden oluşturmanız gerekmez - böylece, bu fonksiyonları yeni projelerinize kolayca kopyalayabilirsiniz.
Fonksiyonu şu şekilde adlandıralım:
int CountPositionsByType(ENUM_POSITION_TYPE type)
Kodumuz konusunda tutarlı olduğumuz için, artık aramaya gidebilir ve dosyalarda ara seçeneğiyle kodumuzu arayabiliriz.
Buradan, tüm Uzman Danışmanlar ve göstergelerdeki fonksiyonları arayabilirsiniz, bu, işi basitleştirir. Bir dahaki sefere tekrar bir fonksiyona ihtiyacınız olduğunda, kodu bulunduğu dosyalardan hızlıca kopyalayabilirsiniz.
Tutarlı kod yazmanın en iyi yolu OOP (Nesne Yönelimli Programlama) kullanmaktır.
Tutarlı kodların kullanılması, kod yazma sürecini basitleştirir ve hızlandırır, ayrıca hata ayıklamanın yalnızca bir yerde yapılmasını da mümkün kılar.
Yorumları kullanın:
Yeni başlayanlar için yorumların kullanılması önemsiz olarak görülebilir. Ancak, yorumlar performansınızı önemli ölçüde etkileyebilir. Yalnızca kodun okunabilirliğini iyileştirmekle kalmaz, aynı zamanda örneğin bir fonksiyonun neyle ilgili olduğu, ne yaptığı konusunda bir hatırlatıcı olarak da hizmet edebilirler.
Kodumuza kodun neyle ilgili olduğunu açıklayan bir yorum ekleyerek sayacı tekrar tanımlayalım:
int counter = 0; // pozisyon sayısını kaydetmek için değişken
Bir dahaki sefere ilgili sayaca erişmek istediğimizde şu şekilde olacak:
Koda yorum eklemenin en güzel yanı bir süre sonra bile bir değişkenin veya hatta bir kod parçasının ne anlama geldiğini kolayca hatırlayabilmenizdir. Bu, özellikle kodunuzda neyle ilgili oldukları kolayca unutulabilecek, kafanız karışabilecek çok sayıda değişken olduğunda çok kullanışlıdır.
DRY prensibini takip edin:
DRY - Don't Repeat Yourself (Kendini Tekrar Etme). OOP bu prensip konusunda çok yardımcı olur. Hemen hemen aynı işi yapan birçok fonksiyon oluşturmak gerekli değildir. Örneğin, pozisyonları türlerine göre sayan zaten bir fonksiyonunuz varsa, bir türde pozisyon var olup olmadığını kontrol eden bir fonksiyona sahip olmanız gerekmez.
05: Mümkün olan en kısa kodu yazmaya çalışmayı bırakın
"Önce okunabilirlik, sonra her şey."
Bazı geliştiriciler, iyi kodun yalnızca, mümkün olan en az sayıda satır ve satır başına mümkün olan en az sayıda karakter içeriyorsa elde edildiğine inanır. Ama bu doğru değildir.
Yazılan kod onlarca, hatta yüzlerce kez okunacaktır, bu nedenle uzun olsa dahi okunabilir ve anlaşılır kod yazmaya çalışmalısınız.
Bazen kodun kısalığı tembellikle ilişkilendirilir (ben böyleydim). Örneğin, bir freelance siparişi veya başka herhangi bir görevi tamamlamak için gereken minimum çözümü uygularız.
Kod anlaşılır olmalıdır. Kodunuzda girdi parametrelerinin açıklayıcı olduğundan ve tüm istisnaların doğru bir şekilde ele alındığından emin olun. Böylece, kullanıcıyı hatalı parametreler hakkında bilgilendirirsiniz (örneğin bir girdi parametresi sıfıra ayarlanırsa kullanıcıyı uyarmak gibi, çünkü ilgili girdi parametresi olmadan program yanlış çalışabilir).
Söylemek istediğim şey şu:
Hata kodları, geri dönüş değerleri, derleme hataları ve istisnalar kullanıcılar için değil sizin bilmeniz içindir. Bu nedenle, kullanıcılar için bildirimler, grafikte yorumlar ve diğer bilgileri koda eklediğinizden emin olun. Aynı zamanda, kullanıcının yalnızca kendisi için özel olarak tasarlanmış ve sorunları çözmeye yardımcı olacak bilgileri de alacağından emin olun.
Tüm bilgilendirme fonksiyonlarını her seferinde sıfırdan uygulamak gerekli değildir - daha kolay bir yol vardır. Tüm bu fonksiyonları ayrı include dosyalarında saklayarak koda dahil edebilir veya kopyalayıp yapıştırabilirsiniz.
Sonuç
İyi ve kullanışlı programlama kurallarına uymak her zaman kolay olmayabilir. Ancak onları bir alışkanlık haline getirirseniz, programlama kariyeriniz boyunca sizinle birlikte olacaklardır.
Okuduğunuz için teşekkürler!
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal makale: https://www.mql5.com/en/articles/9643





- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz