오목 미션을 진행하면서 렌주룰의 금수를 처음 알게 되었다. 렌주룰의 금수 : 먼저 시작하는 흑돌이 무조건 유리하기 때문에 흑목은 3-3, 4-4, 장목 등을 금지한다. 예를 들어 다음과 같은 경우가 3-3 이고 가운데에 흑돌을 놓을 수 없다. 3-3, 4-4 는 다른 사람의 코드를 사용했고 장목은 직접 만들어 사용했다. override fun isForbidden(location: Location) = OmokForbiddenRuleAdapter(board, stone).isForbidden(location) || OmokLongForbidden.isForbidden(board, location, stone) 그러다보니 위와 같이 코드를 작성했다. 가독성도 떨어지고 확장성이 떨어져서 좋지 못한 구조이다...
코틀린
테스트 주도 개발 (Test-driven development TDD) 여기서 가장 중요한 단어는 development 이다. d가 들어간 단어가 많은데 Development 인지 design 인지 구분해야한다. TDD 는 development 이므로 TDD로 넘어가기 전에 설계(design) 을 끝내야 한다. design에 대한 고민을 안하고 TDD 를 하려고 하면 어렵다. TDD를 사용하면 자신감을 불어 넣어 준다.TDD = TFD(Test First Development) + 리팩터링 클래스 설계, 명세, 기능 요구사항 분석은 사전에 수행 TDD의 사이클실패 테스트 작성테스트가 빨리 통과 되게끔 만든다. -> 죄악을 저지른다. 밑에 나오는 예시를 보면 죄악이 어떤건지 알게될 것이다ㅎㅎ리팩터링 ->..
이전 글에 이어서 현직자 분의 step2 리뷰 입니다. 반복되는 리뷰는 앞 글에서 묶어서 이미 정리하였습니다. 1. 재사용 가능하게 만들어라 class RaceTime(private var time: Int) { ... fun reduceTime(): Boolean { if (time Unit) { repeat(time) { func() } } } repeatTimes는 함수를 인자로 받아 time 만큼 반복한다. 컨트롤러에서 반복하고 싶은 함수를 전달한다. 기존 var time 은 이제 불변 변수 val 로 변경한다. class Controller(){ private fun race(cars: List, raceTime: RaceTime) { outputView.printExecutionResult()..
현직자 리뷰어 님의 피드백을 바탕으로 정리하였습니다. 페어 프로그래밍 리뷰 페어 프로그래밍을 처음해봐서 아직 제대로 이해하지 못한 코드를 많이 적용하게 되었고 그러다 보니 이해도가 점점 떨어지게 되었다. 리뷰 또한, 당연하게도 제대로 이해하지 못한 것들의 질문을 많이 받게 되었다. 그 질문들에 대한 답을 간단하게 정리해 본다. 1. 스켈레톤 코드 커밋 프리코스 때 부터 시작하기 전에 대략적인 구조를 만들고 그 구조에 맞게 클래스를 미리 정의하고 커밋했다. 기능을 구현하는 과정에서 어떻게 구현을 해 나갈지 모르고 구현 시 코드에 많은 변경이 있을 것이다. 따라서 작성자 본인 외에 알기 어려운 커밋 단위는 좋지 않은 커밋이다. 귀찮음을 피하는 것은 커밋으로 해결해선 안된다. 2. 멤버 변수로 사용할 필..