클린코드와 리팩토링/클린코드

본 글은 클린코드 6장을 읽고 난 후 개인적인 생각입니다. 자료 추상화 변수를 비공개로 정의하는 이유는 변수에 의존하지 않게 만들기 위해서입니다. 하지만 수많은 프로그래머가 getter 혹은 setter 함수를 당연하게 공개해 비공개 변수를 외부에 노출합니다. 변수를 private으로 선언하더라도 각 값마다 getter 함수와 setter 함수로 제공한다면 구현을 외부로 노출하는 셈입니다. 이렇게 자료를 세세하게 공개하기보다는 추상적인 개념의 함수를 만드는 것이 좋다고 합니다. 저는 setter에 대해서는 이 내용에 동의하지만 getter까지 전부 추상적인 개념(클래스 내부의 어떤 비공개 인스턴스 변수를 가져오는지 모르도록 추상화)으로 일일이 변경해야 한다는 부분에서는 클래스 용도마다 차이가 있을 것으로..
본 글은 클린코드 5장을 읽고 난 후 주관적인 생각입니다. "은 탄환은 없다"라는 말처럼 항상 상황에 맞춰 생각을 한 번 더 하는 습관이 중요한 것 같습니다. 형식을 맞추는 목적 오랜 시간이 지나도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속해서 영향을 미칩니다. 때문에 너무 엄격하지 않은 어느정도 스타일과 규율은 필요하다고 생각합니다. 적절한 행 길이를 유지하라 대부분 500줄을 넘지않고 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다고 합니다. 개인적인 생각으로는 파일의 길이가 길어지는 건 하나의 클래스가 너무 많은 일을 하고 있을 때 그렇다고 생각합니다. 예를 들어 주문이라는 큰 상위개념이 있고 하위개념으로는 옵션, 가격, 주문상품 등이 있다고 했을 때 주..
본 글은 로버트 C. 마틴의 클린코드를 읽고 주관적인 생각을 적은 글입니다. 이 책의 4장 주석을 읽어보기 전에는 주석이 꼭 필요할까? 에 대한 저의 답은 "가끔"이었고 읽고 나서도 변하지 않았습니다. 책 설명에서와 같이 잘 짜인 코드라면 코드만 으로도 충분한 설명이 가능할 것 같습니다. 가끔 필요 없는 곳에도 주석을 사용한 적이 있던 적도 있는 것 같고 필요한 곳에 사용하지 않은 적도 있는 것 같습니다. 책의 케이스 중 어느 정도 맞다고 생각하는 케이스만 적어보겠습니다. 1. 코드로 의도를 표현하라! 다음 코드는 주석이 있는 코드와 주석을 없앤 코드입니다. 주석이 있는 코드 // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (e..
이번에는 함수에 대해 깨끗한 코드를 작성하는 방법에 대해 몇 가지 예시와 함께 알아보겠습니다. 작게 만들어라 나쁜 코드 아래와 같은 뭔가 결제하고 주문 상태를 변경하고 주문확인 이메일을 전송하는 로직을 가지고 있는 함수가 있습니다. public class PaymentProcessor { public void processPayment(Order order) { // 추상화 되지않은 소스코드 들..! // 결제 처리 // ... 긴 로직 // 주문 상태 업데이트 // ... 긴 로직 // 주문 확인 이메일 전송 // ... 긴 로직 } } 실무를 접하다 보면 많이 보게 되는 코드인데요. 무엇인가 굉장히 길고 늘어뜨려 놓아 개발 툴 한 화면에서도 전부 확인할 수 없는 코드가 되게 됩니다. 읽는 입장에서 해..
본 글은 로버트 C. 마틴의 클린코드를 읽고 주관적인 생각을 적은 글입니다. 책을 읽어보니 코드를 작성할 때 의미 있는 이름이 얼마나 중요한지를 설명해주고 있었습니다. 해당 장을 읽고 중요하다고 생각되는 부분만 몇 가지 간추려봤습니다. 의도가 분명한 이름 나쁜 코드 public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) if (x[0] ==4) list1.add(x); return list1; } 해당 코드에서는 의미가 분명하지 않아 소스 코드를 파악하기 어렵습니다. theList 에는 무엇이 들어있는가? theList 에서 0번째 값이 어째서 중요한가? 값 4는 무슨 의미인가? 함수는 반환하는 리스트 list1을 어떻게..
infitry
'클린코드와 리팩토링/클린코드' 카테고리의 글 목록