Hatalar, hatalar, sorular - sayfa 1332

 
Alexey Navoykov :
Tavsiyeniz pratikte anlamsız. Hiç kimse özellikle aynı isimleri vermez. Yerel işlevler kodu kendi ayrı yaşamını yaşar. Ve harici program - kendi. Aynı zamanda, dış değişkenlerin adları zamanla değişebileceği gibi yeni dış değişkenler de eklenebilir. Ve bundan sonra birdenbire yüzlerce fonksiyondan birinde aynı ada sahip yerel bir değişken olacaksa , global değişkeni yeniden adlandırmanın neden gerekli olduğunu düşünüyorsunuz? Geliştiricilerin hataları için bahane aramayın.

Geliştiricilerin hataları için bir bahane aramadım, ancak bir projede çalışırken giriş parametrelerinden sorumlu değişken adlarını kullanmazsanız bu hatayı aşmak kolaydır. Sadece giriş parametrelerindeki adı değiştirin, giriş parametrelerinde yüzlerce değişkeniniz olduğundan şüpheliyim ve tüm kodu düzenlemeniz gerekecek :) yazılım giriş noktasında, kural olarak, kodun ana kısmı yazılır ve o kadar büyük değil, her şeyişlev çağrıları (yöntemler) ile yapılır. Ve işlevler (yöntemler) için, işlevin giriş parametrelerinde hangi değişken adının iletildiği arasında hiçbir fark yoktur.

Eğer fonksiyonlarda global değişkenlerin kullanıldığı bir kod yazarsanız tabii ki çok fazla edit yapmak zorunda kalırsınız ama böyle bir kod kesinlikle geleceğe bakmadan oluşturulmuş, modernize etmek gerçekten çok zor.

Geliştiriciye (MetaQuotes) tüketici görünümüyle bakarsanız, elbette her şeyi aynı anda istersiniz :) İş kolaylığı için terminalin çapraz platform olmasını istiyorum, ancak yalnızca bir tane olacak böyle bir isteğe cevap verin - ya mevcut olanı kullanın ya da yürüyün :)

 
Konstantin Karpov :

Sadece giriş parametrelerindeki adı değiştirin ...

Anlamsız bir bakışın var. Öyleyse al ve değiştir... Sonra koda, yerel değişkenin adla eşleşeceği ve tekrar değişeceği başka bir işlev eklenecek, değil mi? Harici bir değişkenin adı sizin için sadece bir harf kümesi değildir, aynı zamanda belirli bir anlam taşır. Bazen onun için özlü ve geniş bir isim seçerek düşünmeniz gerekir. Ve değişimden bahsediyorsun. Evet ve tüm önceden ayarlanmış ayarlar ile test cihazı ve optimize edici, ad değiştirilirken bu parametre için başarısız olur.

Kendimi tekrar edeceğim, yerel kod kendi hayatını yaşıyor ve buna kesinlikle uyum sağlamaya gerek yok. Diyelim ki dışarıdan bir yerden belirli bir fonksiyon eklediniz, belki onu yazmadınız bile, yani oradaki yerel değişkenlerin isimleri kesinlikle her şey olabilir.

 
Alexey Navoykov :

Anlamsız bir bakışın var. Öyleyse al ve değiştir... Sonra koda, yerel değişkenin adla eşleşeceği ve tekrar değişeceği başka bir işlev eklenecek, değil mi? Harici bir değişkenin adı sizin için sadece bir harf kümesi değildir, aynı zamanda belirli bir anlam taşır. Bazen onun için özlü ve geniş bir isim seçerek düşünmeniz gerekir. Ve değişimden bahsediyorsun. Evet ve tüm önceden ayarlanmış ayarlar ile test cihazı ve optimize edici, ad değiştirilirken bu parametre için başarısız olur.

Kendimi tekrar edeceğim, yerel kod kendi hayatını yaşıyor ve buna kesinlikle uyum sağlamaya gerek yok. Diyelim ki dışarıdan bir yerden belirli bir fonksiyon eklediniz, belki onu yazmadınız bile, yani oradaki yerel değişkenlerin isimleri kesinlikle her şey olabilir.

Uygun gördüğünüzü yapın, ancak büyük projeler yazmamış olmanız çok muhtemeldir.

İşlevlerimin tanımlarına bakmamın bir anlamı yok, çünkü Global ve yerel değişken adlarını bildirme tarzında net bir ayrımım var. Dolayısıyla global ve yerel değişken isimlerinin çakışması gibi sorunlarla karşılaşmıyorum. Ana şey, işlevlerin mantıklarını çarpışma olmadan çalışmasıdır. Sizin durumunuzda, büyük bir AMA var, yerel bir değişkenin adıyla aynı global değişken adına sahipseniz, o zaman zaten toplamaya başladığınız sürprizleri bekleyin.

Örnek olarak, yerel bir değişken adına ek bir _ karakteri koyun, örneğin _iCount. Bu durumda, değişken isimleri ile asla problem yaşamazsınız, çünkü bana ikinci kez açıklamaya çalıştığınız şey yerine getirilecek - değişkenler, görünürlüklerinin yerel bölgesinde, oluşturuldukları yerde yaşıyor. Ve bu durumda hiçbir global değişken, isimlerde belirsizliğe neden olmaz. Ve bu konudaki anlaşmazlığımızı kapatacağız.

 

Bir önceki mesajıma dönüyorum. MT4/845, Windows7/64 bit, komut dosyası:

 #property strict

double d1 = 2.009745110811111111111111111 ;
double d2 = 3.654 ;
double d3;
//---
void OnStart ()
  {
   d3=d1/d2;
   Print ( "AA: d3 = " ,d3);
   Print ( "BB: d3 = " , DoubleToString (d3));
   Print ( "CC: d3 = " , DoubleToString (d3, 8 ));
   Print ( "DD: d3 = " , DoubleToString (d3, 9 ));
   Print ( "EE: d3 = " , DoubleToString (d3, 10 ));
}

Sonuç:


Yönetim, DoubleToString'e , bu işlevin kayan nokta sayılarını belirtilen kesinliğe yuvarladığını ekleyin.

 

İyi için, aynı yerel ve girdi değişkenlerini adlandırmanıza gerek yok

 
Комбинатор :

İyi için, aynı yerel ve girdi değişkenlerini adlandırmanıza gerek yok

İyi bir şekilde - evet, ancak diğer kişilerin kodlarını düzenlediğinizde, kitaplıklarınızı onlara bağladığınızda ve ... PPC ...
 

ME'deki satıra ekli dosyada boşluk bırakmadan devam etmeye çalışın

Dosyalar:
comment.mq5  1 kb
 
Herhangi bir konuyu tartışırken, Market'te bulunan bir ürüne bağlantı verebilir misiniz? Yoksa reklam olarak değerlendirilip yasak mı olacak?
 
Yousufkhodja Sultonov :
Herhangi bir konuyu tartışırken, Market'te bulunan bir ürüne bağlantı verebilir misiniz? Yoksa reklam olarak değerlendirilip yasak mı olacak?
Her ürünün iki sekmesi vardır: Tartışma (satın almayı düşünenler için) ve İncelemeler (satın alanlar için). Ürün tartışmalarının yapıldığı yer burasıdır.
 

Şüpheli derleme sonucu ? :

 int f()
{
         int array[];
         return ( false ? array : array );
}
void OnStart ()
{
         Print ( f() );
}
// 0 error(s), 0 warning(s)
Sonuç: 65618 (ve nasıl böyle oldu?), ancak bir derleme hatası olmalı