profile
FE developer of MDAG
post-thumbnail

Clean Code #14 점진적인 개선

깨끗하고 우아한 프로그램을 한 방에 뚝딱 내놓을 수 없다. 프로그래밍은 과학보다 공예에 가깝다.깨끗한 코드를 짜려면 먼저 지저분한 코드를 짠 뒤에 정리해야 한다.먼저 1차 초안을 쓰고, 그 초안을 고쳐 2차 초안을 만들고, 계속 고쳐 최종안을 만들어야 한다.깔끔한 작품

2021년 3월 21일
·
0개의 댓글
post-thumbnail

Clean Code #13 동시성

객체는 처리의 추상화다. 스레드는 일정의 추상화다.동시성과 깔끔한 코드는 양립하기 어렵다.단일 스레드 프로그래밍은 상대적으로 쉬운 편에 속한다.다중 스레드 코드도 맘만 먹으면 코드를 쉽게 작성할 수 있다.하지만 쉽게 작성한 다중 스레드 코드는 시스템의 부하가 큰 환경에

2021년 3월 21일
·
0개의 댓글
post-thumbnail

Clean Code #12 창발성

창발성 : 창발(創發)또는 떠오름 현상은 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상이다. 또한 불시에 솟아나는 특성을 창발성(영어: emergent property) 또는 이머전스(영어: emergence

2021년 3월 21일
·
0개의 댓글
post-thumbnail

Clean Code #11 시스템

복잡성은 죽음이다. 개발자에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다.Ray Ozzie, Microsoft CTO본 요약은 이해가 전혀 뒷받침되지 않은 요약입니다.. 학습용으로 읽기를 권장하지 않습니다..도시는 혼자서 관리할 수 없다. 수

2021년 3월 14일
·
0개의 댓글
post-thumbnail

Clean Code #10 클래스

표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다. 정적 공개 상수가 있다면 가장 먼저 나온다. 다음으로 정적 비공개 변수, 이어서 비공개 인스턴스 변수가 나온다. 공개 변수가 필요한 경우는 거의 없다. 변수 목록 다음에는 공개 함수가 나오며 비공개 함수는 자신

2021년 3월 14일
·
0개의 댓글
post-thumbnail

Clean Code #9 단위 테스트

애자일과 TDD 덕택에 단위 테스트를 자동화 하는 프로그래머들이 이미 많아졌으며 점점 더 늘어나는 추세다. 하지만 우리 분야에 테스트를 추가하려고 급하게 서두르는 와중에 많은 프로그래머들이 제대로 된 테스트 케이스를 작성해야 한다는 좀 더 미묘한 사실을 놓쳐 버렸다.T

2021년 3월 8일
·
0개의 댓글
post-thumbnail

Clean Code #8 경계

시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 때로는 패키지를 사고, 떄로는 오픈 소스를 이용한다. 떄로는 사내 다른 팀이 제공하는 컴포넌트를 사용한다. 어떤 식으로든 이 외부코드를 우리 코드에 깔끔하게 통합해야만 한다. 이 장에서는 소프트웨어 경계

2021년 3월 7일
·
0개의 댓글
post-thumbnail

Clean Code #7 오류 처리

상당수 코드 기반은 전적으로 오류 처리 코드에 좌우된다. 여기서 좌우된다는 표현은 코드 기반이 오류만 처리한다는 의미가 아니다. 여기저기 흩어진 오류 처리 코드 때문에 실제 코드가 하는 일을 파악하기가 거의 불가능하다는 의미이다.이 장에서는 깨끗하고 튼튼한 코드에 한걸

2021년 3월 7일
·
0개의 댓글
post-thumbnail

Clean Code #6 객체와 자료구조

변수를 private으로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 get 함수와 set 함수를 당연하게 public으로 선언해 비공개 변수를 외부에 노출할까?두 클래스 모두 2차원 점을 표현한다. 그런데

2021년 3월 7일
·
0개의 댓글
post-thumbnail

Clean Code #5 형식 맞추기

프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 코드 형식을 맞추는 목적 > ‘돌아가는 코드’가 전문 개발자의 일차적인 의무라 여길지도 모르겠다. 그러나 오늘 구현한 코드의 가독

2021년 3월 7일
·
0개의 댓글
post-thumbnail

Clean Code #4 주석

나쁜 코드에 주석을 달지 마라. 새로 짜라 잘 달린 주석은 그 어떤 정보보다 유용하다. 그러나 경솔하고 근거 없는 주석은 코드를 이해하기 어렵게 만든다. 부정확한 주석은 아예 없는 주석보다 훨씬 더 나쁘다. 부정확한 주석은 독자를 현혹하고 오도한다. 진실은 한곳에만 존

2021년 3월 3일
·
0개의 댓글
post-thumbnail

Clean Code #3 함수

함수를 만드는 첫째 규칙은 '작게!'다. 함수를 만드는 둘째 규칙은 '더 작게!'다. 이 규칙은 근거를 대기가 곤란하다. 그러나 저자는 오랜 시행착오를 바탕으로 작은 함수가 좋다고 확신한다. 더 짧게, 더 더 짧게,만들수록 좋다고 저자는 설명한다. 다시 말해 if

2021년 3월 1일
·
0개의 댓글
post-thumbnail

Clean Code #2 의미 있는 이름

"의도가 분명하게 이름을 지으라" 고 말하기는 쉽다. 여기서는 의도가 분명한 이름이 정말로 중요하다는 사실을 거듭 강조한다. 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 이름 d는 아무 의미도 드러내지 않는다. 경과시간이나 날짜

2021년 3월 1일
·
0개의 댓글
post-thumbnail

Clean Code #1 깨끗한 코드

코드가 사라질 것이라 말하는 사람들이 있다. 하지만 이 책은 코드는 항상 존재할 것이라 말한다. 궁극적으로 코드는 요구사항을 표현하는 언어이다. 요구사항에 더욱 가까운 언어를 만들 수도 있고, 요구사항에서 정형 구조를 뽑아내는 도구를 만들 수도 있다. 하지만 어느 순

2021년 3월 1일
·
4개의 댓글
post-thumbnail

Dynamic Programming II

첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)가 주어진다.입

