Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Kod taşınabilir değil, özelliği bu. Taşınabilir olması amaçlanmamıştır. Başka bir amacı var. Değişkenlerin küresel kapsamı, karmaşık mekanizmaların çalışması için güçlü bir araçtır. Sadece nasıl kullanılacağını bilmeniz gerekiyor. Ve bana bazı gizli hatalardan ve buglardan bahsettiklerinde kayboluyorum. Değişkenlerin küresel görünürlüğü ile ilgili hiçbir zaman hatam olmadı. Hiç kelimeden.
Global değişkenlerle ilgili problem, eğer proje yeterince büyükse ve bu değişkenlerin durumu kodun birçok bölümünden değişiyorsa, o zaman hata aramanın oldukça zahmetli olmasıdır.
Misal. Global bir değişkenin değerinin olması gerektiği gibi olmadığı gerçeğiyle ilgili bir hata bulundu. Projede zaten birkaç düzine dosya ve 100500 satır kod var. Bu değişkenin kodda kaç yerde değiştiğini kimse hatırlamaz. Sonuç olarak - bir kutu kahve ve kafanız klavdayken sağlıklı bir uyku.
Ve şimdi aynı şey, ama OOP. Kodu doğru yazdık ve tüm alanlar özel. Buna göre sadece class metotlarında bizimle direkt, dışarıdan ise sadece Set metodu ile değişir. Buna göre Set yöntemine kesme noktaları asıyoruz ve alanın değiştiği sınıfta kaç tane yöntemimiz var ve nerelerde değişiklik yapıldığını ve nerede yanlış değiştirildiğini sakince takip ediyoruz.
Değişkenlerin küresel görünürlüğü ile ilgili hiçbir zaman hatam olmadı. Hiç kelimeden.
Seni bariz olana nasıl ikna edeceğimi bile bilmiyorum, ama muhtemelen buna değmez, bunun için bana para ödemiyorlar mı?
Ne için çabalıyorsun? Eh, övülmek istiyorsanız - devam edin:
Peter! Güzel iş böyle devam et!
))))
Global değişkenlerle ilgili problem, eğer proje yeterince büyükse ve bu değişkenlerin durumu kodun birçok bölümünden değişiyorsa, o zaman hata aramanın oldukça zahmetli olmasıdır.
Misal. Global bir değişkenin değerinin olması gerektiği gibi olmadığı gerçeğiyle ilgili bir hata bulundu. Projede zaten birkaç düzine dosya ve 100500 satır kod var. Bu değişkenin kodda kaç yerde değiştiğini kimse hatırlamaz. Sonuç olarak - bir kutu kahve ve kafanız klavdayken sağlıklı bir uyku.
Ve şimdi aynı şey, ama OOP. Kodu doğru yazdık ve tüm alanlar özel. Buna göre sadece class metotlarında bizimle direkt, dışarıdan ise sadece Set metodu ile değişir. Buna göre Set yöntemine kesme noktaları asıyoruz ve alanın değiştiği sınıfta kaç tane yöntemimiz var ve nerelerde değişiklik yapıldığını ve nerede yanlış değiştirildiğini sakince takip ediyoruz.
Seni bariz olana nasıl ikna edeceğimi bile bilmiyorum, ama muhtemelen buna değmez, bunun için bana para ödemiyorlar mı?
Ne için çabalıyorsun? Eh, övülmek istiyorsanız - devam edin:
Peter! Güzel iş böyle devam et!
))))
Belki de sadece OOP ile değil, harika projeler yazabileceğinizi anlamak. Ve sadece OOP'ye sahip olmak bir geliştiricinin işareti değildir. OOP ile birçok sorunu çözmenin mümkün olduğunu iddia etmiyorum. Ancak başka yaklaşımlar da var.
bu OOP ile ilgili değil, kod yazmanın ilkeleri hakkında, bundan ikinci kez bahsediyorum ve @Vladimir Simakov yukarıda bir örnek yazdı
değişkenlerin küresel görünürlüğünü kullanın - evet, soru yok, kimse yasaklamıyor, yapabilirsiniz - ama sessizce, kimse görmeden! )))
ama işte bu yüzden sürekli kullanılan program yazma tarzı kötüdür ve ne kadar çok kod olursa, bu kötülük o kadar fazla olur! - bu kadar açıklanmış mı? )))
Not: bir kontrol çekimi daha - MQL yardımına bakın, tüm işlevlerin ayrı tamamlanmış bağımsız bloklar tarafından gerçekleştirildiğini görüyor musunuz? - geçirilen parametreler = alınan sonuç! Metaquot programcılarının her şeyi yine yanlış yaptığını mı düşünüyorsunuz? fonksiyonları yazmak için bazı ücretsiz stiller kullanmanız gerekiyor - burada global görünürlükte açıklayacağız, ancak burada kullanıcı fonksiyonu çağıracak ve sonucu alacak! )))) - prosedürel stil (her alt program tam bir mantıksal blok olduğunda) doğru koddur, kodları doğru yazın! doğru değil ... peki, "çabuk ihtiyacınız olduğunda" gelecek;)
Pratikten. Projemde 100'den fazla bağlantılı dosyam var. Bazıları 2000'den fazla kod satırına sahiptir. Genel değişkenler baştan sona kullanılır. Özellikle küresellikleriyle ilgili herhangi bir hata olmadı. Belki de alışıyorumdur?
Sadece çok iyi bir hafızan var. Herkes o kadar şanslı değil. Bugün hangi değişkenleri tanıttığımı zar zor hatırlıyorum. Ve ne bir hafta önce - sadece unuttun. Ancak bu bir sorun değil, hepsi yereldir ve herhangi bir nesnenin alanlarına erişim yalnızca ilgili işlevlerden geçer. OOP, birçok noktayı hatırlamama izin veriyor, zaten bir kereden fazla söyledim - ideal olarak, kodun herhangi bir yerinde, yalnızca gerekli olan sizin için mevcut olmalıdır ve tek bir değişken daha fazla olmamalıdır - yani dilerseniz bile, siz olmaması gerekeni değiştiremez. Ve gerçekten ihtiyacınız olduğunda , değişkene erişmek için, neden erişiminiz olmadığını bulmanız gerekir - bu yalnızca bir gözden kaçırmadır veya çok daha sık olur, bu değişkeni değiştirmek için ek eylemlere ihtiyaç duyar. . Eğer hemen elinizin altında olsaydı, onları unuturdunuz ve daha sonra uzun bir süre programın neden istediğiniz gibi çalışmadığını veya çalışmadığını anlardınız.
Hiçbir şey almıyorum. Belki de sadece OOP ile değil, harika projeler yazabileceğinizi anlamak. Ve sadece OOP'ye sahip olmak bir geliştiricinin işareti değildir. OOP ile birçok sorunu çözmenin mümkün olduğunu iddia etmiyorum. Ancak başka yaklaşımlar da var.
OOP'nin başka iyi yanı, yaşam boyu yanınızda olan ve bu hayatı kolaylaştıran sınıf kitaplıklarını ve gerçekten evrensel olanları yavaş yavaş ediniyor olmanızdır.
Gerçek bir projeden, gerçekten işe yarıyor. Burada her şey sorunsuz, sadece mevcut siparişlerin / pozisyonların sayısını ve durumunu kontrol etmeniz gerekiyor. Bu fonksiyon sadece pozisyonun/emrin kapatılmadığını/iptal edilmediğini kontrol eder ve kapandıktan sonra listeden silinmesini sağlar.
gPos burada CList<CTrade> gPos
CList ve CTrade standart kitaplıktan değildir.
CTrade - kendi CPosition kitaplığımdan miras alır.
Aslında, yalnızca proje kodunun okunabilirliğini sağlamak için gerekli olan tüm CTrade aşağıdadır:
Emirler/pozisyonlarla çalışmanın tüm uygulaması, platformlar arası kitaplık dosyası CPosition'da gizlidir.Tartışmaya katıldığınız için herkese teşekkürler. İki yaklaşımın olanaklarını gerçekten karşılaştırmak için OOP'yi anlamaya çalışacağım. OOP'nin sağlayabileceği hiyerarşi ile ilgilendim ve faydaları sözdiziminin altına gömülmezse, kesinlikle hizmete alacağım.
YouTube yardımı. Çok var. Özellikle de arkadaş olduğun İngilizcede.
Kusura bakmayın Peter, 45 dakika. İlk aşamada, bu yoldaşın neden bahsettiğini anlamak çok önemlidir. Belki birçoğu onunla tartışacaktır, ancak genel olarak haklıdır:
YouTube yardımı. Çok var. Özellikle de arkadaş olduğun İngilizcede.
Kusura bakmayın Peter, 45 dakika. İlk aşamada, bu yoldaşın neden bahsettiğini anlamak çok önemlidir. Belki birçoğu onunla tartışacaktır, ancak genel olarak haklıdır: