직장에서 여러 POS 장치 (온라인)가 온라인 상태인지 확인하고 네트워크 ping에 회신 한 후 색상을 지정하는 응용 프로그램을 작성했습니다 ping 응답에 따라 빨간색 또는 녹색의 해당 직사각형. 그것에는 10 개의 '회선'이 있습니다. 각 회선에는 마스터 서버와 최대 60 개의 POS 장치를 표시 할 수 있으며 사이트 번호로 채울 수있는 텍스트 상자가 있습니다. 그런 다음 이동을 클릭하면 2 개의 .ini 파일을 읽어 사이트 IP 구성표와 장치 수 및 주소를 확인하여 각 장치를 ping (또는 ping 된 lol) 할 수 있습니다. 응용 프로그램의 스크린 샷을 첨부했습니다. 이는 내가 만든 것을 설명하는 데 도움이 될 것입니까?!클래스에 코드가 너무 많지만 줄이기위한 방법이 확실하지 않습니다.
그런 다음 하나 이상의 사이트에있는 컴퓨터가 온라인인지, 예를 들어 컴퓨터로 원격 업그레이드를 실행하면 답장을 모두 중단하고 (상자가 빨간색으로 표시됨) 다시 볼 수 있음을 알기 위해 내 응용 프로그램을 사용할 수 있습니다 (상자가 다시 녹색으로 바뀝니다) 그러면 모든 업데이트가 완료되고 컴퓨터가 모두 다시 부팅되면 쉽게 알릴 수 있습니다. 내 문제는 내 코드가 (IMO) 너무 길어서 가능한 한 효율적이지 않을 수 있다는 것입니다 (60k 라인!).
개체의 이름과 변수 이름 등을 제외하고 각 줄 뒤의 코드는 동일합니다 (즉, 첫 번째 'reply'사각형은 'rectSt1Pos1'이라고합니다. 즉 Rectangle Shape-Store1-Pos1), 'rectSt1Pos2'등등 ... 'Pos60'까지, 그리고 모든 10 개의 라인 (마지막으로 'rectSt10Pos60')에 대해 반복). 이것은 내가 (동적으로 그리기에 자신감이 없었기 때문에) 610 개의 개별 상자를 그려야 만한다는 것을 의미했습니다. 그리고 나는 그것에 만족합니다. 그러나 클래스 시작시 모든 변수를 초기화하는 것과 같은 일을했습니다. 값을 할당합니다.)하지만 넘겨 줄 수있는 각 가능한 장치 (마스터 서버가있는 각 사이트, 사이트 당 최대 60 POS, 장치 당 성공 및 실패 카운터 1 개당 성공 및 실패 응답 카운터 포함)가 1200 회선 이상입니다. = 1220 int 값을 ping 카운트를 저장!)
잘하면 응용 프로그램 설명과 함께, 그리고 내 문제에 관해서는, 즉 응용 프로그램에 대한 내 코드 (대부분은 하나의 클래스에 있습니다 (즉, 내가 가지고있는 유일한 다른 수업은 ini 파일을 읽는 것입니다.))는 약 60,000 줄에 달했습니다 (예 .6 만!). 이것은 기본적으로 10 배 크기라고 생각하지만이 문제를 줄일 수 있어야한다고 생각합니다. 그러나 코드를 리팩토링하는 방법에 대해 생각해 볼 수있는 방법을 알지 못합니다 !!
또한 제네릭 클래스 또는 호출 할 수있는 메서드에서 각 줄에 대해 모든 작업을 수행 할 수 있어야한다고 생각하지만 각 줄의 사각형과 주소 등을 어떻게 처리 할 수 있는지 잘 모르겠습니다. . 서로 다르며 크로스 스레드 업데이트가 필요합니다. (크로스 쓰레딩과 나는 잘 맞습니다.)
요약하면 코드 크기를 줄이는 방법에 대한 조언이있는 사람이 있습니까? 어쩌면 괜찮아요 클래스 60,000 + 라인?, 컴파일 할 때 약 1.8Mb 약 40Mb 메모리, 15-25 스레드 및 400-1100 핸들을 사용하는 응용 프로그램 ... 그건 수용 가능한 오버 헤드가?
모든 조언, 의견 또는 도움을 주시면 대단히 감사하겠습니다. 스크린 샷이 게시되지 않았기 때문에 코드 스 니펫을 게시 할 수도 있습니다 (평판 포인트가 분명하지 않기 때문에!) 필요하다면 다른 곳에서 호스팅 할 수 있습니다. 시간에 대한
많은 감사,
댄 것도 너무 명확하지 않은 경우 요청 (하지만 하하!의 모든 말을하지 않습니다)
건배를 바랍니다.
어떤 언어입니까? –
죄송합니다. 지금까지이 주석을 보지 못했습니다! C#을 사용 중입니다 – RatMonkey
더 많은 도움을 얻을 수 있습니다 (C# 태그로 질문을 태그했습니다) –