고문 프로젝트 - 페이지 2

 
Vasiliy Sokolov :

괄호를 재배열해도 헛소리가 줄어들지는 않습니다. 조언을 하기 전에 - 당신의 레벨을 최소한 평균으로 올리십시오.

내 수준에 무슨 문제가 있습니까?

 
STARIJ :

주석은 프로그램 텍스트의 절반을 차지해야 합니다.

나는 일반적으로 몇 가지를 작성합니다. 먼저 "여기에 있어야 할 내용"이라는 긴 주석을 작성한 다음 이를 구현하는 코드 사이에 :-) 그런데 초보자에게 비슷한 접근 방식을 사용하는 것이 좋습니다.
 
Maxim Kuznetsov :
나는 일반적으로 몇 가지를 작성합니다. 먼저 "여기에 있어야 할 내용"이라는 긴 주석을 작성한 다음 이를 구현하는 코드 사이에 :-) 그런데 초보자에게 비슷한 접근 방식을 사용하는 것이 좋습니다.
음, 먼저 함수가 무엇을 하고 반환하는지에 대한 설명이 포함된 스텁(무언가)입니다. 그런 다음 코드
 
Vitaly Muzichenko :

항상 일정하고 이 스타일로 절대 변경되지 않는 함수를 작성하지 마십시오.

간결하게 쓰세요. 어쨌든 아무도 쳐다보지도 않고 줄도 절반만 씁니다.


코드에 대해 지속적으로 주석을 달고, 이 코드 조각이 무엇을 담당하는지, 어렵지 않으며, 마무리할 때 항상 코드가 무엇인지 알게 될 것이고, 공부하는 시간을 줄일 수 있습니다.


Vitaly, 내가 제대로 이해했습니까? 12" 노트북 화면이 있습니까?

나는 고대에 24행 x 80자의 영숫자 화면이 있는 CV-1420에서 공간을 절약하기 위해 노력했던 것을 기억합니다.)) 이제 어떻게든 더 빨리 이해하는 방식으로 글을 쓰려고 합니다.

 
Vitaly Muzichenko :

항상 일정하고 이 스타일로 절대 변경되지 않는 함수를 작성하지 마십시오.

간결하게 쓰세요. 어쨌든 아무도 쳐다보지도 않고 줄도 절반만 씁니다.


코드에 대해 지속적으로 주석을 달고, 이 코드 조각이 무엇을 담당하는지, 어렵지 않으며, 마무리할 때 항상 코드가 무엇인지 알게 될 것이고, 공부하는 시간을 줄일 수 있습니다.

그런 다음 하단에 있는 4개의 괄호가 무엇을 의미하는지 눈으로 샅샅이 살펴보세요. 이것은 매우 나쁜 코드 스타일입니다. 일반적으로 MS가 가장 뛰어나고 MQ가 K&R의 스타일을 공언한다는 사실이 따를 이유는 아니다. 펀칭 카드와 80x24 모니터의 시대는 지나갔다.

 void CloseOrders( int cmd) {
 for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--) {
   if ( OrderSelect (i, SELECT_BY_POS )) {
   if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic) {
     if ( OrderType ()== OP_BUY && cmd== OP_BUY ) {
     if (! OrderClose ( OrderTicket (), OrderLots (), Bid ,Slippage,Blue)) Print ( "Order BUY not close! Error = " , GetLastError ());
    }
     if ( OrderType ()== OP_SELL && cmd== OP_SELL ) {
       if (! OrderClose ( OrderTicket (), OrderLots (), Ask ,Slippage,Red)) Print ( "Order SELL not close! Error = " , GetLastError ());
    }
}}}}
바실리 소콜로프 :
아니요, 그럼 바로 코드의 90%가 주석입니다. 동시에 더 많은 주석을 달 수 있도록 의미 없고 읽기 어려운 코드가 최대한 많이 필요합니다!

그러나 노년에는 "Forex and Me")))) 아니요, "Me and Forex"와 같은 책 형태로 의견을 게시할 수 있습니다.

 
Alexey Volchanskiy :

그런 다음 하단에 있는 4개의 괄호가 무엇을 의미하는지 눈으로 샅샅이 살펴보세요. 이것은 매우 나쁜 코드 스타일입니다. 일반적으로 MS가 가장 뛰어나고 MQ가 K&R의 스타일을 공언한다는 사실이 따를 이유는 아니다. 펀칭 카드와 80x24 모니터의 시대는 지나갔다.


그러나 노년에는 "Forex and Me")))) 아니요, "Me and Forex"와 같은 책 형태로 의견을 게시할 수 있습니다.

작업 화면 27"

나는 게시물을 다시 읽지 않을 것이며 인용할 것입니다: " 항상 일정하고 이 스타일로 절대 변경되지 않는 함수를 작성하지 마십시오 "

플랫폼이 출시되면 한 번 작성되고 앞으로도 변경되지 않는 기능에 왜 눈을 찔러야 합니까? 로트 크기, 주문 수 , 일반 주문을 가져오는 함수에서 코드를 자주 변경/편집합니까? 그렇다면 32인치 모니터의 3개 화면에 걸쳐 확장하는 이유는 무엇입니까?

추신: 코드가 첨부되어 있으며, 코드 베이스에서 발췌했습니다.

 
Vitaly Muzichenko :

작업 화면 27"

