3주차 미션 : Coordinate, RentCompany https://github.com/woowacourse/java-coordinate 후기 요구사항과 구현내용이 그나마 가장 쉽고 단순한 구조였다. 이론으로만 알고있던 상속과 인터페이스를 오랜만에 직접 코드로 적용하려니 어색했다. 내 코드 피드백 자식들의 공통부분을 최대한 부모 AbstractFigure로 끌어 올려라. 예를 들어, 두 점 사이의 거리를 구하는 로직은 자식에서 모두 사용하므로 부모로 올릴 수 있다. List points를 올린것도 잘 한 선택. 만약 Line은 쓰지않고, Triangle과 Rectangle만 공통으로 사용하는 부분이 있다면, 새로운 객체를 생성해 상속하는 방법도 고려해볼법. 사고에 갖히지 말자. 당시의 내 Input..
2주차 미션 : 문자열 덧셈 계산기, 사다리 게임 https://github.com/woowacourse/java-ladder 후기 business logic이 꽤 어려웠다. 오히려 이후의 좌표, 로또가 핵심로직은 더 쉬웠다. 쉽지않았지만, 그만큼 그 과정에서 고민할것들이 많아서 도움이 많이 된거같다. 내 코드 피드백 https://www.matheus.ro/2018/01/29/clean-code-avoid-many-arguments-functions/ 우린 인자의 개수를 max 3개로 무언의 약속을 하고 있다. 최대한 줄이도록 노력하자. 저 링크를 보면, 인자수를 줄이는 2가지의 대책이 등장한다. Extract method technique : 별도 메소드로 추출한다. Parameter Object :..
1주차 미션 : 문자열 계산기, 자동차 경주 게임 https://github.com/woowacourse/java-racingcar 후기 자동차 경주 프로그램은 프리코스때 한번 만들어봐서 수월할줄 알았으나, 페어프로그래밍이 처음이라 어려웠다. 판단의 기준이 부족하다. 클래스는 이렇게 분리하는것이 맞는지, 이 메소드는 여기에 위치하는것이 맞는지 등, 모르는 것이 참 많게 느껴진다. 이제 첫주니 점점 공부하면서 나아질것으로 기대한다. 내 코드 피드백 함수가 한가지 일만 잘하도록 최대한 메소드를 분리한것 같았는데도, 여전히 남아있었다. 피드백을 받고 리팩토링 수행 Java) enum을 활용해 if문 없애기 (with Calculator 예제) View를 분리하는 것이 익숙치 않았고, 이번주에 가장 어려웠던 부..
우아한테크코스를 진행하며 접하게된 Java 개발관련 피드백과 팁들을 모아보자. 프로그래밍에 당연히 정답은 없다. 하지만 상황마다의 최선은 있으니까 이에 관한 내용들을 숙지하자. 머리속에 무의식적으로 있기도, 잊혀지기도 하므로 리스팅하고 가끔 한번씩 읽어보며 상기하자. 개발초반 연습을 위해 단정지어진or극단적인 몇가지 항목들도 포함되어 있다. 가장 자주 듣는 말이지만, 당연히 이 모든것들이 정답은 아니다 개발 피드백 ■ 기능 목록을 유지한다. 기본적으로 기능목록 단위별로 commit한다. 계속해서 업데이트하는 살아있는 문서를 만들자. 구현하다보면 설계와 목록이 계속해서 바뀐다. 처음부터 완벽히 작성하려는 부담을 갖지말자 따라서 클래스와 메소드 구성까지 상세히 작성하지 않는다. 역시 자주 바뀌기 때문. 기능..
Strategy Pattern (전략 패턴) 특정 컨텍스트(Context)에서 알고리즘, 전략(Strategy)을 별도로 분리하는 설계 방법 예시 ) 과일 매장의 할인 정책 한 과일 매장은 현재 2가지의 할인 정책을 열고 있다. 매장에 처음으로 들어온 첫 손님을 위한 '첫 손님 할인' 정책 저녁시간대 신선도가 떨어진 과일에 대한 '덜 신선한 과일 할인' 정책 물론 이 2가지 외에 추가적으로 할인 정책이 더 생길 가능성이 있다. public class Calculator { public int calculate(boolean firstGuest. List items) { int sum = 0; for(Item item : items) { if(firstGuest) { sum += (int)(item.get..
Abstract Factory Pattern (추상 팩토리 패턴) 비행기를 조정하고 미사일을 발사해서 적을 미사일로 맞추는 슈팅 게임을 만든다고 가정하자. 게임 플레이를 진행하는 Stage 클래스는 몇 단계인지에 따라 서로 다른 적, 장애물, 보스를 생성해야 한다. 이를 위한 Stage 클래스는 다음과 같다. 이 코드의 문제점은 단계별로 적, 장애물, 보스를 생성하는 규칙이 Stage 클래스에 포함되어 있다는 것이다. 새로운 적 class가 추가되거나, 각 단계의 보스 종류가 바뀔 때, 단계별 적 생성 규칙이 달라질 경우 등에 Stage 클래스를 함께 수정해야하고, 코드또한 복잡해진다. 따라서 Stage 클래스에서 객체생성 책임을 분리한다.**** 이때 사용되는 패턴이 추상 팩토리 패턴이다. Enemy..
Singleton pattern (싱글턴 패턴) 어떤 클래스가 최초 한번만 메모리를 할당하고 (static), 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴 생성자가 여러번 호출되어도, 실제로 생성되는 객체는 하나이고 최초에 생성한 객체를 반환한다. 즉, 단 하나의 인스턴스를 생성해 사용하는 패턴 이유, 장점 한번의 new로 고정된 메모리 영역의 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다. 싱글톤으로 만들어진 클래스의 인스턴스는 global이기 때문에 다른 곳에서 데이터를 공유하기 쉽다. DB Connection Pool (DBCP)처럼 공통된 객체를 여러개 생성해 사용해야하는 상황에서 많이 사용. 안드로이드의 경우, 각 액티비티나 클래스 별로 주요 클래스를 일일히 전달하기 번거로우므..
- Total
- Today
- Yesterday
- 우아한 테크코스
- 웹해킹
- reversing
- bfs
- Stack
- graph
- JPA
- 개발자
- webhacking.kr
- 회고
- mysql
- brute-force
- Android
- Algorithm
- 해외여행
- Vo
- 리버싱
- Android Studio
- 프로그래머스
- OneToMany
- queue
- socket
- C
- dfs
- Data Structure
- sort
- Java
- FRAGMENT
- git
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |