분류 전체보기692 [Refactoring] 긴 매개변수 목록 (Long Parameter List) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 4. 긴 매개변수 목록 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 어떤 함수에 매개변수가 많을수록 함수의 역할을 이해하기 어려워 진다. 과연 그 함수는 한가지 일만 하고있는것이 맞는가? 불필요한 매개변수는 없는가? 하나의 레코드로 뭉칠수 있는 매개변수 목록은 없는가? 어떤 매개변수를 다른 매개변수를 통해 알아낼 수 있다면 => “매개변수를 질의 함수로 바꾸기 (Replace Parameter with Query)”를 사용할 수 있다. 기존 자료구조에서 세부적인 데이터를 가져와서 여러 매개변수로 넘기는 대신, “객체 통째로 넘기기 (Preserve Whole Object)”를 사용할 수 있다. 일부 매개변수들이 대.. BackEnd/Refactoring 2022. 2. 23. [TIL] 일일 회고 2022/02/22 오늘 할 일 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1. 백기선 리팩토링 강의 3단원 남은 4강좌 듣기 (완료) HTML 삽입 미리보기할 수 없는 소스 긴함수와 잛은 함수의 기준은 몇줄일까? 이는 사람마다 다를 수 있다. " data-og-host="blogshine.tistory.com" data-og-source-url="https://blogshine.tistory.com/251" data-og-url="https://blogshine.tistory.com/251" data-og-image="https://scrap.kakaocdn.net/dn/vng1h/hyNvqPzwQ3/PCxZLTwmCvQvjss6UEGQyk/img.png?width=636&height.. CODE SQUAD/회고록 2022. 2. 22. [Refactoring] 긴 함수 (Long Function) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 3. 긴 함수 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 긴함수와 잛은 함수의 기준은 몇줄일까? 이는 사람마다 다를 수 있다. 다만, 코드를 읽어 나갈때 "의도"가 한눈에 전달이 된다면 짧은 코드이고, "구현"에 해당하는 부분이 많아 한줄 한줄 읽어 나가야 한다면 긴 코드라고 할 수 있다. "과거에는" 작은 함수를 여러번 호출하면 더 많은 서브루틴의 호출로 인해 오버헤드가 있었지만, 요즘의 하드웨어는 너무나 성능이 좋기 때문에 고려하지 않아도 좋다. 사용해볼 리팩토링 기술 들로는~ 99%는 함수 추출하기로 해결 가능하다. 함수로 분리하면서 해당 함수로 전달해야 할 매개변수가 많아진다면 다음과 같은 리팩토링을 고려.. BackEnd/Refactoring 2022. 2. 22. [TIL] 일일 회고 2022/02/21 오늘 한 일 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1. Lotto 게임 1단계 완성하기 (짝 프로그래밍을 통해 진행중, 중간까지만 완성) 2. 백기선 리팩토리 강의 3강 절반 듣기. (달성) 3. 알고리즘 1문제 풀기 (달성) [백준][C++] 9251번: LCS 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 blogshine.tistory.com 1. 짝 프로그래밍 진행 산토리와 2인 1조가 되어 짝프로그래밍(패어프로그래밍)을 진행하게 되었다. 드라이버와 네비게이터의 역할을 나.. CODE SQUAD/회고록 2022. 2. 21. [주간 회고] 2022/2/14 ~ 2/19 주간 회고록 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번주는 각 클래스별 마스터 과정의 첫주차 였다! 이번주는 사다리 게임을 만들어가는 과정 이였다. 다행이도 TDD의 사이클이 몸에 적용되 있어 코드로 적용하는데 어렵지는 않았다. 다만 항상 그렇듯, 시작지점을 찾기가 어렵다... 사다리 게임은 무엇을 맨 처음 만들면서 시작해야 했을까? 나는 Line부터 만들기 시작했는데 잘한것 인지 모르겠다? 일일 회고록 이번 과정부터는 일일 회고도 좀더 추가할 예정이다. 기존 CS과정에서는 이미 알고있었던 CS 내용들이라 큰 어려움이 없어 일일 삽질 회고는 작성하지 않았는데, 이번 과정 부터는 일일회고에 삽질을 남길 예정이다. HTML 삽입 미리보기할 수 없는 소스 1. Lea.. CODE SQUAD/회고록 2022. 2. 21. [백준][C++] 9251번: LCS <189> 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 생각의 흐름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이 문제는 두 개의 문자열이 주어졌을 때, 최장 공통 부분 수열(Longest Common Subsequence)을 찾는 문제이다. 마지막 글자를 비교한다고 생각하면서 풀면 편하다. 두 문자열 "ABCDE"와 "ABDHE"를 생각해 보자... Algorithm/백준 2022. 2. 21. [Review] 사다리 구현 4단계 - 리팩토링 2 (2022/02/20) 코드리뷰 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번 리뷰는 Dion이 해주셨다!! 감사합니다 Dion!! 1. Depth 2 지키기 모든 부분에서 depth2를 지켰다고 생각했는데, 인식하지 못한 부분이 있었다... 기존의 코드는 다음과 같았다. public int[] makeStartPositions() { int totalPositions = ladderSize.getTotalPositions(); int countOfLine = ladderSize.getCountOfLine(DEFAULT_PERCENT); int[] startPositions = new int[countOfLine]; for (int i = 0; i < startPositions.lengt.. CODE SQUAD/FeedBack 정리 2022. 2. 20. [백준][C++] 2206번: 벽 부수고 이동하기 <188> 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 생각의 흐름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번 문제는 진짜 중요한 점을 배웠다. 그냥 단순 BFS로 생각하면 막히는 문제이다. 분명 논리적으로 맞는것 같지만, 기존 BFS 보다 한끝 더 생각해야 하는 중요한 부분이 있다. 핵심부터 말하면 visited[1000][1000][2] 과 같이 3차원 배열.. Algorithm/백준 2022. 2. 20. [오브젝트] 메시지와 인터페이스 (7장) 조영호님의 오브젝트 라는 책을 읽으며, 공부 내용을 정리하는 용도로 간략하게 정리해 봅니다. 오브젝트: 코드로 이해하는 객체지향 설계 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라! 객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두 번째 걸음은 객체를 wikibook.co.kr 객체지향 애플리케이션의 가장 중요한 재료는 클래스가 아니라 객체들이 주고 받는 메시지다. 클래스 사이의 정적인 관계에세 메시지 사이의 동적인 흐름으로 초점을 전환하는 것은 미숙함을 벗어나 숙련된 객체지향 설계자로 성장하기 위한 첫걸음 이다. 애플리케이션은 클래스로 구성되지만, 메시지를 통해서 정의 된다. 1. 협력과 메시지 " data-ke-type="html"> H.. BackEnd/OOP 2022. 2. 20. [Refactoring] 중복 코드 (Duplicated Code) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 2. 중복코드 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 중복되는 코드는 제거하여 코드의 가독성을 높혀야 한다. 동일한 코드를 여러곳에서 사용하는 경우 => 함수로 추출하기 (Extract Function) 코드가 어느정도는 비슷하게 생겼지만, 완전하게 같지는 않은경우 => 코드 정리하기 (Slide Statements) Slide Statements는 말 그대로 문단의 위치를 조종하는 것 이다. 여러 하위클래스에 동일한 코드가 있다면 => 메서드 올리기 (Pull Up Method) 위와 같은 방식으로 중복 코드를 제거 할때는 동일한 코드 부분 모두를 변경해주어야 한다. 일부분 만 변경해주면 나중에 버그가 발생.. BackEnd/Refactoring 2022. 2. 20. [Refactoring] 이해하기 힘든 이름 (Mysterius Name) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 1. 이해하기 힘든 이름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 깔끔한 코드에서 가장 중요한 것 중 하나가 바로 “좋은 이름”이다. 함수, 변수, 클래스, 모듈의 이름 등 모두 어떤 역할을 하는지 어떻게 쓰이는지 직관적으로 이해할 수 있어야 한다. 다음과 같은 방식으로 이름을 리팩터링 할 수 있다. 함수 선언 변경하기 (Change Function Declaration) 변수 이름 바꾸기 (Rename Variable) 필드 이름 바꾸기 (Rename Field) 1. 함수 선언 변경하기 함수의 선언 변경에는 함수 이름 변경하기, 메서드 이름 변경하기, 매개변수 추가하기, 매개변수 제거하기, 시그니처 변경하기.. BackEnd/Refactoring 2022. 2. 19. [Spring] MVC 프레임워크 만들기 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 프론트 컨트롤러 패턴에서 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다! 1. 프론트 컨트롤러 도입 - v1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간의 목표는 기존 코드를 최대한 유지하면서, 프론트 컨트롤러를 도입하는것 이다. 먼저 구조를 설계하고, 이후 점진적으로 리펙터링 해나갈 것 이다. 우선 모든 컨트롤러들이 공통적으로 구현해야하는 ControllerV1 이라는 interface를 구현해 보자. 코드는 다음과 같다. public interface ControllerV1 { void process(HttpSer.. BackEnd/Spring MVC 2022. 2. 19. 이전 1 ··· 35 36 37 38 39 40 41 ··· 58 다음