마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

신입 5개월이 다되가는 뉴비..고민입니다.

+8 추천
안녕하세요.

신입5개월다되가는 뉴비입니다.

두달간 회사의 신규 솔루션 프로젝트를 맡아서 진행하고 있습니다.

정말 막막했지만 죽이되던 밥이되던 부딪혀보자라는 마음으로

열심히 하고 있습니다.

정말 가공할 스트레스와 식은땀이 날정도의 압박감과 부담감이 많지만

어찌어찌 꾸역꾸역 해가고 있습니다.

다름이 아니라..

이렇게 진행하면서 나름 설계를 하고 코드를 짜며 하고 있긴 하지만,

정말 짜다나면 설계한대로 짜지지 않고,

정말 누더기 코드가 되어버려 자꾸 회의감이 듭니다.

덕지덕지.. 엄청 비효율적이고 지저분한 제 코드의 느낌에 자꾸 회의가 듭니다.

선배님들 조언 한마디 해주세요.

선배님들의 조언이 제겐 빛입니다.
갸아악 (21,260 포인트) 님이 2013년 3월 26일 질문
태그가... ㅎㅎㅎ
신입때부터 효율적인 코드를 짜고 뭐든지 잘하면 좋겠지만..
그런 사람은 정말 소수죠.. 너무 회의감을 갖지마시고
회사에서 이전에 개발한 소스들을 분석해보면서 다른사람들이 짜 놓은 소스를 보는것이 효율적인 소스짜는데 도움이 될겁니다.
평소에도 고민을 많이 하시다 보면 어느세 효율적이고 보기좋은 코드를 짜는 날이 올거에요.
이렇게 말하는 저도 아직 한참은 멀었지만...
몇년전에 짜놓은 소스를 보면서 어처구니 없어하는 저를 보면 그래도 발전은 하고있구나 싶습니다. 힘내세요.
누구든지 자기가 작성했던 코드를 시간이 지난뒤에 보면 부끄(?)해야 발전이 있다고 저도 들었기 때문에 걱정마세요 기본적은 패턴과 자바책을 보세요 안드로이드도 자바가 베이스니깐요
저는 디자인 패턴을 공부하면서 많은 도움이 되었습니다.

디자인 패턴을 한번 공부해 보세요~

4개의 답변

+5 추천
 
채택된 답변

최대한 모듈라이징을 해서 프로그램을 작성합니다.
UI 파트는 모듈화하기 적합하지 않아 잘 하지 않지만

프로그램의 코어부분은 최대한 기능별로 분리해서 구현을 하고있습니다.
단순히 분리만 하는것이 아니라 나름대로 기준이 있습니다.

1. 어떤 기능인지 알기쉽게 파일명, 함수명 작성
2. 입력값에 대해선 최대한 예외처리하여 예측 불가능한 입력값에 강하게 작성
3. 중요한부분, 예외처리한부분에는 로그를 출력할 수 있게 처리
   (보통 출력함수를 하나 만들고 릴리즈할땐 해당부분을 주석처리 합니다.)

이런 작업으로 많은것을 얻을 수 있습니다.

1. 소스코드의 재활용 용이
2. 어떤 기능, 어떤함수에서 오류가 발생하는지 쉽게 탐색 가능
3. 코스코드 작성시 다른코드와 섞이지 않아 덜 산만함
4. 요구사항이 변경 되었을때 수정해야 할 부분을 최소한으로 줄일 수 있음.
5. 가독성 증가

가져다가 쓸때에도 같은일을 하는 구현들은 묶어서 모아두는 습관도 좋습니다.
단적인 예로 제가 작성하는 어플리케이션의 onCreate는 아래정도에서 크게 변하지 않습니다. 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
        initComponents();
        initClicker();
        initAdam();
        DataManager.recovery(getApplicationContext());
}

 

Noizbuster (11,970 포인트) 님이 2013년 3월 26일 답변
갸아악님이 2013년 4월 2일 채택됨
+2 추천

태그 신박하네요 ㅋㅋㅋㅋ

 

저 같은 경우(저도 안드로이드 허접이지만..)는 정말 비효율 적이더라도 최대한 알아보기 좋게 주석은 지저분하지 않고 깔끔하게 다는 편입니다.

 

예를들어

startActivity(new Intent(this, B.class).putExtra("name", "lee").putExtra("is", false));

와 같이 그냥 한줄로 짜도 되는걸 

Intent myIntent = new Intent(this, B.class);

//--------------------------------
// name = 사람이름, is = 출력여부
myIntent.putExtra("name", "lee");
myIntent.putExtra("is",   false);
//--------------------------------

startActivity(myIntent);

 

처럼 최대한 나중에 봤을때 두번 고민하지 않게 짜는 편이구..

 

String defaultUrl = "http://www.soccerline.co.kr";
String naverUrl   = "http://www.naver.com";
String daumUrl    = "http://www.daum.net";
String nateUrl    = "http://www.nate.com";

변수들도 최대한 깔끔하게 정리하는 편이구요..

 

다른사람 코드도 많이 보면 장단점이 한눈에 확 들어오실 거구요.ㅎㅎ

 

프로그램들을 잘게잘게 썰어서 모듈화하는게 나중엔 더 편하더라구요 ㅎㅎ

제가 볼땐..저도 정말 허접이지만..

모듈화가 제일 중요한것 같습니다ㅎㅎ 똑같은 기능을 그냥 Ctrl+c, v로 다른 프로젝트에 붙여넣어도 

정상작동할수 있게 만드는것..

 

저도 몇년전에 짜놓은 코드 보면 그냥 한숨만 나오더라구요..화이팅!

안드로이드로우 (15,740 포인트) 님이 2013년 3월 26일 답변
0 추천
다른분들 코드보고 공부합니다.
익명사용자 님이 2013년 3월 26일 답변
0 추천
회의가 들었다는것 자체가 발전 가능성이 있다는 것이니 너무 신경쓰지 마시구 꾸준히 발전해 나가시면 되요.
동기화인생 (3,640 포인트) 님이 2013년 3월 26일 답변
...