Mql4 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 12

 
Ihor Herasko :

Birçok yazılım şirketinde, bu tür bir kod için tüm parmaklar dövülür. Her zaman ve her yerde gerekli olan ilk şey, "ekstra okuma"nın olmamasıdır. Örneğin, fonksiyon girilirken koşul kullanılırsa:

sonra şunu yazmanız önerilir:

Bu yaklaşım yuvalama koşullarında çok yardımcı olur.

Bir kez daha - parmaklarınızı çırpın. Sonuçta, kimse OrderType() işlevinin ne döndürdüğünü kontrol etmedi. Ya da belki -1 veya 6 döndü? Bu, her zaman uzak durmanız gereken bir şey olan derleyici özelliklerini bağlamanın bir örneğidir. Kendiniz birçok platformlar arası kod örneği veriyorsunuz. Öyleyse neden onu bu durumda bırakıyorsun? MQ'dan yeni bir derleyici çıkacak ve bu kod artık düzgün çalışmayacak.

Aynı duruma devam etmekle. Tür kodu:

okumaktan daha zor:

Ancak her iki durumda da yürütme verimliliği aynıdır.

Bu tam bir teneke:

 if (! OrderSelect (i, SELECT_BY_POS ))
   continue ;

if ( OrderSymbol () != Symbol ())
   continue ;

if ( OrderMagicNumber () != m_nMagicNumber)
   continue ;
 
Vitaly Muzichenko :

Bu tam bir teneke:

kalay nedir? Bir satırlık süper ifade - teneke burada. Bir kişinin bir bilgisayar olmadığını hemen anlaması için durumun daha fazla işlenmesine gerek yoktur. Bir bilgisayardan farklı olarak, bir kişi tüm ifadeyi sonuna kadar hesaplamalı ve daha sonra yalnızca ilk bileşeninin zaten yanlış bir sonuca yol açtığını anlamalıdır.

Her şeyin basit koşullara göre düzenlendiği kayıtta böyle bir hesaplamaya gerek yoktur: ilk koşul karşılanmadı - ayrıldılar.

Satırlardan değil zamandan tasarruf etmeniz gerekiyor. Burada aynı zamanda, aslında işlemlerin ve koşulların birbirine paketlenmesi olan kodun kısalığını da savunuyorlar. Eh, bu paket performansta somut bir artış sağlar, ben de anlarım. Ama sonuçta - hayır. Maksimum büyüme ölçüm hatası dahilindedir. İnsanlar satırları kaydetmekle ilgileniyorlar, ancak kodu anlamak ve hata ayıklamak için harcanan zamandan tasarruf etmeyi düşünmüyorlar.

 
Ihor Herasko :

kalay nedir? Bir satırlık süper ifade - teneke burada. Bir kişinin bir bilgisayar olmadığını hemen anlaması için durumun daha fazla işlenmesine gerek yoktur. Bir bilgisayardan farklı olarak, bir kişi tüm ifadeyi sonuna kadar hesaplamalı ve daha sonra yalnızca ilk bileşeninin zaten yanlış bir sonuca yol açtığını anlamalıdır.

Her şeyin basit koşullara göre düzenlendiği kayıtta böyle bir hesaplamaya gerek yoktur: ilk koşul karşılanmadı - ayrıldılar.

Çizgilerden değil zamandan tasarruf etmeniz gerekiyor. Burada aynı zamanda, aslında işlemlerin ve koşulların birbirine paketlenmesi olan kodun kısalığını da savunuyorlar. Bu paket üretkenlikte somut bir artış sağlasaydı, yine de anlarım. Ama sonuçta - hayır. Maksimum büyüme ölçüm hatası dahilindedir. İnsanlar satırları kaydetmekle ilgileniyorlar, ancak kodu anlamak ve hata ayıklamak için harcanan zamandan tasarruf etmeyi düşünmüyorlar.

Buna okunması zor bir süper ifade demezdim.

 if (! OrderSelect (i, SELECT_BY_POS ) || OrderSymbol () != Symbol () || OrderMagicNumber () != m_nMagicNumber)
   continue ;

Evet ve "kısa hesaplama döngüsü", herhangi bir zihinsel çaba gerektirmeden bir koşulu okurken "otomatik olarak" dikkate alınan temel bir şeydir.

Yine, tamamen öznel bir görüş.

 
Vladislav Boyko :

Bunun bir alışkanlık meselesi olduğunu kendin kabul ettin.

Ve bir kez daha tekrar edeceğim. Kimseyi alışkanlıklarını değiştirmeye, keçeli kalemlerin tadında farklılık aramaya çağırmıyorum.

Igor Makanu :

daha önce de belirtildiği gibi - bir zevk meselesi, ama bildiğiniz gibi: tüm keçeli kalemlerin tadı farklıdır)))

Keçeli kalemler sadece renk olarak farklıdır, ancak tatları aynıdır.
 
Vladislav Boyko :

Buna okunması zor bir süper ifade demezdim.

Ve burada bir şey söylemeye gerek yok. Şimdiye kadar, rakiplerim (siz dahil), bu ifadenin okunmasının satır kesmeden daha kolay olduğu gerçeği lehinde tek bir argüman vermediler.

