GUI를 그래픽으로 배치하는 것이 "속임수"로 간주되어야합니까?


18

저와 같이 프로그래밍 경험이 약간 더 많은 친구가 있습니다. 우리는 우리가 사용하는 모든 프로그래밍 기술에 대해 이야기하고 Interface Builder가 대화에 나왔습니다.

내가 배운 것을 제외하고 프로그래밍 배경이 없기 때문에 개인적으로 IB와 모든 기능 ( IBOutlets, IBActions)은 내 기술 수준 (및 모든 기술 수준)의 코더가 짧은 시간 안에 프로젝트를 완료하는 데 도움이 된다고 생각합니다 .

IB에 대한 그의 견해는 조금 열성적입니다. 그는 인터페이스 빌더를 사용하는 코더는 인터페이스를 직접 배치 할 필요가 없다는 사실을 "속임수"라고 생각합니다.


질문:

GUI 구성 요소를 사용하여 인터페이스 요소를 배치하는 것은 "치팅"으로 간주되어야합니까 (대부분의 프로그래밍은 원래 인터페이스를 직접 코드로 작성해야했기 때문에)? 왜?


32
개를 살 때 왜 짖는가?
jfrankcarr

29
픽업 트럭 사용이 부정 행위입니다. 실제 남자는 120도 날씨에 야생마를 능가하고 길들입니다. 그들은 뒤에서 그들에게 접근합니다. 의무 xkcd.com/378
직업

9
친구에게 속임수처럼 수동으로 작업하는 대신 컴퓨터를 사용하지 않는 이유를 물어보십시오.
DPD

2
친구가 만나기 위해 적극적인 마감 기한이 없었던 것 같습니다.
MattDavey

15
속이는 것을 고려하는 것은 단지 프로그래머의 snobbery입니다.
Alan B

답변:


60

부정 행위가 아닙니다. IB와 같은 프로그램은 도구입니다. 작업에 맞는 것을 사용하십시오. 그것에 대해 독단적 일 필요는 없습니다.

그러한 도구를 사용하는 것이 더 효과적이라면 사용하십시오. 유일한 경고는 결정을 내릴 때 장단점을 배워야한다는 것입니다. 손으로 레이아웃을 수행하면 끌어서 놓기가 쉬워지면서 정밀하게 제어 할 수 있습니다. 끌어서 놓기 도구를 사용하면 많은 작업을 빠르고 쉽게 수행 할 수 있지만 시간이 지남에 따라 코드를 유지 관리하기가 어려워 질 수 있습니다.

개인적으로, 드래그 앤 드롭 UI 디자인 도구를 사용하여 성공을 거두거나 큰 즐거움을 얻지 못했지만 그건 저뿐입니다. GUI를 직접 배치하는 것이 가장 효과적 이며 시간이 지남에 따라 유지 관리하기 쉬운 코드베이스를 생성합니다. 다른 사람들은 반대의 경험을 가지고 있습니다.


3
또한 디자이너 도구는 코드 생성기 일뿐입니다. 코드를 생성하는 것은 코드를 생성 할 수 있고 원하는 작업을 계속 진행할 수 있기 때문에 일반적으로 좋은 일입니다. 화면이 실제로 유용한 기능을 수행하도록합니다. 내 경험이 다릅니다. 디자이너 툴을 사용하는 것보다 훨씬 생산적이었습니다.
Andy

Andy의 메모에 대한 부록으로서, 올바른 디자이너 도구는 세상의 모든 차이를 만듭니다. GUI 개발에 Delphi / Lazarus를 사용했는데 훌륭했습니다. 나는 또한 MS Frontpage를 사용해야하며 다른 쪽 끝에서 끔찍한 HTML을 얻습니다.
스펜서 Rathbun

FWIW, MFC를 사용하여 시각적 편집기를 사용하여 닫은 다음 손으로 조정하여 올바르게 만듭니다. 그것은 가장 빠른 방법 인 것 같습니다.
David Thornley

작업 속도를 높이기 위해 특수 도구를 사용하는 데 아무런 문제가 없지만 다음과 같이 덧붙입니다. 데이터 중심 모델을 정의하는 도구, 즉 코드 생성기보다는 XML의 UI 레이아웃을 선호하는 도구가 선호됩니다. 당신을 위해 쓰기 "Button btn54 = new Button (x : 543, y : 782);"
Katana314

17

직업으로서의 프로그래밍은 스포츠 나 게임이 아닙니다. 따라서 부정 행위의 주장은 매우 얇습니다. 시각적 도구가 생산성을 높이면 사용하지 않는 것이 어리 석습니다. 내 경험에 따르면 사소한 인터페이스 작업을 반복하지 않고도 실제 문제 해결 코드에 더 많은 시간을 할애 할 수 있습니다.

그러나 설정이나 데이터가 인터페이스에 쉽게 침투 할 수 있습니다. 프리젠 테이션과 로직을 분리하는 데 급진적입니다.


10

당신이 거기에 도착하기 위해 무언가를 희생하는 경우에만 부정 행위입니다. 대부분의 GUI 레이아웃은 어쨌든 만들 코드를 생성합니다 (레이아웃이 충분하지 않기 때문에 종종 직접 편집해야합니다).

기본적으로는 아닙니다.

다른 모든 것들이 동일하다면, 같은 일을 더 빨리 해낼 수있는 도구가 좋습니다.


