Hatalar, hatalar, sorular - sayfa 1439
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Deneyimlerimin gösterdiği gibi, eğer bir programcı indeks 20'de 10 eleman içeren bir diziye bir şey yazarsa, bu büyük olasılıkla bir hata yaptığı anlamına gelir ve programın bir hata vermesi ve dizinin boyutunu büyütmemesi, böylece dizinin boyutunu gizlememesi gerektiği anlamına gelir. şüpheli eylem.
Tüm bu "boyut ayarlı diziler", kolaylıktan ziyade potansiyel hataları gizleme konusunda daha fazla sorun yaşıyor. Ayrıca, bir dizinin boyutunu takip etmek zorunda olmamak da potansiyel olarak tehlikeli bir uygulamadır ve düzeltilmesi zor hatalara yol açar.
Bana öyle geliyor ki, ya da söz konusu dillerle çalışmadınız mı? Eklenen elemanın indeksinin belirtilmesine gerek yoktur, otomatik olarak atanır ve dizi boyutu da artar. Programcının bu işlem sırasında dizinde hata yapma şansı yoktur.
Benzer davranışı sınıflarla uygulayabilir, pop, shift, unshift vb. ile ilgili işlevler ekleyebilirsiniz. Ve her kodda %10..20 fonksiyon kullanılmasına rağmen, bir sınıf arabasını koddan koda sürüklemek. Bu doğru çözüm gibi geliyor mu? Bence doğru bir çözüm örneği - ObjectsDeleteAll işlevine önekle silme yeteneği eklemek - bu, daha yüksek seviyeli programlama yönünde başka bir mikrondur - ve çoğu kodlayıcı için, karşılık gelen kendi kendine yapılan işlev çöp kutusuna uçtu . Ne yazık ki dizilerle böyle bir şey görmemiz pek mümkün değil..
И таскать телегу классов из кода в код, при том что в каждом коде из неё используются %10..20 функций.
"Akıllı dizi" sınıfları yazmaya gerek yok, bunlar zaten MetaQuotes Standart Kitaplığındalar , Arry sınıf ailesine bakın
Bana öyle geliyor ki, ya da söz konusu dillerle çalışmadınız mı? Eklenen elemanın indeksinin belirtilmesine gerek yoktur, otomatik olarak atanır ve dizi boyutu da artar. Programcının bu işlem sırasında dizinde hata yapma şansı yoktur.
Uuuuu ... Bir programcının hata yapmak için kaç şansı vardır. Herhangi bir karmaşık programın nasıl çalıştığına dair tüm seçenekleri hesaba katabileceğinizi düşünmemelisiniz.
Tüm bu "varsayılan eylemler", karmaşık nesnelerin özellikleri olmalıdır. Sadece sınıflar. Değişkenler, diziler ve basit yapılar gibi basit nesneler, mümkün olduğunca az "varsayılan" özelliğe sahip olmalıdır.
Örneğin, oluştururken - tanımsız bir değer saklamalı ve sıfır olmamalıdır.
Benzer davranışı sınıflarla uygulayabilir, pop, shift, unshift vb. ile ilgili işlevler ekleyebilirsiniz. Ve her kodda %10..20 fonksiyon kullanılmasına rağmen, bir sınıf arabasını koddan koda sürüklemek. Bu doğru çözüm gibi geliyor mu?
Bu mantık açısından doğru çözümdür. Bu tür sınıflarla çalışırken davranışları şeffaftır.
Ve "bir sınıf arabası taşımak" hakkında - kodlama yaparken, onları etrafta taşımazsınız, sadece kütüphaneyi dahil edin. Ve derlerken, normal bir bağlayıcı, kitaplıktaki tüm yöntemleri arka arkaya yürütülebilir modüle değil, yalnızca kullanılanlara itmelidir.
Bence doğru bir çözüm örneği - ObjectsDeleteAll işlevine önekle silme yeteneği eklemek - bu, daha yüksek seviyeli programlamaya yönelik başka bir mikrondur - ve çoğu kodlayıcı için, karşılık gelen kendi kendine yapılan işlev çöp kutusuna uçtu. Ne yazık ki dizilerle böyle bir şey görmemiz pek mümkün değil..
Ve bence - bu da aynı nedenle yanlış bir yaklaşım. İşlev, uygulamasının mantığına uymayan, kendisi için olağandışı görevlerle yüklüdür.
Bana göre doğru çözüm, grafikteki nesnelerin bir listesini tutan ve işlevler çağrıldıkça gerekli olanları kaldıran bir sınıf yöneticisidir. İsim önekleri, bana öyle geliyor ki, yalnızca bir kişinin nesne hakkında bazı bilgileri anlamasını sağlamaya hizmet etmelidir. Ve silme - hiçbir şekilde nesnenin adına değil, bu adı bir diziye kaydetmeye dayanmalıdır.
sürüm 5.0 yapı 1150, demo
Terminalinizi güncelleyin (MetaQuotes-Demo demo sunucusuna bağlanmanız gerekir). Mevcut yapı:
İşte bir komut dosyası:
şu sonucu verir:
Terminalinizi güncelleyin (MetaQuotes-Demo demo sunucusuna bağlanmanız gerekir). Mevcut yapı:
İşte bir komut dosyası:
şu sonucu verir:
Teşekkürler, ancak bayrağın neden 0 değerine sahip olduğunu bilmiyorum, sanki hiçbir şey değişmemiş gibi