반응형

개발 일반 20

개발 일반잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (경계)

외부 라이브러리를 사용하는 것에 대한 이야기 외부 라이브러리를 사용하는 부분을 Wrapper Class로 따로 감싸줘야 한다. 앞서 예외 처리를 한 원리와 동일하게 라이브러리의 값이 바뀌게 되더라도 사용하는 쪽에서 변경할 사항이 없도록 클래스 내부에서 처리해야 한다. 그리고 Map이 가지고 있는 무수한 function들이 많은데 그냥 바로 HashMap()으로 개발 수 있게 하면 안에 모든 function을 난잡하게 사용할 수 있게 되는데 Wrapper class을 사용해서 통제하며 개발하면 특정 function만 사용하며 개발할 수 있도록 개발이 가능하다. // Before Map sensors = new HashMap(); // Sensor가 필요한 객체 코드는 이렇게밖에 받지 못 한다. Sensor..

개발 일반 2021.03.23

개발 일반잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (오류 처리)

필자는 '깨끗한' 예외 처리가 클린 코드를 위한 요소 중 하나라고 말한다. 그리고 이를 위한 '깨끗한' 오류 처리의 기준은 아래와 같다. 오류 코드를 반환하지 말고 예외 처리를 하라 이는 예컨데 DeviceHandle.INVALID와 같은 오류를 값으로 return하고 받지 말고 try..catch로 묶어야 한다. try.. catch를 사용하라 try .. catch 문 자체가 트랜잭션과 같이 범위를 정의할 수 있어 구조적으로 깔끔해진다. 미확인 예외를 사용하라 이건 뭔가 반대로 생각했었던거임 필자는 확인된 예외는 OCP(Open Closed Principle)을 위반한다고 한다. OCP (개방폐쇄원칙) : 확장에는 열려있어야 하고 변경에는 닫혀있어야한다. 이는 메서드에서 추가로 확인된 예외를 던졌는데..

개발 일반 2021.03.23

잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (주석)

3. 주석 - 저자는 주석에 대해 Clean Code를 코드로만 달성하는 것이 실패해서 넣는 것을 주석이라고 말한다. - 특히 그는 주석은 오래될 수록 실제 돌아가는 코드와 멀어지게 되며 프로그래머들이 주석까지 다 유지보수를 하기엔 쉽지 않다고 말하고 있다. 주석은 애시당초 처음부터 나쁜 코드는 보완하지 못 한다. 코드로 의도를 표현해야 한다. // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) { ... } if (employee.isEligibleForFullBenefits()) { ... } 처음부터 주석으로 설명해야만 하는 코드가 아닌 후자처럼 주석이 필요없는 코드가 이상적이다. 그나마 ..

개발 일반 2021.03.15

잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (함수)

2. 함수 - 이 내용은 TDD, Clean code 스터디 할 때 배웠던 내용이 다수 있다. 함수는 최대한 작게 하라 하나의 기능만 들어갈 수 있도록 함수 당 추상화 수준은 하나로 해야한다. 즉 if안에 if 넣지 마라 애시당초 if안에 if가 들어가게 되는 구조라면 하나의 function에서 multi 기능을 담당하고 있는 것이다. Switch문이나 if / else if 등으로 붙는 코드들은 이렇게 지키기는 어렵다고 필자도 인정한다. 그래도 다형적 객체를 생성하는 코드에 한해서만 인정하고 있다. 같은 모듈내에서의 함수는 어느정도의 일관성이 존재해야한다. 같은 문구, 동사, 명사를 사용하는 것 처럼 함수 parameter는 3개부터는 가급적 피해야 하고 4개 이상은 반드시 이렇게 해야하는 이유가 있어..

개발 일반 2021.03.15

잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (의미 있는 이름)

1. 의도가 분명하게 이름을 지으라 변수나 함수, 클래스 이름은 다음 질문에 답할 수 있어야 한다. 존재 이유는? / 수행 기능은? / 사용 방법은? 즉 magin number와 같은 그래서 왜 status가 3이면 안 되는데? 같은 의문을 낳으면 안 된다. 그릇된 정보를 담으면 안 된다. 여러 계정을 그룹으로 묶을 때 List로 담는게 아닌데 accountList로 변수명을 선언해선 안 된다. 그리고 억지로 단어를 약어로 줄여 헷갈리게 해서도 안 된다. 의미 있게 구분하라 function parameter들을 input1, input2 이런 식으로 선언해선 안 된다. 개념은 구분하지 않은채 이름만 달리한 경우도 없어야 한다. ProductInfo, ProductData로 변수를 다르게 선언한 경우 ge..

개발 일반 2021.03.15

잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (들어가며)

