Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

경북대 Android_주수민 1주차 과제 제출합니다 #21

Open
wants to merge 24 commits into
base: cleonno3o
Choose a base branch
from

Conversation

cleonno3o
Copy link

@cleonno3o cleonno3o commented Jun 28, 2024

Step1 커밋

https://github.com/kakao-tech-campus-2nd-step2/android-contacts/pull/21/files/e7fbecc6dfe910570e2339f092309fadce9c1bbc

어려웠던 점

  • 인텐트로 객체를 전달함에 있어 시간이 오래걸렸던 것 같습니다. 일반적인 자료형과 전달하는 방법이 달랐고 전달하는 과정에서 사용했던 Serializable, data class, Kotlin에서 static 변수처럼 동작하는 방법등에 대해 알아보고 적용하느라 시간이 많이 들었던 것 같습니다

  • View가 모든 상황에서 적절하게 표시되도록하는데 시간이 많이 걸렸습니다. 기능 구현을 하고 테스트를 할때 단순히 몇글자를 치거나 세로 화면비가 긴 디바이스에서는 모든 view가 적절하게 표시되어 넘어갔는데 이후에 다양한 기기와 입력을 가지고 테스트를 해보니 가려지는 상황이 발생했습니다. 이를 처음부터 염두하고 다양하게 테스트를 해야겠다고 느꼈습니다.

  • 코드를 정리하고 다듬데에 어려움을 겪었습니다. 지금까지 혼자 코드를 짜고 평가받았던 경험이 없어 어떤 것이 좋은 방향이고 그렇게 하기위해서는 어떻게 수정해나가야하는지를 알기 어려워 이번과제를 제출하면서도 뭔가 아쉬운 느낌이 듭니다.

중점적으로 리뷰해주셨으면 하는 부분

  • 메서드 분리가 적절한지 궁금합니다. step1때에도 평가를 받을 때 메서드 분리가 조금 더 되었으면 좋겠다는 피드백을 받았는데 구체적으로 명시해주시지 않으셔서 어디가 더 분리될 수 있는지 스스로 파악하기에 어려움을 겪었습니다. 가능하시다면 어디가 더 분리되어야하는지, 어떻게 분리되는 것이 좋은지와 같이 구체적으로 명시해주시면 감사하겠습니다!

  • 매개변수 전달관련하여 적절한지 궁금합니다. 함수로 분리하고자하니 전달해야할 정보가 많아 여러 함수에서 전달받는 매개변수가 제가보기에는 좀 많아 보이는데 이를 어떻게 개선할 수 있을 지 궁금합니다

  • 커밋단위가 적절한지 궁금합니다. 저는 구현하기로 한 기능의 UI 를 틀만 만들고 이후에 기능구현, UI를 목표에 맞게 수정. 이렇게 진행을하고 각각 커밋을 했는데 오히려 커밋기록을 살펴보기 어렵게 만든 것인지 잘 모르겠습니다.

  • 이외에도 코드리뷰라는 것을 카테캠에서 처음받아봐서 많은 부분에서 부족할 것 같습니다! 자세히 리뷰해주시면 해당 부분에 대해 열심히 공부해보겠습니다!

실행화면

cleonno3o added 24 commits June 25, 2024 14:16
이전 구현기능 체크표시 기록
달력 유효입력 검사는 DatePickerDialog를 통해 입력받기때문에 필요없어 구현목록에서 제거
EditText:
- 배경색을 변경
- 각 View마다 margin 추가

ConstraintLayout:
- 키보드가 표시되어 화면영역이 좁아졌을 때 스크롤 가능하도록 구현

Button:
- 키보드가 표시되어 버튼을 가릴 때 가려지지 않고 위에 표시되도록 수정
상태가 변할때를 알고 있을 필요가 없어 불필요한 코드 삭제
id 변경, 취소/저장 버튼과 배치 수정
Step2에서 구현할 기능 목록 정리
- 기존에 임의로 생성한 추가버튼 삭제
- floating action button을 사용해 구현
RecylerView를 사용하여 구현했기 때문에 자동적으로 스크롤을 지원함
- 제시된 예시와 유사하게 수정
- 연락처의 개수가 0이 아닐 때 초기 안내 텍스트뷰가 안보이도록 수정
ContactActivity:
- onStop, onPause 생명주기 상속 제거
- 각 리스너에서 동작하는 코드를 함수로 분리