나는 게시물을 다시 읽지 않을 것이며 인용할 것입니다: " 항상 일정하고 이 스타일로 절대 변경되지 않는 함수를 작성하지 마십시오 "

플랫폼이 출시되면 한 번 작성되고 앞으로도 변경되지 않는 기능에 왜 눈을 찔러야 합니까? 로트 크기, 주문 수 , 일반 주문을 가져오는 함수에서 코드를 자주 변경/편집합니까? 그렇다면 32인치 모니터의 3개 화면에 걸쳐 확장하는 이유는 무엇입니까?

그래서 그들이 있는 파일은 300년마다 같은 방식으로 열립니다.

하지만 열리면 힙에서 찾기 }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} }}}} 무엇을 위해 존재하는지.

트랩을 작성하고 테스트한 후 보관을 위해 라이브러리나 클래스에 보낸 경우 스스로 트랩을 작성하는 이유는 무엇입니까? 모든 것. 그러나 거기에있는 것에 대한 기억을 새로 고칠 필요가있을 때 (기본적으로 무언가를 할 수 있지만 결코 알지 못합니다 ... else 를 추가해야 함) - 앉아서 대괄호를 움직이십시오 ...

 
Vitaly Muzichenko :

작업 화면 27"

나는 게시물을 다시 읽지 않을 것이며 인용할 것입니다: " 항상 일정하고 이 스타일로 절대 변경되지 않는 함수를 작성하지 마십시오 "

플랫폼이 출시되면 한 번 작성되고 앞으로도 변경되지 않는 기능에 왜 눈을 찔러야 합니까? 로트 크기, 주문 수 , 일반 주문을 가져오는 함수에서 코드를 자주 변경/편집합니까? 그렇다면 32인치 모니터의 3개 화면에 걸쳐 확장하는 이유는 무엇입니까?

추신: 코드가 첨부되어 있으며, 코드 베이스에서 발췌했습니다.

Vitaliy, 함수의 첫 번째 변형에서 어떤 닫는 괄호가 어떤 여는 괄호에 속하는지 명확하고 두 번째 변형에서는 쌍을 찾기 위해 눈을 뗄 수 있습니다...

일반적으로 사용자 정의 함수는 화면에 맞지 않을 정도로 크지 않습니다. 그리고 컴파일된 Expert Advisor에서 브래킷이 어떻게 배치되는지는 중요하지 않습니다.

 
Artyom Trishkin :

그래서 그들이 있는 파일은 300년마다 같은 방식으로 열립니다.

하지만 열리면 힙에서 찾기 }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} }}}} 무엇을 위해 존재하는지.

트랩을 작성하고 테스트한 후 보관을 위해 라이브러리나 클래스에 보낸 경우 스스로 트랩을 작성하는 이유는 무엇입니까? 모든 것. 그러나 거기에있는 것에 대한 기억을 새로 고칠 필요가있을 때 (할 일을 기반으로 할 수도 있지만 결코 알지 못할 수도 있습니다 ...) - 앉아서 괄호를 움직이십시오 ...

아니오, 파일에 아무것도 없고 욕심도 없고 친구들과 프로그램도 자주 공유하고 아카이브를 보내는 대신 파일을 하나만 보냅니다.

모든 기능은 맨 아래에 별도로 있지만 실행 코드는 항상 잘 작성되고 주석 처리되어 있으므로 아이가 거기에서 알아낼 것입니다.

 
Gregory Kovalenko :
안녕하세요.
코드의 양이 증가함에 따라 때때로 어려움과 혼란이 발생합니다.
엄청난 수의 코드 라인이 있는 EA 코드를 봤습니다. EA가 얼마나 복잡한 디자인으로 설계되었는지 궁금합니다. 아마도 그러한 복잡한 알고리즘으로 작업할 수 있는 도구나 기술이 있을까요?

모든 Expert Advisor에는 수천 줄의 코드가 있습니다. (포함을 통해 자동으로 활성화됩니다.)

실제로 EA는 OnInit , OnTick 및 기타 기능을 포함하는 CExpert 템플릿 클래스로 구성됩니다. 포함된 EA 템플릿에서 모든 전역 이벤트 함수는 이 유형의 개체에 해당하는 함수를 호출합니다.

초기화 중 - CExpert는 작업에 필요한 모든 것을 생성할 수 있는 미리 정의된 전역 기능을 통해 "전문가 부품 공장"을 요청합니다.

동시에 Advisor 파일 자체는 5줄로 구성됩니다. 이 파일은 전문가의 부품 공장 개체 자체를 선언하고 포함을 포함합니다.

개인적으로 저는 가상 인터페이스와 구현으로 구분되는 OOP 접근 방식을 정말 좋아합니다. 먼저 인터페이스 파일에 대해 설명합니다. 즉, 모든 기능이 가상이고 0과 같은 추상 클래스입니다. 이 클래스는 "상호작용 프로토콜"을 정의합니다. 그리고 그로부터 - 실제 클래스가 상속되어 이러한 모든 기능이 완전히 구현됩니다(때로는 - 함수 설명이 "레벨별로" 간격을 둘 때 클래스의 전체 계층 구조가 얻어짐).

이 접근 방식을 사용하면 엔터티를 분리할 수 있으므로 전체 프로젝트에 대한 추가 지원과 클래스 재사용이 크게 용이해집니다.