Benden üç argüman verildi:

  1. Uzun dize görünüme sığmıyor. En azından minimum kafa dönüşü gereklidir (işlem süresi artar). Kısa çizgi ve onu takip eden böyle bir maliyet gerektirmez.
  2. Uzun bir çizgide, hata yapmak ve fark etmemek daha kolaydır. Satır sonları ile bu tür bir hatanın meydana gelme olasılığı daha düşüktür.
  3. Uzun bir dize hata ayıklanamaz. Hat sonu, lütfen.
Sübjektif bir tercih yok. Her şey pratik anlamla onaylanır ve daha fazlası değil. Evet, birinin sol kulağını sağ topukla kaşıması daha uygundur, ancak bu, bu yaklaşımın pratik olduğu anlamına gelmez. Ve doğada her şey pratikliğe tabidir ve daha pratik olanlar hayatta kalır.
 
Ihor Herasko :

Ve burada bir şey söylemeye gerek yok. Şimdiye kadar, rakiplerim (siz dahil), bu ifadenin okunmasının satır kesmeden daha kolay olduğu gerçeği lehinde tek bir argüman vermediler.

Benden üç argüman verildi:

  1. Uzun dize görünüme sığmıyor. En azından minimum kafa dönüşü gereklidir (işlem süresi artar). Kısa çizgi ve onu takip eden böyle bir maliyet gerektirmez.
  2. Uzun bir çizgide, hata yapmak ve fark etmemek daha kolaydır. Satır sonları ile bu tür bir hatanın meydana gelme olasılığı daha düşüktür.
  3. Uzun bir dize hata ayıklanamaz. Hat sonu, lütfen.
Sübjektif bir tercih yok. Her şey pratik anlamla onaylanır ve daha fazlası değil. Evet, birinin sol kulağını sağ topukla kaşıması daha uygundur, ancak bu, bu yaklaşımın pratik olduğu anlamına gelmez. Ve doğada her şey pratikliğe tabidir ve daha pratik olanlar hayatta kalır.

İgor, gözler yuvalarda hareket etmiyorsa ve kafanı çevirmen gerekiyorsa, şöyle yazabilirsin:

 if ( OrderSelect (i, SELECT_BY_POS )
&& OrderSymbol () == _Symbol
&& OrderMagicNumber () == m_nMagicNumber)
 {
   // Делаем что надо...
 }

Ve kaç tane kısa çizgiyle hatayla karşılaştım................... Görünüşe göre hataların sayısı ve olasılığı satırın uzunluğuna bağlı değil.

Kişi yalnızca hata ayıklama konusunda hemfikir olabilir. Ancak alışkanlık, hata ayıklayıcının mql4'te ortaya çıkmasından önce geliştirildi ve herkes alışkanlıklarını değiştiremez.

 
Alexey Viktorov :

İgor, gözler yuvalarda hareket etmiyorsa ve kafanı çevirmen gerekiyorsa, şöyle yazabilirsin:

Ve kaç tane kısa çizgiyle hatayla karşılaştım................... Görünüşe göre hataların sayısı ve olasılığı satırın uzunluğuna bağlı değil.

Kişi yalnızca hata ayıklama konusunda hemfikir olabilir. Ancak alışkanlık, hata ayıklayıcının mql4'te ortaya çıkmasından önce geliştirildi ve herkes alışkanlıklarını değiştiremez.

Yapabilirsiniz, ancak bu stille, programın bir bloğunu görüntülemek için ekranın 2 kaydırmasını yapmanız gerekir ve bu, tüm kodu bir ekranda görmekten daha kötüdür. (Seni ilgilendirmez bu sadece bir örnek)

 
fxsaber :

Ne yazık ki, bu efsane forum tarihinde herhangi bir onay bulamıyor. Ayrıca, geliştiriciler, bu tür değişikliklerin temelde olamayacağı konumlarını sürekli olarak açıkça belirtirler.

Öyleydi. Sıralama etkilendi.

Tartışma muhtemelen eski metatrader4.com forumunda yapıldı (yakın zamanda açıldı, şimdi mql5.com'a yönlendiriyor).

 
Andrey Khatimlianskii :

Öyleydi. Sıralama etkilendi.

Tartışma muhtemelen eski metatrader4.com forumunda yapıldı (yakın zamanda açıldı, şimdi mql5.com'a yönlendiriyor).

Öyleydi, öyleydi. Tıpkı şimdi olduğu gibi, geçmiş siparişlerin sayısında olduğu gibi, "Bugün"ü ayarlarsanız, OrdersHistoryTotal() bugün kapanan kapatılanların sayısını döndürür. "Geçmiş" sekmesinde bazı eski siparişler görüntülenmiyorsa, biletle bile mevcut değildir.

 
Alexey Viktorov :

Öyleydi, öyleydi. Tıpkı şimdi olduğu gibi, geçmiş siparişlerin sayısında olduğu gibi, "Bugün"ü ayarlarsanız, OrdersHistoryTotal() bugün kapanan kapatılanların sayısını döndürür. "Geçmiş" sekmesinde bazı eski siparişler görüntülenmiyorsa, biletle bile mevcut değildir.

Sıralamayla ilgili. O zaman, zamana göre sıralanmamışlarsa, dizine göre sonuncuyu bulmak mümkün değildi - sıralananların sonuncusu bulundu.

Hikayenin derinliği artık seçilen sekmeye bağlı değil mi? Bence bağlıdır, bağlıdır.