본문 바로가기
728x90
반응형

It62

클린코드(Clean Code) 9장 - 단위테스트 1. 테스트 코드가 중요한 이유 : 실수를 잡아주는 역할, 실제 코드 못지 않게 중요 - 테스트케이스는 변경이 쉬워야 한다 - 테스트코드가 지저분하면 안 하느니만 못하다 - 테스트는 실사용에 적합한 설계를 유도 - 테스트는 자동화되어야 한다 : 실제로 경우의 수 나누어서 직접 테스트하기 머리 터짐. * Given(테스트 조건) - When(테스트 동작) - Then(결과 확인) 패턴 2. 테스트의 종류 - Unit test : 프로그램 내부 개별 컴포넌트 동작 테스트. 배포 전 자동 실행 - Integration test : 이바닥 말로 통테. 프로그램 내부의 개별 컴포턴트를 합쳐서, 동작을 테스트. 컴포넌트 간의 인터랙션을 확인하기 위해 필요한 과정 - E2E test : end to end test... 2022. 9. 18. 16:15
클린코드(Clean code) 8장 - 경계 타팀 소스 , 오픈 소스, 라이브러리 안 쓰는 개발은 없을 것 외부 시스템을 호출하거나, 외부에서 만들었거나 .. 우리 코드에 깔끔하게 갖다붙이려면 1. 캡슐화 실제 구현을 외부로부터 감추고 필요한 부분의 기능 / 값만 불러오기 2. adapter pattern 우리가 정한 부분만 우리가 정의한 인터페이스대로 호출하기 위해 사용하는 클래스 패턴 3. 여유가 된다면 learning test - 외부 코드를 가져올 때 테스트하고 갖다 붙이기 배울 점을 배우고 우리 코드에 가져올 때 안정성도 담보할 수 있음 2022. 9. 14. 18:11
클린코드(Clean code) 7장 - 오류 처리 1. 오류를 나타낼 때는 오류코드 냅다 던지지 말고 예외를 던지자 에러코드 ~~ 이면 ~~ 로 처리한다 전개보다는 오류가 발생한 곳에서 예외를 던진다. 별도의 처리가 따로 필요하다면 checked exception 처리하고, 그렇게 할 생각이 없다면 메서드 선언부에 throws Exception 이라도 둘러주자. (사실 try catch 제외하면 나 이거 제일 좋아함) try -> catch 를 통해 실행문을 감싸고, 예외를 처리할 수 있는 곳에서 catch 2. 특별한 경우가 아니라면, 에러클래스를 상속하여 하위클래스를 쓰잘데기 없이 또 만들지 말 것. unchecked throwable 은 RuntimeException의 하위 클래스로 만들자. 쓸데없이 throwable을 정의해서 만들 수도 있지만 .. 2022. 9. 13. 18:44
클린코드(Clean code) 6장 - 객체와 자료 구조 1. 자료구조 vs 객체 : 상황에 맞게 선택하기 절차적인 코드는 새로운 자료구조를 추가하기 어렵고 모든 함수를 다 고쳐야 한다. 자료구조를 사용하는 절차적 코드는 기본 자료구조를 변경하지 않으면서, 새로 함수를 추가하기 쉽다. 객체지향 코드는 기존 함수를 변경하지 않으면서 새로운 클래스를 추가하기 쉽다. 하지만 새로운 함수를 추가하려면, 모든 클래스를 고쳐야 한다. => 새로운 자료 타입 추가에 대한 유연성이 필요할때는 객체, 새로운 동작에 대한 유연성이 필요하면 자료구조와 절차적인 코드를 사용하자. 2. 디미터 법칙 클래스 C의 메서드 f는 이런 객체의 메서드만 호출해야 한다 -클래스 C -메서드 f 자신이 생성한 객체 -메서드 f 자신의 인수로 넘어온 객체 -클래스 C의 인스턴스 변수에 저장된 객체.. 2022. 9. 11. 12:06
클린코드(Clean code) 5장 - 형식 맞추기 1. 포맷팅의 중요성 : 가독성 가독성이 높은 글이 읽기 쉬운거랑 비슷함 들여쓰기 개판으로 꼬여있으면 읽기 넘 힘듦. 가독성 깔끔하게 작성하면 코드를 잘못 해석하여 버그를 발생할 위험도 낮출 수 있음 2. 너무 길게 작성하지 않기 를 지키기 솔직히 쉽지 않긴 한데... 연말정산이나 비례수수료 3천줄 넘어가는 코드도 천지 삐까리기는 한데.. 그래도 할 수 있으면 분리해서 짧게 짧게 끊어 가는것도 좋은 듯 파생개념의 경우 따로 소스를 분리한다든가 하는 노력을 기울여보자. 3. 밀접한 개념은 가까이에 두기 변수는 사용되는 위치에서 최대한 가까이 두기 (는 쉽지 않지만 그래도) 적절한 개행과 공백을 통해 개념을 구분하기 4. Java class declarations 1) static 변수 public > pr.. 2022. 9. 10. 21:53
클린코드(Clean code) 4장 - 주석 1. 주석을 최대한 쓰지 말자 개판 치고 주석으로 해명하는 것보다는 의미 있는 네이밍과 코드가 중요하다. 코드는 변화하는데, 주석이 쫓아가지 못하면 의미없는 컴파일도 안되는 텍스트 나부랭이 ..???????이게 가능한가 근데? 한번 쓰고 버릴 코드도 아니고 N년동안 기우고 굴려야 하는 sm입장에서는 히스토리 남기는 것도 너무 필요한 일인데... 인수인계할 때도 그렇지만, 과거의 나를 현재와 미래의 내가 믿지 못하는 사태가 너무 많음. 소스 커밋 체크인할 때 버전별 비교가 가능하지만 그거 가지고는 완전하지 않음 나는 그래서 날짜별로 상세하게 20220801 ~~ 기능 추가 / 요청자 ㅇㅇ부서 김뫄뫄 책임 이런식으로 어떻게든 기억날 수 있게 히스토리를 남기는 편. AA하면 BB하게 같은 기능 설명도 같이 하.. 2022. 9. 9. 23:30
클린코드(Clean code) 3장 - 함수 1. 객체지향 5대 원칙 다시보기 https://career-gogimandu.tistory.com/27 객체지향 설계에서 꼭 필요한 SOLID 5대원칙(SRP/OCP/LSP/ISP/DIP) SRP : Single Responsibility Principle, 단일책임 원칙 OCP : Open Closed Principle, 개방-폐쇄 원칙 LSP : Liskov Subtitution Principle, 리스코프 치환원칙 ISP : Interface Segregation Principle, 인터페이.. career-gogimandu.tistory.com 2. 함수 인수 너무 많이 때려박지 않기. 인수의 갯수는 많아야 2개 정도면 충분하다. 3개 이상은 너무 많아 .... 나 또 여기서 생각나는 코드 너무.. 2022. 9. 7. 21:50
클린코드(Clean code) 2장 - 좋은 이름 짓기 앞장 복습은 요기서 https://career-gogimandu.tistory.com/119 클린코드 1장 - 좋은 코드와 나쁜 코드 https://career-gogimandu.tistory.com/115 Java 힙 공간 에러 발생한 배치 성능개선후기 2022.08.19 개발된지 3년이 넘은 이후로 마지막 수정 2019년 초 나 입사 전 그 뒤 전혀 수정 없이 매달 루틴하게 잘쓰던.. career-gogimandu.tistory.com 1. 의미가 분명한 이름 짓기 : int a, String b 이런 이름 말고 itemcount, itemname 같이, 뭔 말하는지 알아먹기 쉽게 친구가 팀원이 저따위로 이름을 지어놨다고 개빡쳐한 거 본 기억 난다... 나여도 황당할듯 2. 반복문 돌릴 때 i, j,.. 2022. 9. 5. 07:50
클린코드(Clean code) 1장 - 좋은 코드와 나쁜 코드 https://career-gogimandu.tistory.com/115 Java 힙 공간 에러 발생한 배치 성능개선후기 2022.08.19 개발된지 3년이 넘은 이후로 마지막 수정 2019년 초 나 입사 전 그 뒤 전혀 수정 없이 매달 루틴하게 잘쓰던 자료 추출용 정기작업 배치에서 오류가 발생하였다. [문제점] 에러 로그를 보 career-gogimandu.tistory.com 이 사건과, 최근들어 제도 개정으로 수정, 아니 누더기 기우기를 진행 중인 말도 안되는 배치... 때문에 (거의 10년 전 java이전 시절 구체제 로직이 그대로 묻어있고, 가독성이 떨어져서 검증도 너무 하기 힘듦. 연초 제도개정때도 그 이전에도 저 그냥 이거 갈아엎고 새로 짜고 싶다고 수백번 말했는데 여러 사유로 받아들여지지 .. 2022. 9. 4. 21:16
728x90
반응형