문제

저는 프로젝트를 디자인하는 컴퓨터 과학 학생이고 일반 사용자에게 유용한 기능과 풍부한 기능을 갖춘 것과 신규 사용자에게 너무 위협적인 것 사이에서 경계를 늦추는 좋은 예나 소프트웨어, 심지어 하드웨어가 무엇인지 궁금해하기 시작했습니다.또한 기능이 풍부하지만 "비대"되지 않은 우수한 품질의 응용 프로그램을 설계하기 위한 좋은 팁/책을 추천할 수 있는 사람이 있습니까?

도움이 되었습니까?

해결책

"모든 것을 가능한 한 간단하지만 간단하지는 않습니다." - 알버트 아인슈타인

"추가 할 것이 없을 때 완벽에 도달하는 것이 아니라, 아무것도 없어야 할 것이 없을 때." - Antoine de Saint-Exupéry


나는 Flippant가 되려고 노력하지는 않지만이 인용문은 실제로 최고의 조언입니다. 디자인의 단순성이 목표가되어야합니다. 단순성을 달성하기가 쉽지 않습니다! 반대로, 그것은 매우 어렵지만 가능합니다.

사물에 대해 조금 다르게 생각해보십시오. 보다는

이것이 부풀어 오르기 전에 몇 가지를 추가 할 수 있습니까?

노력하다

사용자에게 우수한 경험을 제공하면서 포함 할 수있는 가장 적은 수의 기능과 요소는 무엇입니까?

다른 팁

주제에 대한 프레젠테이션에서 나온 좋은 슬라이드 세트는 다음과 같습니다. 구조 공주 2.0.

첫 번째 비즈니스 순서는 응용 프로그램을 쉽게 사용할 수 있도록해야합니다. 그 외에도, 내가 말할 수있는 것은 상상의 사용자를위한 기능 작성에주의를 기울입니다. 코딩을 시작하기 전에 누군가가 실제로 필요로하는지 확인하십시오.

귀하의 질문에 대한 직접적인 답변 : 거의 모든 Microsoft 제품. 여기에 편견이 표시되지만 Microsoft는 코드베이스를 유지하는 경향이 강하고 앱의 원래 기능이 Accreted CRUD의 마운드 아래에서 거의 손실 될 때까지 기능을 추가합니다.

1 : 사용자가 필요하고 원하는 것은 무엇이며

2 : 어떤 기능을 구현할 시간이 있습니까?

당신의 질문은 꽤 일반적입니다. 어떤 기능이 Bloat를 구성합니까? 이러한 종류는 바이러스 백신 스캐너, OS 또는 워드 프로세서를 작성하는지 여부에 따라 다릅니다.

"좋음"과 "너무 많음" 사이에는 명확한 장벽이 없습니다.그러나 그것은 당신이 원하는 것에 달려 있습니다.

SDK를 개발하는 경우 구현을 여러 개의 작은 라이브러리로 분할하는 것이 좋습니다(단지 하나의 큰 SDL 라이브러리가 아닌 SDL 코어가 있고, SDL_Mixer, SDL_Image, 등.)

애플리케이션을 개발하는 경우 모듈 기반 시스템과 플러그인 메커니즘을 유지하세요.이렇게 하면 새로운 기능을 더 쉽게 추가할 수 있고 부풀림을 더 쉽게 감지할 수 있습니다.

일부는 "훌륭하다"고 다른 일부는 "부풀어오른다"고 생각하는 새로운 기능을 추가하게 되는 지점에 도달할 수도 있습니다.그렇지 않으면 애플리케이션이 어떤 사람은 "기능이 부족하다"고 하고 어떤 사람은 "그냥 충분하다"고 말하는 지점에 도달할 수 있습니다.

이것은 정확한 인용문이 아니지만 아이디어는 다음과 같습니다.

더 이상 추가 할 것이 없을 때 소프트웨어 조각은 완벽합니다. 더 이상 제거 할 것이 없을 때.

본질적으로, 더 간단하고 더 많은 내용은 소프트웨어 일수록 좋습니다.

좋은 소프트웨어 디자인의 예를 얻으려면 오늘날 인기있는 프로그램을 살펴보십시오. Google 애플리케이션은보기에 좋은 곳이 될 것입니다. 아마도 스카이프. Heh, 심지어 stackoverflow. :)

위협을 원한다면 CAD의 세계로 가십시오. 예를 들어 확인하십시오 블렌더. That's a freeware 3D designer software. Good tool I'm told, but the UI has so many buttons/panels/menus/etc. that it makes baby bunnies cry. Unfortunately I cannot say if this would be a good example of a "bad" UI. 3D designing is a 매우 복잡한 프로세스와 모든 도구는 아마도 올바른 장소에있을 것입니다. 그러나 그것은 확실히 협박합니다. :)

나는 항상 프로젝트를 가능한 한 확장 가능한 골격으로 설계하는 경향이 있습니다. 제한 요인은 성능, 복잡성 또는 타사 제한입니다.
이렇게하면 기본 구조를 완료 한 후 추가 기능을 추가 할 수 있습니다. 사용자는 필요한 기능을 추가 할 수도 있습니다.

광범위한 플러그인 시스템을 개발하여 언제든지 추가 및 꺼내십시오. 문제 해결됨. 스파게티 코드를 작성하는 것만 큼 쉬운 경우 ;)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top