일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Codeup
- 티스토리챌린지
- mariadb
- thymeleaf
- Spring Boot
- 스프링
- 기초100제
- 알고리즘
- spring security
- JPA
- Vue.js
- java
- 객사오
- 코드업
- go
- Git
- golang
- Postman
- 클린 코드
- H2 설치
- Gradle
- MySQL
- Spring
- 클린코드
- GitHub
- 롬복
- 오블완
- springboot
- Python
- 파이썬
- Today
- Total
목록Books (17)
nyximos.log
클린코드, 애자일 소프트웨어 장인정신 Robert C. Martin TDD 법칙 세 가지 첫째 : 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 : 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 : 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 깨끗한 테스트 코드 유지하기 테스트 코드가 복잡할 수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸리기 쉽다. 테스트 코드는 실제 코드 못지 않게 중요하다. 테스트 코드는 사고와 설계와 주의가 필요하다. 실제 코드 못지 않게 깨끗하게 짜야한다. 테스트는 유연성, 유지보수성, 재사용성을 제공한다. 버팀목 = 단위 테스트 테스트 커버리지가 높을수록 공포는 줄어든다. 깨..
클린코드, 애자일 소프트웨어 장인정신 Robert C. Martin 들어가며 어떤 식으로든 외부 코드를 우리 코드에 깔끔하게 통합해야만 한다. 이 장에서는 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 살펴본다. 외부 코드 사용하기 인터페이스 제공자 : 적용성 최대한 넓히고자 노력 인터페이스 사용자 : 자신의 요구에 집중하는 인터페이스 기대 → 시스템 경계에서 문제 발생 java.util.Map은 다양한 기능을 제공한다. 장점 : 기능성, 유용성 단점 : 원하지 않는 기능을 사용자가 사용하여 의도와 다른 상황이 발생할 가능성 有 클린 코드 경계 인터페이스인 Map을 Sensors 안으로 숨긴다. Sensor 클래스가 객체 유형을 관리하고 변환하므로, Map 인터페이스가 변하더라도 나머지 프로그램에 영..
클린코드, 애자일 소프트웨어 장인정신 Robert C. Martin 들어가며 깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 상당수 코드 기반은 전적으로 오류 처리 코드에 좌우된다. 이 장에서는 깨끗하고 튼튼한 코드에 한걸음 더 다가가는 단계로 우아하고 고상하게 오류를 처리하는 기법과 고려 사항 몇 가지를 소개한다. 오류 코드보다 예외를 사용하라 이전에는 오류 플래그를 설정하거나 호출자에게 오류 코드를 반환하는 방법이 전부였다. → 함수를 호출한 즉시 오류를 확인해야 하기 때문에 호출자 코드가 복잡해짐 오류가 발생하면 예외를 던지는 편이 좋다. → 논리가 오류 코드와 섞이지 않기 때문에 호출자 코드가 더 깔끔해짐 Try-Catch-Finally문 부터 작성하라 try 블록에 들어가는 코드를 실행하면 어..
클린코드, 애자일 소프트웨어 장인정신 Robert C. Martin 들어가며 왜 많은 프로그래머가 조회get 함수와 설정set 함수를 당연하게 공개해 비공개 변수를 외부에 노출할까? 자료 추상화 구현을 감추려면 추상화가 필요하다. 추상 인터페이스를 제공해 사용자가 구현을 모른 채 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. 구체적인 Point 클래스 직교좌표계 사용 계별적으로 좌표값을 읽고 설정하게 강제 구현을 노출한다. 변수를 private로 설정해도 각 값마다 get/set 함수를 제공한다면 구현을 외부로 노출하는 셈 public class Point{ publi..
클린코드, 애자일 소프트웨어 장인정신 Robert C. Martin 들어가며 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 형식을 맞추는 목적 코드 형식은 중요하다! 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 맨 처음 잡아놓은 구현 스타일과 가독성 수준 → 유지보수 용이성, 확장성에 영향 원래 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다. 적절한 행 길이를 유지하라 대다수 자바 소스 파일은 크기가 어느 정도일까? 500줄을 넘지않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 ..
클린코드, 애자일 소프트웨어 장인정신 Robert C. Martin 들어가며 나쁜 코드에 주석을 달지 마라. 새로 짜라. - Brian Wilson Kernighan, Phillip James Plauger 주석이 필요한 상황에 처하면 곰곰이 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 코드로 의도를 표현할 때마다 스스로를 칭찬해준다. 주석을 달 때마다 자신에게 표현력이 없다는 사실을 푸념해야 마땅하다. 부정확한 주석은 아예 없는 주석보다 훨씬 더 나쁘다. 코드만이 자기가 원하는 일을 진실되게 말한다. 그러므로 우리는 (간혹 필요할지라도) 주석을 가능한 줄이도록 꾸준히 노력해야 한다. 주석은 나쁜 코드를 보완하지 못한다 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가 복잡하고..
클린 코드, 애자일 소프트웨어 장인정신 Robert C. Martin 들어가면서 어떤 프로그램이든 가장 기본적인 단위가 함수다. 이 장은 함수를 잘 만드는 법을 소개한다. 작게 만들어라! 일반적으로 다음 코드보다 짧아야 한다. public static String renderPageWithSetupAndTeardowns( PageData pageData, boolean isSuite ) throws Exception { boolean isTestPage = pageData.hasAttribute("Test"); if(isTestPage){ WikiPage testPage = pageData.getWikiPage(); StringBuffer newPageContent = new StringBuffer();..
클린 코드, 애자일 소프트웨어 장인정신 Robert C. Martin 들어가면서 소프트웨어에서 이름은 어디에나 쓰인다. 많이 사용하므로 이름을 잘 지으면 편하다. 이 장에서는 이름을 잘 짓는 간단한 규칙을 소개한다. 의도를 분명히 밝혀라 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다. 중요한 것은 코드의 함축성이다. int d; // 경과 시간(단위 : 날짜) int elapsedTimeIndays; int daysSinceCreation; int daysSinceModific..