본문 바로가기

공부 기록63

[클린코드] 6장. 객체와 자료구조 6장. 객체와 자료구조 변수를 왜 private으로 접근을 막는지 이유를 알 것이다. 자료 추상화 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. 자료/객체 비대칭 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료구조는 자료를 그대로 공개하면 별다른 함수는 제공하지 않는다. 두 개념은 사실상 정반대다. 복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생긴다. 이때는 클래스와ㅏ 객체 지향 기법이 가장 적합하고, 새로운 자료 타입이 아니라 새로운 함.. 2024. 4. 18.
[클린코드] 5장. 형식 맞추기 5장. 형식 맞추기 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다. 형식을 맞추는 목적 코드 형식은 중요하다! 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. 돌아가게만 만든 코드가 절대 아니다. 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 적절한 행 길이를 유지하라 신문 기사처럼 작성하라: 이름만 보고도 올바른 모듈을 살펴보고 있는지 아닌지를 판단할 정도로 신경써서 짓는다. 무작위로 작성하면 신문도 잘 안보게 된다. 개념은 빈 행으로 분리하라: 각 행은 수식이나 절을 나타내고, 일련의 행 묶음은 완결된 생각 하나를 표현한다. 즉, 생각 사이는 빈 행을 넣어 분.. 2024. 4. 17.
[클린코드] 4장. 주석 4장. 주석 나쁜 코드에 주석을 달지 마라. 새로 짜라. 경솔하고 근거없는 주석은 코드를 이해하기 더 어렵게 만들지만, 잘 달린 주석을 그 어떤 정보보다 유용하다. 주석은 오래될수록 코드에서 멀어진다. 그 이유는 주석까지 유지보수하기란 현실적으로 불가능하다. 즉, 코드는 변화하지만 주석은 변화하는 코드를 따라가지 못한다. 주석은 나쁜 코드를 보완하지 못한다. 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 코드를 알아보기 힘드니 주석으로 대체하는 것이다. 코드로 의도를 표현하라 좋은 코드일수록 주석은 줄어든다. 좋은 주석 그렇다면 주석이 필요한 경우는 언제일까? 법적인 주석: ex) 저작권 정보 or 소유권 정보, 라이센스 정보를 제공하는 주석: 기본적인 정보를 주석으로 제공하면 펀.. 2024. 4. 16.
[클린코드] 3장. 함수 3장. 함수 어떤 프로그램이든 가장 기본적인 단위가 함수다. 이해할 수 없는 함수 추상화 수준이 다양하고, 코드가 길다. 두 겹으로 중첩된 if 문은 이상한 플래그를 사용 플래그는 사용하지 말아야 한다. 작게 만들어라 함수는 작을수록 좋다. 참고로 전 회사에서는 한 메서드에 700줄이 넘었다. 메서드만 보고 너무 길어서 한숨부터 나왔던 기억이 있다. 이를 인터페이스를 활용하여 단 10줄 안으로 만들어서 뿌듯했던 기억이 있다. 한 가지만 해라 메서드 안에 기능을 여러 개 사용하는 것은 좋지 않다. 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 여기서 한 가지라는 건 추상화 수준이 하나인 단계만 수행하는 것을 말한다. 즉, 비슷한 기능 여러가지를 한 메서드 안에 작.. 2024. 4. 15.
[클린코드] 2장. 의미 있는 이름 2장. 의미 있는 이름 SW에서 이름은 변수, 함수, 인수, 클래스, 패키지 거의 모든 곳에서 쓰인다. 이렇듯 많이 사용하므로 이름을 잘 지으면 여러모로 편하다. 의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. public class Sample1 { public List getThem() { List list1 = new ArrayList(); for (int[] x : list1) { if (x[0] == 4) { list1.add(x); } } return list1; } } list1 getThem 값 4 theList x 위의 이름들을 보고 어떤 로직인지 파악할 수 있을까? 이름만 제대로 지어도 많이 개선된다. public class Sa.. 2024. 4. 14.
[클린코드] 1장. 깨끗한 코드 1장. 깨끗한 코드 이 책을 읽는 이유 프로그래머라서 더 나은 프로그래머가 되기 위해 코드가 존재하리라 코드를 자동으로 생성하는 시대가 다가온다. 그때가 되면 프로그래머는 필요가 없다. 그렇지 않다! 코드는 요구사항을 상세히 표현하는 수단으로, 어느 수준에 이르면 코드의 도움 없이 요구사항을 상세하게 표현하기란 불가능하다. 나쁜 코드 그들은 출시에 바빠 코드를 마구 짰다. 기능을 추가할수록 코드는 엉망이 되어갔고, 결국은 감당이 불가능한 수준에 이르렀다. 회사가 망한 원인은 바로 나쁜 코드 탓이었다. 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 나중에 정리하겠다고 다짐하지만 결코 나중은 돌아오지 않는다. 나쁜 코드로 치르는 대가 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. (.. 2024. 4. 13.