2021년 2월 1일
·
0개의 댓글
post-thumbnail

Dynamic Programming I

준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다.준규는 현재 (1, 1)에 있고, (N, M)으로 이동하려고 한다. 준

2021년 1월 24일
·
0개의 댓글
post-thumbnail

Möbius inversion formula (BOJ 1792)

Möbius inversion formulag와 f가 수론적 함수(arithmetic function)이며$g(n)=\\sum{d\\mid n}{f(d)}$ 이면 $f(n)=\\sum{{d\\mid n}}g(d)\\mu (n/d)$ 이다.뫼비우스 반전공식을 시작하기에

2020년 12월 4일
·
0개의 댓글
post-thumbnail

Hirschberg's Trick(BOJ 18438)

점화식 : $DPi=min(DPi−1,DPi)+Ci$Naive Complexity: $O(nm)$ memory usageOptimized COmplexity: $O(n+m)$ memory usageHirschburg's Trick은 대회에 많이 출제되거나 유용한 알고리

2020년 12월 4일
·
0개의 댓글
post-thumbnail

Typescript Docs - Unions and Intersection Types

유니언 타입은 여러 타입 중 하나가 될 수 있는 값을 의미합니다. 세로 막대 (|)로 각 타입을 구분하여, number | string | boolean은 값의 타입이 number, string 혹은 boolean이 될 수 있음을 의미합니다.유니언 타입인 값이 있으면,

2020년 11월 16일
·
0개의 댓글
post-thumbnail

Typescript Docs - Literal Types

TypeScript에는 문자열과 숫자, boolean 세 가지 리터럴 타입이 있는데 이를 사용하면 문자열이나 숫자에 정확한 값을 지정할 수 있습니다.const로 변수를 선언하게 되면 TypeScript에게 이 객체는 절대 변경되지 않음을 알립니다.위 예시에서 hell

2020년 11월 16일
·
0개의 댓글