일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vue.js
- AWS
- jpa
- 인프런백기선
- 자바스터디
- 인덱스
- 도메인 주도 개발 시작하기
- 클린코드
- aop
- 인프런김영한
- 자바
- 이펙티브자바
- DDD
- 이팩티브 자바
- 기술면접
- 자료구조
- 알고리즘
- 혼공SQL
- mysql
- SQL쿡북
- AWS RDS
- 알고리즘분석
- 자바예외
- react
- 네트워크
- CleanCode
- MariaDB
- java
- 스프링부트와AWS로혼자구현하는웹서비스
- 이펙티브 자바
- Today
- Total
목록전체 글 (272)
기록이 힘이다.
경계 살피고 익히기 학습 테스트는 프로그램에서 사용하려는 방식대로 외부 API를 호출한다. 통제된 환경에서 API를 제대로 이해하는지를 확인하는 셈이다. 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다. JUnit은 가장 널리 사용되는 자바 학습 테스트 프레임워크입니다. JUnit을 사용하면 자바 코드를 검증하고 성능을 측정할 수 있습니다. 아래는 간단한 JUnit 학습 테스트 코드의 예시입니다. import org.junit.Test; import static org.junit.Assert.*; public class CalculatorTest { @Test public void testAddition() { Calculator calculator = new Calculator(); int re..
https://github.com/gdsc-ssu/clean_code_master/tree/main/03.%20%ED%95%A8%EC%88%98 GitHub - gdsc-ssu/clean_code_master: 클린코드 작성하는 것..? 어렵지 않다! 이 스터디와 함께라면 당신도 클린코드 작성하는 것..? 어렵지 않다! 이 스터디와 함께라면 당신도 클린코드 마스터! Contribute to gdsc-ssu/clean_code_master development by creating an account on GitHub. github.com 3-1 # 좋지 않은 코드 public static String testableHtml(PageData pageData, boolean includeSuiteSetup)..
형식을 맞추는 목적 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. 오늘 구현한 코드의 가독성은 앞으로바뀔 코드의 품질에 지대한 영향을 미친다. 원래 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다. 적절한 행 길이를 유지하라 500줄을 넘지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다. 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다. -신문 기사처럼 작성하라 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 가장 저차원 함수와 세부 내역이 나온다. 신문 기사는 아주 짧다. 한 면을 채우는 기사는 거의 없다. 신문이 읽을 만한 이유는 여기에 있다. -개념은 빈 행으로 분리하..

1장 깨끗한 코드 이 책을 읽는다고 뛰어난 프로그래머가 된다는 보장은 없다. ‘코드 감각’을 확실히 얻는다는 보장도 없다. 단지 뛰어난 프로그래머가 생각하는 방식과 그들이 사용하는 기술과 기교와 도구를 소개할 뿐이다. 2장 의미있는 이름 의도를 분명히 밝혀라 그릇된 정보를 피하라 int a =l; if(O == l) a = O1; else L = 01; 위와 같은 0(영)이나 O(영어 오) 등의 경우 의미있게 구분하라 customerInfo는 customer과 accountData는 account와 theMessage는 message와 구분이 안 된다. 읽는 사람이 차이를 알도록 이름을 지어라. 발음하기 쉬운 이름을 사용하라 검색하기 쉬운 이름을 사용하라 인코딩을 피하라 -헝가리식 표기법 -인터페이스 클..
13.1 상위-하위 관계 표현하기 select a.ename || ' works for ' || b.ename as emps_and_mgrs from emp a, emp b where a.mgr = b.empno select concat(a.ename, ' works for ',b.ename) as emps_and_mgrs from emp a, emp b where a.mgr = b.empno select a.ename + ' works for ' + b.ename as emps_and_mgrs from emp a, emp b where a.mgr = b.empno -------------------------------------------------------------------- ..
//catch 블록을 비워두면 예외가 무시된다. 아주 의심스러운 코드다! try{ ... }catch(SomeException e){ } 예외는 문제 상황에 잘 대처하기 위해 존재하는데 catch 블록을 비워두면 예외가 존재할 이유가 없어진다. 비유하자면 화재경보를 무시하는 수준을 넘어 아예 꺼버려, 다른 누구도 화재가 발생했음을 무시하는 수준을 넘어 아예 꺼버려, 다른 누구도 화재가 발생했음을 알지 못하게 하는 것과 같다. 물론 예외를 무시해야 할 때도 있다. EX) FileInputStream --> 로그 예외를 무시하기로 했다면 catch 블록 안에 그렇게 결정한 이유를 주석으로 남기고 예외 변수의 이름도 ignored로 바꿔놓도록 하자. Future f = exec.submit(planarMap:..
일반화해 이야기하면, 호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 한다. => 실패 원자적(failure-atomic) 실패 원자적으로 만드는 방법 1. 불변 객체로 설계하는 것이다.=> 태생적으로 실패 원자적 2. 가변 객체의 메서드를 실패 원자적으로 만드는 가장 흔한 방법은 작업 수행에 앞서 매개변수의 유효성을 검사하는 것이다. 객체의 내부 상태를 변경하기 전에 잠재적 예외의 가능성 대부분을 걸러낼 수 있는 방법이다. ex) TreeMap public Object pop(){ if(size ==0) throw new EmptyStackException(); Object result = elements[--size]; elements[size] = null; // 다 쓴 참..

사후 분석을 위해 실패 순간의 상황을 정확히 포착해 예외의 상세 메시지에 담아야 한다. 실패 순간을 포착하려면 발생한 예외에 관여된 모든 매개변수와 필드의 값을 실패 메시지에 담아야 한다. EX) IndexOutOfBoundsException의 상세 메시지는 범위의 최솟값과 최댓값, 그리고 그 범위를 벗어났다는 인덱스의 값을 담아야 한다. 이 정보는 실패에 관한 많은 것을 알려준다. 예외의 상세 메시지와 최종 사용자에게 보여줄 오류 메시지를 혼동해서는 안 된다. 최종 사용자에게는 친절한 안내 메시지를 보여줘야 하는 반면, 예외 메시지는 가독성보다는 담긴 내용이 훨씬 중요하다. 예를 들어 현재의 IndexOutOfBoundsException 생성자는 String을 받지만, 다음과 같이 구현했어도 좋았을 것..