ContactInfoActivity:
- Contact의 정보를 View에 연결하는 과정 함수로 분리

Contact:
- Intent를 주고받을 때 사용할 key 상수 추가

MainActivity:
- 기능을 각각 최소한의 기능을 하는 함수로 분리
기존의 임의로 설정한 이미지 외에 이름에 맞게 표시되도록 수정
@cleonno3o cleonno3o changed the base branch from main to cleonno3o June 28, 2024 08:24
@JSpiner JSpiner self-requested a review July 1, 2024 12:34
Copy link

@JSpiner JSpiner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요! 주수민님과 코드리뷰를 계속 진행하게될 정성민 멘토라고 합니다 🙌
가볍게 첫 리뷰를 남겨보았습니다.

더 궁금하신게 있다면 멘토링 신청을 해주시거나 슬랙으로 문의주셔도 좋아요~~

커밋단위가 적절한지 궁금합니다. 저는 구현하기로 한 기능의 UI 를 틀만 만들고 이후에 기능구현, UI를 목표에 맞게 수정. 이렇게 진행을하고 각각 커밋을 했는데 오히려 커밋기록을 살펴보기 어렵게 만든 것인지 잘 모르겠습니다.

네 리뷰하기에 나쁘지 않았습니다.

var mail: String,
var birth: String,
var sex: Int,
var memo: String) : Serializable {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기 코드스타일이 조금 이상하네요
커밋하시기 전에 IDE의 reformat code 기능을 이용하면
코드스타일을 일관되게 유지할수 있어요!

}
}

fun registerBackPressedCallback(name: EditText, phoneNumber: EditText, mail: EditText,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

registerBackPressedCallback isInfoEmpty 함수들에서 editText 등을 매번 전부 받고있는데
이 뷰들을 전역변수로 관리하면 어떨까요? 매번 함수 파라미터로 넘기는건 불편할거 같아서요

}
}

private fun saveInfo(name: EditText, phoneNumber: EditText, mail: EditText,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기 saveInfo 함수명과 실제 역할이 좀 다른거 같네요
함수명만 보면 저장을 해줄거 같은데, 실제론 객체 생성만 해주고 있어서요

updateAdapter(contactAdapter, contactList.size - 1)
Toast.makeText(this, "저장이 완료 되었습니다", Toast.LENGTH_SHORT).show()
} else
Toast.makeText(this, "Contact is Null", Toast.LENGTH_SHORT).show()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

메서드 분리가 적절한지 궁금합니다. step1때에도 평가를 받을 때 메서드 분리가 조금 더 되었으면 좋겠다는 피드백을 받았는데 구체적으로 명시해주시지 않으셔서 어디가 더 분리될 수 있는지 스스로 파악하기에 어려움을 겪었습니다. 가능하시다면 어디가 더 분리되어야하는지, 어떻게 분리되는 것이 좋은지와 같이 구체적으로 명시해주시면 감사하겠습니다!

어떤단위로 쪼개면 좋을지 한번 목표를 잡아보시겠어요?
어떤 개념이나 그렇겠지만 무조건 잘게 쪼갠다고 좋은건 아니고 뭉쳐둔다고 좋은건 아닙니다.
나만의 기준을 정하고 그에 맞춰서 구현 해보면서 좋은 방향을 찾아보면 될거 같아요.

좀 많이 쓰이는 기준으로 말씀을 드리면 중복코드나, 하나의 기능 단위로 분리를 해보셔도 좋을거 같아요
예를들어 지금 Toast.makeText로 토스트 메세지를 띄우는 부분을 하나의 함수로 추출하셔도 좋을거 같아요.
왜냐하면 Toast.LENGTH_SHORT 같은 설정이 한번에 바뀔수도 있고,
.show() 같은 부분은 중복된 코드기도 하니까요

} else
Toast.makeText(this, "Contact is Null", Toast.LENGTH_SHORT).show()
if (contactList.size > 0)
findViewById<TextView>(R.id.init_message).visibility = TextView.GONE
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GONE 시키는 로직만 있고 다시 visible로 바꿔주는 로직은 없는데
다시 돌아올 가능성은 없나요?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants