Light Blue Pointer
본문 바로가기
개발일지

2023-10-25, Today I Learned

by 개발바닥곰발바닥!!! 2023. 10. 27.

오늘 개발한 것

https://greedydeveloper.tistory.com/81

 

[스파르타코딩클럽][팀프로젝트]키오스크 개발일지

https://github.com/minisundev/Kiosk GitHub - minisundev/Kiosk: Kiosk program for a burger place Kiosk program for a burger place. Contribute to minisundev/Kiosk development by creating an account on GitHub. github.com 오늘의 목표 오늘의 목표는 B

greedydeveloper.tistory.com

개발하면서 생각한 것

키오스크를 다시 뜯어고치면서 보니까

오버라이딩에 집착하면서 Product를 세세하게 나누고 Product에 field로 안 만들고 static으로 값을 저장해서 이용했던 과거의 방식이 얼마나 비효율적인지 알게되었다

이름 따로 가격 따로 설명 따로 각각 별개의 Static ArrayList에다 넣고 이용했는데 field의 종류와 개수, 사용하는 함수가 모두 동일한 객체들을 Subclass로 세세하게 쪼개니까 너무 비효율적이었음

field가 동일한 객체들을 어떻게 잘 일반화하여 하나의 객체로 묶어내느냐가 효율적인 코드에 중요한 거 같다

그리고 오버라이딩에 대한 집착을 버리기로 했다 클래스 설계가 효과적으로 되는 것이 그 무엇보다도 중요하다고 느꼈다

클래스 설계가 효율적으로 되자마자 if else나 switch로 case 분류해야 했던 코드가 이십몇줄이나 줄어드는 기적을 보았다

하다보니까 메뉴랑 상품이랑 상속관계가 있으면 안 될 거 같아서 그냥 extends 빼고 분리했는데 처음부터 그런 생각이 드는 설계를 잘 하는 개발자가 되고싶다

Menu 안에 Product들이 담겨야 하는데 그럼 상속되면 구조가 이상해진다는 걸 개발하다가 깨달았다

내가 초보라서 항상 일단 코드 우다다다 써놓고 좀 이상하니까 효율적으로 되도록 클래스 설계부터 그냥 모든걸 뜯어고치는 거 같은데 코드를 다량으로 써놓고 수정하려니까 에러날까봐 좀 조심스럽게 단계적으로 고치게 되고 일이 무척이나 쓸데없이 많아진 걸 느꼈다 코드를 새로 작성하는 것보다 이미 비효율적으로 많이 짜놓고 나중에 개선하는게 더 힘들다는 것을 느꼈다

 

그리고 자바 기반으로 자료구조에 대해서 공부하고 싶어졌다 

현재 코드에서 for문으로 하나하나 대조하면서 상품이나 메뉴를 찾고 있는데

며칠 전에 코테 푸는데 딕셔너리 안 쓰고 for문으로 하니까 되긴 되는데 시간초과로 통과가 안 돼서 딕셔너리로 푼 문제가 떠올랐다. 

for문 돌리는게 너무 비효율적으로 느껴져서 HashMap에다 인덱스랑 이름만 따로 저장해볼까 하는 생각이 들고 좀 데이터를 효율적으로 다루는 개발자가 되고싶어졌다.

 

맨날 뭔가 처리해야할때 함수를 return 한 후에 호출한 함수에서 처리하는 식으로 함수를 짰었다

왜 그런 버릇이 있는지는 모르겠으나 오늘 코드를 다시 보면서 내 습관이 비효율적이고 상당히 좋지 못한 방식이라는 걸 느끼게 되었다

남들이 이해하기에 상당히 어렵고 코드가 지저분해지는 방식인 거 같다

오늘 그냥 호출된 함수 내에서 처리를 다 끝내는 방식으로 함수를 수정하니까 함수 이름이랑 함수에서 처리하는 일이 맥락에 맞고 딱딱 함수별로 수행하는 일이 구분이 되면서 더 깔끔해졌다

 

그리고 내가 어떻게 허접한지를 깨달아가는 과정이 너무 재밌다 예전에는 개발에 미쳐서 주말에도 사이드프로젝트 하는 사람들 이해가 안 됐는데 지금은 이해가 간다

이런 기본적인 과제 하는데도 어제보다 나아지는걸 느끼고 재밌는데 개발자로 성장하는게 어떻게 재미가 없을수가 있을까

빨리 취직해서 사수한테 코드리뷰도 당해보고싶고 이것보다 더 복잡하고 큰 프로그램 개발에 일조하면서 더 많은 생각을 하면서 더 나은 개발을 하는 사람이 되고싶다

 

'개발일지' 카테고리의 다른 글

2023-10-31, Today I Learned  (0) 2023.10.31
2023-10-30 Today I Learned  (1) 2023.10.30
2023-10-23 Today I learned  (0) 2023.10.23
2023-10-20 Today I Learned  (1) 2023.10.20
2023-10-19, Today I Learned  (1) 2023.10.19