Android 애플리케이션을 구성하는 가장 좋은 방법은 무엇입니까?


26

새로운 Android 애플리케이션을 시작하고 있습니다. 사용하기 가장 좋은 구조는 무엇입니까?

다음과 같이 멀티 패키지 디자인으로 만들 계획입니다.

  1. 활동을 포함한 기본 패키지
  2. 서비스 및 데이터 계층
  3. 엔터티 클래스를 포함한 엔터티 패키지

    어떤 충고 ?


답변:


11

먼저, 어떤 응용 프로그램을 수행하고 있는지에 따라 다릅니다.

사용자가 응용 프로그램을 사용하는 방법에 대한 텍스트 또는 회로도 설명을 수행해야합니다. 가능한 모든 시나리오를 수정하십시오. 나중에 테스트에 사용될 예제를 작성하십시오.

기능에 속하는 항목과 변경 가능한 구성에 대한 사항을 결정하십시오. 시나리오에서 기능 및 데이터 엔티티를 추출하십시오.

시나리오에서 앱이 무엇인지 결정하십시오. 서비스, ​​활동, 위젯, 컨텐츠 제공 업체 또는 일부 다른 구성 요소를 포함한 복잡한 시스템입니까? 시나리오에 대한 결정을 테스트하십시오.

복잡한 시스템의 경우 기능 및 데이터 엔터티를 응용 프로그램 구성 요소에 분산시킵니다. 구성 요소 및 구성 요소 목록 (활동 또는 기타)을 작성하십시오.

UI 구성 요소의 목록을 구성 요소로 작성하십시오 (아직 수행하지는 않음). 이것은 위젯 및 활동 또는 나중에 조각 또는 레이아웃이됩니다.

UI 구성 요소에 대한 초안 레이아웃을 작성하십시오. 서로 간단한 패스를 만드십시오. UI를보십시오. 시나리오로 돌아가서 초안 UI로 모든 시나리오를 재생하십시오. 모든 UI 구성 요소 및 클래스는 하나의 계층 구조 패키지 또는 패키지에 배치됩니다.

데이터 엔터티 목록을 만듭니다. 무엇을 할 것인지 결정하십시오. DB 또는 다른 DB의 컬렉션 또는 테이블로 계획하십시오. 그것들을 클래스로 만들고 다른 계층의 패키지 또는 다른 패키지에 넣으십시오. 여기에는 DB 헬퍼도 있습니다-SQL로 DB와 대화하는 클래스.

UI 및 데이터 엔티티를 테스트 데이터로 채우고 실행하기위한 테스트 클래스 (JUNIT 또는 더 나은 TestNG)를 작성하십시오.

어댑터는 상위 GroupView에서만 사용되므로 공용 일 필요는 없습니다. 따라서 일반적으로 어댑터 파일은 없습니다.

마십시오 하지 특별한 정적 클래스로 모든 전역을 넣어 - 그것은 나쁜 방법입니다. 코드와 구성을 혼합하고 있습니다. 이 매우 흥미로운 솔루션을 사용하십시오 . 현재로서는 내가 Android에 대해 가장 잘 알고 있습니다.

구성 데이터는 리소스에 넣어야합니다. 이들 중 일부가 복잡한 경우 XML 소스 및 구문 분석기를 사용하십시오. 자원 데이터 리더를 전역 변수로 만듭니다. 그들 모두가 정적 인 것은 아닙니다! 예를 들어 메인 액티비티 인스턴스에 속할 수 있습니다.

코드에서 구성 할 수없는 상수를 사용하지 마십시오! 귀하의 이름 만있을 수 있습니다 :-). 모든 상수는 때때로 일정하지 않습니다.

반면에, 일부 코드가 일반적인 Java가 아니라 스크립트 -데이터와 언어의 혼합 인 경우 데이터와 코드를 혼합 할 수 있으며 반드시 혼합해야합니다.

항상 그렇게하십시오 : 무언가를 쓰십시오 – 무언가를 벌크에 연결하십시오 –이 새로운 것을위한 시험을 추가하십시오 –이 새로운 것을 시험하십시오-대량을 시험하십시오-반복하십시오. 작은 단계 만!

편집하다. 또한 테스트 중심 개발을 사용할 수 있습니다. 적절한 코드 전에 테스트를 작성하십시오. 이런 방식으로 코드가 준비되기 전에 테스트를 실행하면 이중 테스트가 수행되므로 테스트가 실제로 잘못된 코드에 반응하는지 확인합니다.


7

그렇습니다 그것은 당신이 그들의 일에 기초를 두는 경우에 쉽게 개발합니다. 당신은 올바른 방향으로 있습니다. 안드로이드에서, 응용 프로그램을 개발하면 다음 구조를 사용할 것입니다.

  1. 모든 화면 활동이 포함 된 기본 패키지
  2. BaseAdapter 등이 필요한 ListView, GridView를 사용하는 경우 어댑터 클래스
  3. 사용되는 경우 파싱 도우미
  4. 데이터 베이스
  5. 정적 변수를 저장할 엔터티 클래스 및 클래스
  6. 서비스 및 수신기
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.