나는 '사용 가능한 레이아웃 도구 사용'캠프에 단단히 있습니다. 생성 된 코드는 종종 약간의 조정이 필요하지만 도구는 시간을 절약합니다. '속임수'사람은 생성 된 내용을 편집하기에 충분히 이해하는 데 시간을 들이지 않은 사람처럼 들립니다.
Jim In Texas

4

부정 행위는 게임의 이름입니다. 어떤 종류의 개발 결정을 내릴 때 항상 가장 쉬운 경로를 사용해야합니다. 부정 행위라고 부르고 "생산적"이라고 부릅니다. 차이가 없습니다. 최소한의 노력으로 작업을 수행하는 데 도움이되는 도구를 선택해야합니다 (물론 유지 관리 및 확장 성을 잊지 마십시오).

이제 IB를 사용하면 IB가 절약 한 시간과 더 가파르고 친숙하지 않은 코드를 유지 관리하는 비용을 비교해야합니다. 이것은 실제로 사건마다 그리고 사람마다 결정의 종류입니다. 대부분의 경우 도구와 마법사를 사용하면 유지 관리 비용을 낮추고 훨씬 더 많은 작업을 수행 할 수 있습니다. 때로는 작업에 대해 알고있는 것보다 슬로프 코드와 누출이 많은 추상화가 도입되기도합니다. IB가 개발 비용을 추가 할 가치가 있다고 스스로 결정한 것처럼 들리지만, 친구는 도구가 자신을 돕는 것보다 더 방해한다는 것을 쉽게 알 수 있습니다.


3

지옥 아니 그러나 전적으로 손으로하는 것은 불필요한 일을 스스로하는 명백한 사례입니다.

(일반적으로 빌더를 사용하여 배치하고 미세 조정이 필요한 경우 항상 수동으로 수행하는 경향이 있습니다).


버전 2.0 현재 .Net에서는 GUI와 논리가 부분 클래스 덕분에 분리되어 있다고 생각합니다. 동일한 클래스가 두 개의 다른 파일에 정의되어 있습니다. 하나는 완전히 자동 생성되며 하나는 사용자가 사용자 정의합니다.
Job

나는 그것이 "불필요한 일을하는 명백한 사례"라는 진술에 동의 할 수 없다. 그것은 모두 도구와 프로그래머의 기술에 달려 있습니다. 예를 들어, 선택한 GUI 빌더를 사용하는 것보다 tcl / tk GUI를 더 빠르고 수동으로 더 나은 최종 코드로 코딩 할 수 있다고 확신합니다. OTOH, .net 데스크톱 앱을 만들 때 Visual Studio 이외의 다른 것을 사용하는 방법을 고려할 방법이 없습니다.
Bryan Oakley

OP가 일반적인 사례에 대해 분명히 말하고 있기 때문에 (질문에 굵은 글씨로 표시됨) 일반적인 경우와 관련하여 귀하의 의견에 동의하지 않습니다. 그와 같이.
Maximus Minimus

3

GUI가 없으면 GUI를 배치 할 수없는 개발자에 대해서는 조금 덜 존경하지만 분명히 속임수 가 아닙니다 . 하나를 사용하는 IMO는 시스템 제공 데이터 유형을 사용하는 것과 다르지 않습니다. 시스템 라이브러리에서 하나를 사용할 수 있다면 왜 자체 링크 목록 또는 해시 맵을 구현해야합니까?

FWIW 몇 달 전에 Java Swing에서 UI를 구현해야했습니다. 나는 그것을 사용하지 않았으므로 손으로 직접 작성하여 어떻게 작동했는지 더 잘 이해할 수있었습니다. 기본 API를 알고 있으므로 도움이 될 경우 다시는 직접 작성하지 않습니다.


1

으로 @Bryan 오클리 상태, 그것은 단지 도구가 아닌 "속임수"입니다. 그것은 모두 정확히 무엇을 배치하고 있는지에 달려 있습니다. 에 의한 경우 이 믿을 수 없을만큼 힘든 운동을 만드는 당신은 정말 당신이 더 생산하게 다른 대안을 찾아야한다.

예전에는 인터페이스를 직접 코딩하는 캠프에 있었지만 나중에 인터페이스를 배치 한 후 무릎을 꿇고 다른 견해를 보였습니다. 가능하고 생산성을 높이면 그래픽 도구를 사용하여 GUI를 배치합니다.

View와 ViewModel의 구별과 함께 MVVM 패턴을 최근에 사용하면 그래픽 도구를 사용할 때 좀 더 명확 해집니다. Phil Haack 은 웹에서 애플리케이션 개발로의 전환에 대한 질문을 받았을 때 Herding Code 팟 캐스트의 Windows 용 Github 에피소드 에서이를 간략하게 설명합니다 . "손으로"코딩하여 ViewModel을 수행하는 것이 더 합리적이며 디자이너가 View를 그래픽으로 작성하고 이에 따라 ViewModel을 연결하도록하는 것이 더 합리적입니다.


1

Interface Builder와 같은 도구의 가장 큰 장점 중 하나는 UI 구현 작업과 프로그램 구현을 분리 할 수 ​​있다는 것입니다. 코딩 기술이 거의없는 사람은 UI 레이아웃을 쉽게 변경하고, 버튼 및 메뉴 캡션을 변경하고, UI를 다른 언어로 번역 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.