전체 글 29

실용주의 프로그래머 2장 - 실용주의 접근법

DRY원칙 (Don't Repeat Yourself : 반복하지 마라)   코드중복 모든 지식은 시스템 내에서 한 번만, 애매하지 않고 권위있게 표현해라. 코드의 하나를 바꿀때 코드, 문서, DB 스키마, 스키마담는 구조 등도 바꾸는가? 그건 DRY하지 않다.   문서화 중복 주석으로 코드를 두번 설명하지 마라. 함수명에서 하는 일을 알려줘라.  내부 API 중복정의할 수 있는 도구 찾기 : MOCK API, 기능테스트 생성, 클라이언트도 다양한 언어도 생성해준다. 이 도구로 API 정의를 중앙저장소에 넣고 여러 팀이 공유하면 된다.   직교성 직교성 은 설계와 빌드, 테스트, 확장이 쉬운 시스템을 만드는 데에 있어 매우 중요한 개념으로 일종의 독립성이나, 결합도 줄이기를 의미한다.하나가 바뀌어도 나머..

실용주의 프로그래머 1장 : 실용주의 철학

1. 고양이가 내 소스코드를 삼켰어요 가장 큰 약점은 약점을 보일 것에 대한 두려움이다. - 보쉬에 실용주의 철학의 초석 중 하나는 경력향상, 프로젝트, 일상업무의 면에서 자신과 자신의 행동에 대해 책임을 지는 것이다.무지나 실수를 인정하는 일은 즐거운 부분은 아니지만 분명 일어나는 일이다.우리는 자신의 능력에 대해 자부심을 가질 수 있지만 실수나 무지 같은 단점에 대해서도 정직해져야 한다. 책임지기책임은 적극적으로 동의하는것이다.뭔가 제대로 처리하겠다고 확약을 하더라도, 모든 면에서 꼭 직접적인 통제가 가능하지는 않다. 만약 끝까지 잘 해내지 못할 위험요소가 있다면 여러분이 그에 대한 대책을 세워야 한다.  소프트웨어 엔트로피 소프르웨어 개발은 물리법칙에서 제외되지만 엔트로피는 우리에게 많은 영향을 끼..

[지코바] 템플릿 메소드 패턴

템플릿 메소드 패턴(Template Method Pattern) 메소드에서 알고리즘의 골격을 정의하는 패턴 알고리즘의 여러단계 중 일부를 서브클래스에서 구현할 수 있기 때문에 구조는 그대로 유지하면서 특정단계를 재정의 할 수 있다. 장점 중복코드를 줄일 수 있다. 자식 클래스의 역할을 줄여 핵심 로직의 관리가 용이 객체지향적 코드 구성 가능 단점 추상메소드가 많아지면서 클래스 관리가 복잡 클래스간의 관계가 꼬일 염려가 있다. 후크 추상 클래스에 선언되지만 기본적인 내용만 구현되어있거나 아무 코드도 들어있지 않은 메소드 abstract class Lab254Employee{ public void startWork(){ attendance(); coding(); scrumMeeting(); if(isToda..

지-코바 2022.12.28

[지코바] 팩토리 패턴

1. 팩토리 패턴이란? 팩토리 패턴은 객체의 인스턴스를 만듦에 있어서 불필요한 의존성을 제거하여 결합 문제를 해결할 수 있는 패턴이다. 팩토리 패턴엔 메서드 팩토리 패턴과 추상 팩토리 패턴 두 가지 패턴이 있다. 첫 번째로 메서드 팩토리 패턴은 어떤 클래스의 인스턴스를 서브클래스를 통하여 객체를 생성한다. 두 번째로 추상 팩토리 패턴은 인터페이스를 이용하여 서로 연관된 객체를 구상 클래스 없이 생성한다. 2. 메소드 팩토리 패턴이란? 메서드 팩토리의 가장 큰 특징 중 하나는 객체 인스턴스를 만드는 것을 서브클래스에 의존한다는 것인데, 책에서는 피자가게에서 피자를 만들 때를 예로 들었다. 먼저 클래스를 생산자 클래스, 제품 클래스 둘로 나눈다. 생산자 클래스인 PizzaStore 추상 클래스를 상속받는 C..

카테고리 없음 2022.10.07

[지코바] 9회차 다른사람 문제풀기 - 상수님

1. 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 2.상수님의 풀이 from sys import stdin input = stdin.readline class Stack: #스택 리스트 선언 메서드 def __init__(self): self.stack = [] #push 메서드 def push(self, num): #리스트에 num 추가 self.stack.append(num) #pop 메서드 def pop(self..

지-코바 2022.07.28

[지코바] 8회차 - 상수님의 2xn타일링

문제 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제분석 2xn 크기의 타일을 1x2, 2x1타일로 채우는 경우의 수를 구하는 문제이다. 언뜻보기에는 어려워 보이지만 차례대로 경우의 수를 구하다보면 피보나치 수열을 이루는 것을 알 수 있다. n=1일 때, 1가지 n=2일 때, 2가지 n=3일 때, 3가지 n=4일 때, 5가지 n=5일 때, 8가지 ···· 순으로 f(n) = f(n-1) + f(n-2)의 규칙을 보인다. 따라서 n이 1,2인 경우를 제외하고 피..

지-코바 2022.06.21

[지코바] 7회차 문제 풀이 분석 - 상수님

문제 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 분석 제목이 피보나치 함수이지만 피보나치 수를 구하는것이 아니라 피보나치 수에서 0과 1이 호출되는 횟수를 구하는 문제이다. N=2일 때 Fibonacci(1)+Fibonacci(0) 이므로 각각 한번, N=3일 때 Fibonacci(2) + Fibonacci(1)이므로 1 2번 0 한번의 방식으로 된다. 그래서 나는 규칙을 찾아 재귀호출을 통하여 값을 미리 구해놓고 N의 값에 대한 호출만 해주었던 것으로 기억하는데 상수님 또한 같은 방법으로 풀이를 한것으로 보인다. 상수님의 풀이 ..

카테고리 없음 2022.05.19