- 새로운 회사에 들어오고 한동안 책을 읽지 못 한 나에게 가장 먼저 떨어진게 매주 진행하는 클린코드에 관한 책을 읽는 스터디 같이 하자는 것이였고 읽으면서 무릎 탁 치게 만드는 건 정리하고자 함 - 책의 시작은 개발자 우리 모두가 알지만 우리 모두가 같은 이유로 잘 지키지 않고 있는 클린 코드를 왜 지켜야하고 계속 끊임없이 생각해야하는지 정말 많은 사례를 가져오며 역설하고 있다. 나도 전 회사에서 정말 고착화된 레거시 코드를 일단 새로 계약을 따야하고 고객을 유치해야 한다는 명목아래 방치했다가 고착화된 레거시 코드가 결국 추후 서비스 개선을 위한 기획에 영향을 주어 진행조차 못 하게 막을 수 있다는 것을 봤기 때문에 책을 안 보지 않아도 그 때의 기분과 생각이 나에게 알랴준다 ㅠ 그리고 이런 레거시 코..

개발 일반 2021.03.15

muuri로 Drag&Drop 만들기

- 일단 기억나는대로 까먹기 전에 정리해놓음 > Drag&Drop 구현 조건 좌측 영역에서 우측영역으로 Drag&Drop하고 우측 아이템 복사하는 것 처럼 같은 항목을 계속 드래그 해서 넣을 수 있음 이 때 우측 영역은 5개의 그룹으로 나누어서 보여줘야하며 5개 그룹간에는 Item을 드래그해서 옮길 수 없다. 우측의 5개 영역에서 좌측으로만 옮길 수 있으며 좌측의 Area는 Item을 넣을 수록 무한정으로 길어지게 구현하고 우측의 Area는 Scroll로 Max-height : 700으로 고정하여 안의 5개 드래그 그룹을 내부 스크롤로 보여주고, 리모컨처럼 스크롤을 내리면 우측 Area는 고정되어 보여지게 한다. 하나의 아이템에 대해서 Drag하기 전의 Item UI와 Drag하고 나서의 Item UI를..

개발 일반 2021.01.27

왜 함수형을 써야하는가?

- 필요성 동시성과 객체 지향을 동시에 해결하고자 하는 움직임에서 요구된 방식 대용량 데이터를 다룰 일이 점점 많아 지고 있는데 이러한 과정에서 매번 데이터를 객체를 변환하여 관리하는데 있어 부담이 커질 수 밖에 없음 모듈화 하기에 더 적합하다 할 수 있음 (이건 논란의 여지가 있다) Class단위로 분리하여 구조를 짜는게 더 어렵기 때문에 함수형이 더 작업하는데 있어 빨라질 수 있다. 함수형은 Input과 Output이 항상 있기 때문에 TDD를 하는데 있어 더 용이하다. - 선언형 프로그래밍 / 명령형 프로그래밍 - 함수형 프로그래밍의 가장 큰 특징이자 핵심은 Side effect가 없는 함수를 만드는 것임 a = 0 def example(): global a a += 1 - a가 항상 바뀔 수 있고..

개발 일반 2020.12.12

TDD, Clean Code 시작하며

- '소프트웨어 장인' 책 읽어 보기 - 설계를 할 때 가장 재밌고 머리 쓰는게 신난다. 내가 생각한 것에 대해서 피드백 받는 것도 즐겁다. 내가 생각 못 한 내용을 들을 때 오.. 아.. 하는 맛 - 과제할 땐 힌트는 최대한 보지말고 구글링도 최소화하자 - 리팩토링은 TDD안에 속한 개념임 - 일주일에 4회 이상의 코드 리뷰 요청은 보내고 하루에 2시간은 투자해야 할 수 있는 미션 (2주에 미션 1개) - 코드 리뷰 마다 중요시하는 가치가 다를 수 있다. 코드의 효율성이 우선시 될 수 있고 코드의 가독성이 우선시 될 수 있다. 그건 결국 상황마다 다르기 때문에 이런 것들을 생각하고 판단하는 경험들이 짬바 - 각 과정 타이틀도 내용 있으니 이거 숙지하고 과제 시작하자 - 코딩 컨벤션은 그냥 인텔리제이 디..

개발 일반 2020.10.28

REST API 생성 규칙

요즘 거의 API 담당으로 생성하고 있는데 체크해야 할 사항 정리할겸 남긴다. 후행 슬래쉬는 포함되지 않아야 한다. (마지막이 '/'로 끝나면 안 된다.) 계층 관계를 나타낼 땐 '/'로 구분한다. Ex: ID값이 52인 게시판의 게시물이면 ~~~/board/52로 작성한다. 가독성을 위해 하이픈(-)을 사용한다. 이건 나도 몰랐던 거.. 그냥 습관적으로 underbar로 써서 사용했는데 4번째 규칙이 Underbar 사용 금지임 ㅋ underbar ( _ ) 사용 금지 브라우저 상에서 URL을 보여줄 때 클릭 가능하다는 뜻으로 underlined 처리를 할 경우가 있는데 이 때 혼란을 방지하기 위해 underbar는 지양한다. 소문자를 사용하도록 한다. 파일 확장자가 들어가지 않도록 한다. 명사에 대한..

개발 일반 2020.10.17
반응형