본문 바로가기

클린코드5

[Clean Code] 객체와 자료구조 1. 객체와 자료의 비대칭 객체는 추상화 뒤로 자료를 숨긴채 자료를 다루는 함수만 공개합니다. 자료구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않습니다. 이를 보면 객체와 자료가 상반된다는 것을 알 수 있습니다. 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽습니다. 반면에, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽습니다. 반대로, 절차적인 코드는 새로운 자료구조를 추가하기 어렵습니다. 그러려면 모든 함수를 고쳐야하기 때문입니다. 객체 지향 코드는 새로운 함수를 추가하기 어렵습니다. 그러려면 모든 클래스를 고쳐야합니다. 복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생기는데 이때는 클래스와 객체 지향 .. 2020. 5. 15.
[Clean Code] 형식 맞추기 1. 형식 맞추기 코드형식은 매우 중요합니다. 코드 형식은 의사소통의 일환입니다. 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미칩니다. 그러면 장려하는 코드 형식에 대해서 알아보겠습니다. [적절한 행 길이를 유지하라] 소스코드는 얼마나 길어야 적당할까요? 그림 5.1은 프로젝트 7개를 나타냅니다. 상자를 관통하는 선은 각 프로젝트에서 최대 파일의 길이와 최소 파일 길이를 나타냅니다. 상자는 대략 파일의 1/3을 차지합니다. 상자 중간이 평균입니다. JUnit, FiteNesse, Time and Money는 상대적으로 파일 크기가 작습니다. 500줄을 넘어가는 파일이 없으며 대다수가 200줄 미만입니다. 반면, Tomcat과 Ant는 절반 이상이 200줄을 넘어서고 심지어 수천.. 2020. 4. 18.
[Clean Code] 주석 작성 방법 나쁜 코드에 주석을 달지 마라. 새로 짜라 - 브라이언 W. 커니핸. P.J. 플라우거 - 잘 달린 주석은 유용합니다. 하지만 근거 없는 주석은 코드를 이해하기 어렵게 만듭니다. 오래되고 조잡한 주석은 거짓과 잘못된 정보를 퍼뜨려 해악을 미칩니다. 코드로 의도를 표현하지 못해서 주석을 사용하는 것은 실패를 의미합니다. 주석은 오래될수록 코드에서 멀어집니다. 프로그래머들이 주석을 유지하면서 유지보수하기란 현실적으로 불가능합니다. 코드를 깔끔하게 정리하고 표현력을 강화하는 방향으로, 그래서 주석이 필요없는 방향으로 에너지를 쏟는 것이 낫습니다. 함수나 변수로 표현할 수 있다면 주석을 달지 말아야합니다. 좋은 주석과 나쁜 주석을 구분하는 방법에 대해서 알아 보겠습니다. 1. 좋은 주석 [법적인 주석] 때로는 .. 2020. 4. 14.
[Clean Code] 함수 작성 오늘은 어떻게 하면 함수를 깨끗이 짤 수 있을지에 대해서 알아보도록 하겠습니다. 하나의 함수는 어느정도의 길이로 짜야하는지, 함수를 짤 때 주의해야할 것들은 무엇이 있는지 고민을 많이 해보시는게 좋습니다. 1. 작게 만들어라! 함수는 얼마나 짧아야할까요? 길어도 20~30줄을 넘기지 않으려고 하고있습니다. if/else/while문 등에 들어가는 블록은 한줄이어야 합니다. 그러면 바깥을 감싸는 함수가 작아질 뿐만 아니라 블록 안에서 호출하는 함수 이름을 적절하게 짓는다면 코드를 이해하기 쉬워집니다. 이 말은 중첩구조가 생길만큼 함수가 커져서는 안된다는 뜻입니다.그러므로 함수에서 들여쓰는 수준은 1단이나 2단을 넘어서면 안됩니다. 2. 한가지만 해라! 함수는 한가지만 해야합니다. 그 한가지를 잘해야 하고 .. 2020. 4. 6.
[Clean Code] 깨끗한 코드란(클린코드)? 깨끗한 코드란 무엇일까요? 이제 막 2년차가 된 제가 요새 생각하고있는 부분입니다. 기존 코드를 살펴보다보면 이거는 이렇게 바꾸면 더 깔끔하지 않을까, 이 부분은 공통화를해서 관리했어야하지 않을까? 단순히 주어진 업무를 받아서 하는 수준에서 이제는 기존코드를 어떻게 바꿔야할지에 대해서 고민을 많이하고 있습니다. 이에 대한 기준을 얻기 위해 최근 많은 전문가들이 함께 고민해서 클린 코드에 대해서 제시하는 클린 코드를 구매하여 읽고 있습니다. 1. 클린 코드 철학 정리(정렬) : 적절한 명명법 등과 같은 방법을 사용해 무엇이 어디에 있는지 알아야합니다. 정돈(체계화) : 물건마다 모두 제자리에 있다라는 속담처럼 코드는 누구나 예상하는 위치에 있어야합니다. 청소(광내기) : 과거이력이나 미래 바람을 기억한 주.. 2020. 4. 2.