매번 만들때 설계없이 그냥 case by case로 만들었는데요..
설계과제가 나와서 생각해보니 지금까지 너무 막 만들었단 느낌도 들고.. 다르게 생각하면 이렇게 하는게 효율적일수도 있단 생각도 들고 그래서요..
지금까지 대부분 기능적인 부분을 액티비티 단위로 해서 해당 액티비티에서 사용하는 기능은 액티비티 클래스 내에 메서드로 만들어서 구현했습니다.
예를 들어 게시판에 글쓰기 글조회 글삭제 라는 기능이 있다고 가정할때
게시물을 조회하는 기능은 게시물 리스트가 보이는 액티비티에 만들어두고
글쓰기와 글삭제는 게시물을 보는 액티비티에 만들어두는 형식으로요..
그런데 설계할때는 보통 게시판 클래스를 만들고 내부에 글쓰기, 글조회, 글삭제 기능을 메서드로 구현해두잖아요..
화면 단위로 볼때는 제가 쓰던 방식이 더 직관적이라 생각합니다.. 하지만 코드가 길어질수록 정리가 안되는 느낌이 많이 드네요..
일반적으로 개발하실때 어떤 방식으로 사용하시는지요..
지금까지 짧은 예제들만 봐서 그런지 대부분 저처럼 구현되있는걸 많이 봐서 저도 그렇게 따라가고 있었네요..
--------------
게시판을 만든다는 기준으로 어떻게 만드는게 좋은걸까요..
생각해보면 또 좀 이상한게.. 게시판 클래스를 만들었다고 가정하고,, 게시판의 기능을 사용하고자 할때
Board board = new Board()로 객체를 생성할텐데.. A액티비티와 B액티비티에서 사용하는 게시판은 같은 게시판인데..
A에서 생성한 board객체를 B액티비티에서 쓸수 없지 않나요.. 액티비티간 Object 타입의 전달이 가능한지..
만약 단순히 기능적인 부분만을 위한 Board 클래스라면.. 객체 생성 없이 static 클래스로 만들어야 할지요..
아 헷갈려요 ㅠ
클래스를 만들고 분류하는 건 아시는대로 "유지,보수" 의 용이성 때문이겠죠.
만일 "절대로" 재활용 될수 없고 내용이 짧은 소스는 불필요하게 메서드화 해서 사용할 필요까지는 없겠죠.
닥치는대로 때려넣은 소스는 현재는 코딩하고 쉽고 직관적이게 보일지 몰라도, 일주일만 그 소스를 안보고 있다가 다시 열게 되면
만든 본인 조차도 헤깔리게 됩니다. 뭐 아시는 내용이라고 생각됩니다.
프로그램이란게 한번 만든다고 해서 절대로 완성되는게 아니라 개발후에도 유지보수 및 수정, 기능 추가가 반드시 필요하며,
이 때, 객체지향적 설계가 제대로 이루어졌다면, 비교적 쉽게 블럭쌓듯이 만들고 수정하겠죠.
이는 규모가 작은 프로젝트보다는 큰 프로젝트에서 실감하시리라 생각됩니다.
제 짧은 지식으로 안드로이드 게시판을 만든다고 했을때, 일단은 DB 파트 클래스, 어댑터 클래스, 커스텀뷰 클래스들, 엑티비트들, 유틸 클래스 정도로 분류하고, 안드로이드의 뷰위젯들은 그대로 사용하기 보다는 커스텀을 많이 하기 때문에 얼마나 다용도로 재활용될수 있게 커스텀 뷰를 만드느냐가 중요하지 않나 싶네요. 그리고 말씀하신 단순한 기능을 가진 메서드들은 별도의 유틸 클래스에서 static 화하여 정의하고 사용할것 같습니다.
만일 엑티비티간 객체를 전달해야한다고 했을때는 parcel, serialize 를 활용하면 가능은 하겠으나 공용적으로 활용되는것이라면 이 역시 static 하여 활용할 것 같습니다.