오류, 버그, 질문 - 페이지 1332

 
Alexey Navoykov :
당신의 조언은 사실상 무의미합니다. 아무도 구체적 으로 같은 이름을 지정하지 않습니다. 로컬 함수의 코드는 자체적으로 별도의 삶을 살고 있습니다. 그리고 외부 프로그램 - 자체. 동시에 외부 변수의 이름은 시간이 지남에 따라 변경될 수 있으며 새로운 외부 변수가 추가될 수 있습니다. 그리고 그 후에 갑자기 수백 개의 함수 중 하나에 같은 이름을 가진 지역 변수 가 있게 된다면 전역 변수의 이름을 바꿔야 한다고 생각하는 이유는 무엇입니까? 개발자의 버그에 대한 변명을 찾지 마십시오.

개발자 버그에 대한 변명을 찾지는 않았지만 이 버그는 프로젝트에서 작업할 때 입력 매개변수를 담당하는 동일한 변수 이름을 사용하지 않으면 쉽게 우회할 수 있습니다. 입력 매개변수에서 이름을 변경하기만 하면 입력 매개변수에 수백 개의 변수가 있고 전체 코드를 편집해야 할 것입니다. 소프트웨어 진입점에서 일반적으로 코드의 주요 부분이 작성됩니다. 그리 크지 않고 모든 것이 함수 호출 (메소드)에 의해 수행됩니다. 그리고 함수(메소드)의 경우 함수의 입력 매개변수에 전달되는 변수 이름에는 차이가 없습니다.

물론 함수에서 전역변수를 사용하는 코드를 작성한다면 당연히 수정을 많이 해야 하지만 그런 코드는 미래를 내다보지 않고 절대적으로 구성되어 현대화하기가 정말 어렵습니다.

개발자(MetaQuotes)를 소비자의 시선으로 보면 당연히 많은 것을 한 번에 원하는 것이겠지만 :) 작업의 편의를 위해 터미널이 크로스 플랫폼이면 좋겠지만 하나만 있을 것입니다. 그러한 요청에 대한 답변 - 사용 가능한 것을 사용하거나 그냥 지나치십시오. :)

 
Konstantin Karpov :

입력 매개변수에서 이름을 변경하기만 하면 됩니다...

당신은 경솔한 외모를 가지고 있습니다. 그래서 그냥 가져 와서 변경하십시오 ... 그러면 코드에 다른 기능이 추가됩니다. 로컬 변수 는 이름과 일치하고 다시 변경됩니다. 그렇죠? 외부 변수의 이름은 단순한 문자 집합이 아니라 특정한 의미를 담고 있습니다. 때로는 그녀의 간결하고 방대한 이름을 선택하고 생각해야합니다. 그리고 당신은 변화에 대해 이야기하고 있습니다. 예. 이름을 변경할 때 이 매개변수에 대해 테스터 및 옵티마이저뿐만 아니라 모든 사전 설정 설정이 실패합니다.

다시 말하지만 지역 코드는 고유한 삶을 살고 있으며 이에 적응할 필요가 전혀 없습니다. 외부 어딘가에서 특정 함수를 삽입했다고 가정해 봅시다. 아마도 당신은 그것을 작성하지도 않았을 것입니다. 그래서 거기에 있는 지역 변수의 이름은 절대적으로 무엇이든 될 수 있습니다.

 
Alexey Navoykov :

당신은 경솔한 외모를 가지고 있습니다. 그래서 그냥 가져 와서 변경하십시오 ... 그러면 코드에 다른 기능이 추가됩니다. 로컬 변수 는 이름과 일치하고 다시 변경됩니다. 그렇죠? 외부 변수의 이름은 단순한 문자 집합이 아니라 특정한 의미를 담고 있습니다. 때로는 그녀의 간결하고 방대한 이름을 선택하고 생각해야합니다. 그리고 당신은 변화에 대해 이야기하고 있습니다. 예. 이름을 변경할 때 이 매개변수에 대해 테스터 및 옵티마이저뿐만 아니라 모든 사전 설정 설정이 실패합니다.

다시 말하지만 지역 코드는 고유한 삶을 살고 있으며 이에 적응할 필요가 전혀 없습니다. 외부 어딘가에서 특정 함수를 삽입했다고 가정해 봅시다. 아마도 당신은 그것을 작성하지도 않았을 것입니다. 그래서 거기에 있는 지역 변수의 이름은 절대적으로 무엇이든 될 수 있습니다.

당신이 적합하다고 생각하는 대로 하십시오. 단지 당신이 큰 프로젝트를 작성하지 않았을 가능성이 매우 높습니다.

내 기능의 정의를 보는 것은 의미가 없습니다. 왜냐하면 나는 전역 변수 이름과 지역 변수 이름을 선언하는 스타일에 분명한 차이가 있습니다. 따라서 전역 변수 이름과 지역 변수 이름이 일치하는 것과 같은 문제가 발생하지 않습니다. 가장 중요한 것은 함수가 충돌 없이 논리를 수행한다는 것입니다. 귀하의 경우 하나의 큰 BUT가 있습니다. 동일한 이름의 전역 변수 와 지역 변수의 이름이 있으면 이미 긁어 모으기 시작한 놀라움이 예상됩니다.

예를 들어 _iCount와 같은 지역 변수 이름에 추가 _ 문자를 입력합니다. 이 경우 변수 이름에 문제가 발생하지 않습니다. 두 번째로 나에게 설명하려고 하는 것은 충족될 것입니다. 변수는 생성된 가시성의 로컬 영역에 있습니다. 그리고 이 경우 전역 변수는 이름에 모호성을 유발하지 않습니다. 그리고 우리는 이에 대한 분쟁을 종결할 것입니다.

 

이전 게시물 로 돌아갑니다. MT4/845, Windows7/64비트, 스크립트:

 #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 ));
}

결과:


관리, 이 함수가 부동 소수점 숫자를 지정된 정밀도로 반올림하도록 DoubleToString 에 추가하십시오.

 

좋은 점을 위해 동일한 로컬 및 입력 변수의 이름을 지정할 필요가 없습니다.

 
Комбинатор :

좋은 점을 위해 동일한 로컬 및 입력 변수의 이름을 지정할 필요가 없습니다.

좋은 방법으로 - 예, 하지만 다른 사람의 코드를 편집하고 라이브러리를 그들에게 연결하고 ... PPC ...
 

공백없이 첨부 파일의 ME에서 줄을 계속하십시오.

파일:
comment.mq5  1 kb
 
문제를 논의할 때 마켓에 있는 제품에 대한 링크를 제공할 수 있습니까? 아니면 광고로 간주되어 금지됩니까?
 
Yousufkhodja Sultonov :
문제를 논의할 때 마켓에 있는 제품에 대한 링크를 제공할 수 있습니까? 아니면 광고로 간주되어 금지됩니까?
각 제품에는 토론(구매를 고려 중인 사람들을 위한) 및 리뷰(구매한 사람들을 위한)의 두 가지 탭이 있습니다. 제품 토론이 이루어지는 곳입니다.
 

? 뒤에 의심스러운 컴파일 결과가 표시됩니다. :

 int f()
{
         int array[];
         return ( false ? array : array );
}
void OnStart ()
{
         Print ( f() );
}
// 0 error(s), 0 warning(s)
결과: 65618(그리고 어떻게 그렇게 되었습니까?), 하지만 컴파일 오류가 있어야 합니다.