다른 많은 사람들과 마찬가지로 콘솔 기반 (Playstation이 아닌 터미널에서와 같이) 프로그래밍으로 시작했습니다. 그러나 조만간, 원하든 원하지 않든 GUI 기반 프로그래밍을 다루어야합니다. 이 전환에는 프런트 엔드 (및 백엔드)에 대해 생각해야하는 방식이 많이 변경되었습니다.
그렇다면 콘솔 기반 프로그래밍에서 GUI 기반 프로그래밍으로 전환 할 때 가장 큰 차이점은 무엇입니까?
다른 많은 사람들과 마찬가지로 콘솔 기반 (Playstation이 아닌 터미널에서와 같이) 프로그래밍으로 시작했습니다. 그러나 조만간, 원하든 원하지 않든 GUI 기반 프로그래밍을 다루어야합니다. 이 전환에는 프런트 엔드 (및 백엔드)에 대해 생각해야하는 방식이 많이 변경되었습니다.
그렇다면 콘솔 기반 프로그래밍에서 GUI 기반 프로그래밍으로 전환 할 때 가장 큰 차이점은 무엇입니까?
답변:
가장 큰 차이점은 UI 디자인입니다. 좋은 GUI는 응용 프로그램을 만들거나 중단시킬 수 있습니다. 맥 팬들은 맥 OS X 앱의 아름답게 디자인 된 GUI에 주목할 것이지만 요점은 있지만 이것은 기술적 인 문제가 아니라 디자인 / 윤리 / 사용성 문제입니다.
기술적 인 문제와 관련하여 특별한 순서는 없습니다.
사용자는 입력을 요구하거나 출력을 알려주는 콘솔 프로그램과 달리 언제든지 원하는 순서대로 무엇이든 할 수 있습니다. 워크 플로 마법사 스타일을 적용하지 않으면 원하는 순서대로 진행한다고 가정 할 수 없습니다.
이미 언급했듯이, 이벤트는 이에 큰 영향을 미치며 마지막 이벤트를 처리하는 동안 여러 이벤트가 발생할 수 있으므로 '현재 이벤트'를 기반으로 상태를 실제로 구성 할 수 없습니다. 클로저 또는 유사한 메커니즘을 사용하여 다른 이벤트에서 컨텍스트를 유지하십시오. 콘솔 응용 프로그램에서 FSM은 일반적으로 '입력 받기, 프로세스 입력, 업데이트 출력'루프 주위에 자체 포함되어 있습니다. GUI 프로그래밍에는 같은 종류의 구조가 없습니다. 'main'은 재진입 이벤트 중심의 것으로 종종 거대한 switch () 문입니다.
다른 화면 크기 / 해상도를 고려해야하고 GUI 크기를 800x600에서 사용자 모니터 최대 크기까지 조정할 수 있어야합니다.
마우스, 키보드, 터치 등 다양한 입력 전략을 고려해야합니다. 일부 기술은 무료로 제공되며 (마우스 휠 스크롤) 일부는 통합 작업 (잉크)이 필요합니다.
접근성-GUI는 시각, 청각, 운동 기술 또는인지 기술이 제한적인 능력이 부족한 사용자에게 훨씬 적합합니다. '딩'소음은 콘솔의 암호 오류 메시지와 비교할 때 훌륭하고 분명합니다.
국제화-콘솔 응용 프로그램이 US / ANSI 전용이라고 가정하지만 GUI에 들어가면 코딩을 변경하지 않고 다른 언어 및 지역을 대상으로 할 수있는 언어 / 리소스 패키지를 가질 수 있습니다. 스타트. 예를 들어, 코드에 하드 코딩 된 언어 문자열이 없습니다. 모든 것이 리소스 조회입니다.
웹 기반, 다양한 GUI 키트, Flash / WPF 등 구현 기술을위한 더 많은 옵션이 있습니다.
색상 및 애니메이션 사용. 콘솔 프로그램은 일반적으로 단색이며 많이 애니메이션되지 않습니다. 많은 최신 GUI 프레임 워크는 테마 위젯을 제공하며 종종 무료로 이동 / 크기 / 표시 / 숨기기 효과를가집니다.
제도법. 콘솔 앱은 때때로 다이어그램에 ASCII 아트를 사용하지만 GUI 앱은 완전한 그래픽 기능을 제공합니다. 사랑스러운 예술도 큰 차이를 만들 수 있습니다.
나에게 그것은 이벤트 중심 프로그래밍에 익숙해 질 것입니다. 여전히 콘솔 기반 소프트웨어에 적용 할 수 있지만 GUI와 함께 주로 사용됩니다. 일단 그것을 이해하면 매우 강력한 도구입니다.
멀티 스레딩이라고 말하고 UI와 관련이 있습니다 (블로킹 UI를 사용하지 않으려는 경우)
나를 위해 좋은 GUI를 디자인하는 것은 항상 그것을 구현하는 기술적 인 세부 사항보다 훨씬 더 도전적이었습니다.
"맥처럼 간단하고 명료하게 만드세요"라고 말하기 쉽습니다. 그렇게 만드는 것은 엄청나게 어렵습니다. 항상 사용할 수있는 많은 세부 사항이 있지만 동시에 보이지 않아야합니다.
단순성 http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png