주간 인기 게시물

총 게시물 6,505건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[자유]

새벽에 뜬금없는 코딩 스타일 질문

글쓴이 : hsw728 날짜 : 2018-06-05 (화) 02:36 조회 : 1359
글주소 : http://www.androidside.com/B10/65368
 
  스마트영어
SK telecom 알버트와 함께하는 유치원 영어코딩 프로그램(5,6,7세)
www.kidzday.co.kr
  유아 코딩로봇 맥코딩
자석블럭과 유아 코딩로봇이 만났다. 자석블럭의 진화. 유아코딩의 신기원 맥코딩
magcoding.co.kr
  한글과컴퓨터학원코딩
영재교육원 정보영재, 정보올림피아드, C언어 프로그래밍, 자바, 파이선, 알고리즘
www.hancomac.com
신청하기


안녕하세요. 오랜만에 질문 올립니다.

어쩌면 남들은 잘 신경 안쓸수도 있는 문제일지도 모르지만,
계속 코딩하다보니 문득 궁금해져서 이 질문을 드립니다.

멤버 변수와 지역 변수에 관련됐다고도 할 수 있는 질문인데요.

바로 본론으로 들어가겠습니다.

(아래 두 코드들은 제 질문을 좀 더 구체화 시키기 위해
임의적으로 간단하게 만들어낸 벽돌깨기 코드 일부입니다.)



1.

mThread = new Thread(new Runnable()
{
@Override
public void run()
{
float ballTop = mBall.getTop();
float ballBottom = mBall.getBottom();
float ballLeft = mBall.getLeft();
float ballRight = mBall.getRight();
// 공의 상하좌우 구하기

if(ballLeft <= 0 || ballRight >= getWidth())
mBall.setSpeedX(-mBall.getSpeedX());
// 공이 가로 벽에 부딪쳤을 경우 속도(정확히는 방향)를 반전 시킨다.

if(mBallTop <= 0 || mBallBottom >= getHeight())
mBall.setSpeedY(-mBall.getSpeedY());
// 공이 세로 벽에 부딪혔을 경우 속도(정확히는 방향)를 반전 시킨다.

Block one = getBlock(x, y);
Block two = getBlock(x, y);
Block three = getBlock(x, y);
// 현재 블록 위치 좌표 값 구해오기

float padTop = mPad.getTop();
float padLeft = mPad.getLeft();
float padRight = mPad.getRight();

if(ballLeft >= padLeft && ballRight <= padRight && ballBottom >= padTop)
mBall.setSpeedY(-mBall.getSpeedY());
// 공이 패드에 충돌했을 경우 Y 좌표 이동 방향을 반전 시킨다.

...
...
...
}
}



2.

mThread = new Thread(new Runnable()
{
@Override
public void run()
{
setBallTBLR();
// 공의 상하좌우 구하기

checkWallCollision();
// 공이 벽에 부딪혔을 경우 속도(정확히는 방향)를 반전 시킨다.

getBlockXY();
// 현재 블록 위치 좌표 값 구해오기

checkPadCollision();
// 공이 패드에 충돌했을 경우 Y 좌표 이동 방향을 반전 시킨다.

...
...
...
}
}



1번 코드는 스레드 안에서 모든 걸 수행합니다.
2번 코드는 스레드 안의 코드를 깔끔하게 정리하기 위해 각 기능별로 메소드를 만들어 수행합니다.

간단명료하게 질문하자면, 여러분들은 위 1번, 2번 두 개의 코드 중 어느 코드를 더 선호하나요?
여러분들이 코딩하는 방식은 1번인지 2번인지 알고 싶습니다.

그냥 자기만의 코딩 스타일로 하면 되지 않냐고 생각하실 수 있겠지만,
다른 사람들은 어떨지 몰라도 저는 그게 쉽지가 않더군요.

전역 변수와 지역 변수의 값을 초기화하고 할당하고 수정하는 모든 과정에서 좀 더 효율적으로 관리하려면
CPU가 어떻고 메모리가 어떻고 등에 대한 하드웨어의 이해도 필요하고, 당장에 검색 조금만 해보셔도 아시겠지만
반복문 또는 쓰레드의 내부에 변수를 선언 및 사용하는 것과 외부에 선언 및 사용하는 것중에
뭐가 더 괜찮은가에 대한 것 조차도 의견들이 많이 엇갈립니다.
오래전부터 이어졌던 논쟁임에도 불구하고 말이죠.

저는 뚜렷한 답을 얻지 못하면 이런 거에 신경 많이 쓰는 피곤한 성격을 가진지라 ...
저만의 코딩 스타일을 만들어 나가는 게 어려운 거 같습니다.

서론이 너무 길었군요. 주절주절 말이 많았지만, 그냥 제가 궁금한 건 딱 하나 입니다.

여러분들은 1번인지 2번인지 ...

뜬금없는 새벽 질문이었습니다. 화이팅 하는 하루 되시길 바랍니다 !




추천/비추천 클릭하면 추천받으신 분, 추천하신 분 모두에게 포인트가 지급됩니다.

OSKiller 2018-06-05 (화) 08:42
전 케바케인것 같은데요
함수안에 라인이 50라인 이상 되면 그아네서 또 기능을 쪼갤수 있는지 확인 합니다
근데 아무리 길어도 연속성에 있어서 중요하다면 그냥 한덩어리로 놔둘수도 있습니다.
댓글주소 추천 0
은빛파도 2018-06-05 (화) 09:46
개인 프로젝트일 경우

기존 스타일은 중복이 생기거나 큰 틀로 나눠질수 있을 때 함수로 쪼갰었는데

리액티브로 전향한 뒤로는 2번 스타일 선호합니다.

업체 프로젝트일경우

문서를 함수별 정리로 요구하는 곳이 많아서 최대한 함수 안 만듭니다.. -_-;;
댓글주소 추천 0
덧없음 2018-06-05 (화) 10:24
전 유지보수를 중점으로 봅니다. 나중에 변경이 됐을때 대응하기 쉬운가.. 그래서 2번.
댓글주소 추천 0
뉴키 2018-06-07 (목) 07:39
1번처럼 하다가 2번으로 바꾸죠.

그래서 매번 후회..
댓글주소 추천 0
노련한너구리 2018-06-08 (금) 14:34
1/2번 둘다 겸용으로 사용합니다.
단순 반복 위주면 1번, 여러가지의 경우의 수가 많은 다양한 경우는 2번

벽돌깨기도 단순하게 깨기만 있으면 1번
특정 블럭에서 아이템이나 속도변화 같은 이밴트가 있으면 2번
댓글주소 추천 0
어이쿠절언 2018-06-18 (월) 10:37
위에 내용 처럼 내용이 짧으면 스레드 부분만 따로 메소드를 만들 것 같네요..
메소드 내용이 길다면 스레드에서 큰 줄기랑 기능 파트를 나누어서 메소드 제작하구요
댓글주소 추천 0
인절미후후 2018-08-19 (일) 13:10
2번입니다. 기왕이면 함수 멤버변수로 전부 해결하기 보다 인풋과 아웃풋이 있는 함수가 퓨어함수가 될수 있는 좋은 방향이라고 봅니다,
댓글주소 추천 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기