본문 바로가기

알아두면쓸데있는신기한잡학사전/독서일지24

[클린코드] 7일차 - 오류 보단 예외처리, 그리고 클린코드로 인한 중복 알레르기 [클린코드] 7일차 - 오류 보단 예외처리, 그리고 클린코드로 인한 중복 알레르기 클린코드 7일차 (p. 57~66(3장) ) 들어가기 전..) 벌써 클린코드 고생길이 보이는 중 .. 다시 열심히 해야지. 작심삼일도 안 끊기면 된다. 3 함수 9. 오류 코드보다 예외를 사용하라! - 명령 함수에서 오류 코드를 반환하는 방식은 명령/조회 규칙을 미묘하게 위반한다. - 오류 코드 대신 예외를 사용하면 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해진다. 1) try/catch 블록 뽑아내기 - try/catch 블록을 함수로 뽑아내는 편이 좋다. // 모든 오류 처리 public void delete(Page page){ try { deletePageAndAllReference(page); } ca.. 2023. 10. 31.
[클린코드] 6일차 - 좋은 함수를 위한 n가지 주의사항 [클린코드] 6일차 - 좋은 함수를 위한 n가지 주의사항 클린코드 6일차 (p. 46~56(3장) ) 3 함수 3. 함수 당 추상화 수준은 하나로! - 함수가 확실히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야한다. - 한 함수 내에 추상화 수준을 섞으면 코드 읽는 사람이 헷갈린다. 위에서 아래로 코드 읽기: 내려가기 규칙 4. Switch 문 - switch 문은 작게 만들기 어렵다. - 본질적으로 switch문은 N가지를 처리한다. - 하지만 각 switch 문을 저차원 클래스에 숨기고 절대로 반복하지 않는 방법이 있는데, '다형성'을 이용하는 것이다. public Money calculatePay(Employee e) throws InvalidEmployeeType { s.. 2023. 10. 30.
[클린코드] 5일차 - 분명한 이름을 위한 의미있는 맥락(Context) 부여, 함수는 한 가지 일만. [클린코드] 5일차 - 분명한 이름을 위한 의미있는 맥락(Context) 부여, 함수는 한 가지 일만. 클린코드 5일차 (p. 35~38(2장) / 39~45(3장) ) 2 의미 있는 이름 15. 의미있는 맥락을 추가하라 - 클래스, 함수, 이름 공간 등으로 감싸서 맥락을 부여. // 맥락이 불문명한 변수 // 함수 이름은 맥락의 일부만 제공하며, 알고리즘이 나머지 맥락을 제공. private void printGuessStatistics(char candidate, int count){ String number; String verb; String pluralModifier; if (count == 0){ number = "no"; verb = "are"; pluralModifier = "s"; } e.. 2023. 10. 29.
[클린코드] 4일차 - 의미 있는 이름 짓는 시간은 유의미하다. 클린코드 4일차 - 의미 있는 이름 짓는 시간은 유의미하다. 클린코드 4일차 (p. 24~34(2장) ) 2 의미 있는 이름 1. 그릇된 정보를 피하라 - 여러 계정을 그룹으로 묶을 때, 실제 List가 아니라면 명명에 조심해야한다. (accountList → accountGroup/Accounts) - 프로그래머에게 List는 특수한 의미. - 유사한 개념은 유사한 표기법 사용 - 일관성이 떨어지는 표기법은 그릇된 정보 2. 의미 있게 구분하라 - 연속적인 숫자를 덧붙은 이름 X // 연속적으로 덧붙인 이름은 그릇된 정보를 제공하는 이름도 아니고, 아무런 정보를 제공하지 않음!! public static void copyChar(char a1[], char a2[]){ for (int i = 0; i .. 2023. 10. 27.
[클린코드] 3일차 - 의미 있는 이름은 어떻게 지을까? 클린코드 3일차 - 의미 있는 이름은 어떻게 지을까? 클린코드 3일차 (p.13~23(1장) / 21~23(2장) ) 2 의미 있는 이름 의도를 분명히 밝혀라 - 의도가 분명한 이름이 정말로 중요하다. - 더 나은 이름이 떠오르면 개선해라. 다음 질문에 모두 답할 수 있는 이름이어야 한다. 존재 이유는? 수행 기능은? 사용 방법은? // Bad int d; // 경과 시간(단위: 날짜) // Good int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 변수 d는 무슨 의도로 작성됐는지 모를 변수명이다. n일 뒤에 보면 나도 모를 작명 말고 타인이 봐도 알 법한 작명이 필요하다. 측정하려는 값과.. 2023. 10. 25.
[클린코드] 2일차 - 장인정신 길들이기 및 클린코드 고생길 시작 클린코드 2일차 - 장인정신 길들이기 및 클린코드 고생길 시작 클린코드 2일차 ( p.1~12(1장) ) 클린코드 3일차 ( p.13~23(1장) / 21~23(2장) ) 0 들어가면서 난관에 부딪힐 때 옳은 문 뒤에 있으려면 어떻게 해야 할까? 답은 장인 정신이다. 장인 정신을 익히는 과정은 두 단계로 나뉜다. 바로 이론과 실전이다. 첫째, 장인에게 필요한 원칙, 패턴, 기법, 경험이라는 지식 습득 둘째, 열심히 일하고 연습해 지식을 몸과 마음으로 체득 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야한다. (즉, 고생하며 읽어야하는 책) 그 책의 흐름을 보고자 하면 목차를 봐야한다. 이 책은 총 세 부분으로 나눠진다고 한다. 1) 깨끗한 코드를 작성하는 원칙, 패턴, 실기 - 코.. 2023. 10. 25.