본문 바로가기

전체 글147

[Clean Code] 5장. 형식 맞추기 Clean Code 5장 (형식 맞추기, 결국에는 가독성이 좋고 유지보수를 편리하게 하기 위함이다.) 같이 협업을 하기 위해서는 코드 형식을 정하고 그에 맞게 따라야 한다. How? 적절한 행 길이를 유지하자 ( 200line을 넘지 않고 대부분의 큰 프로그램들을 만들 수 있다. 우리가 익숙한 junit, tomcat도 그렇다.) 위에서 아래로 읽히듯이 (3장 참조. ) 내려가게 코딩을 하면 훨씬 가독성이 좋아진다. 코드간의 수직거리, 수평거리 세로 밀집도(수직거리) 세로 밀집도는 연관성을 의미한다. 즉 밀접한 관계에 있는 코드들은 세로 가까이 놓여야 한다는 뜻이다. 당연한 말이지만 의도적으로 기억해두어야 한다. private String m_className; // 아래 2줄은 연관이 있으므로 세로로 .. 2022. 2. 20.
[책 리뷰] 천인우 - 브레이킹 루틴 (내돈내산) 처음으로 돈을 주고 자기계발서 류를 산것 같습니다. (강남 교보문구에서 삼, 16000) 평소에 마인드 자체가, 힘들면 쉬어도 돼.. 이런것들을 별로 좋아하지 않는 타입이라서.. ​ 하지만.. 유튜브의 알고리즘에 의해서 천인우라는 사람을 처음 접하게 됐습니다. 하트 시그널은 전혀 관심도 없었는데, 이 사람이 하는 말, 주관들이 너무 매력적이었습니다. ​ 천인우씨가 책 홍보를 위해서 나와서 하는 말들을 잘 들어보니, 이 사람이 좀 더 궁금했습니다. 목소리도 좋고 잘생겼습니다. (남자가 봐도 멋있다는 뜻.) 그리고 MBC인가? 에서 나온 뱅크샐러드에서 일하는 영상들을 보니 더 멋있었습니다. ​ 2년만에 페이스북에서 개인 플젝으로 페이스북 블로그에 연재도 하고 했는데.. 이 사람이 노력도 잘하고 머리도 좋은것.. 2022. 1. 30.
[Clean Code] 4장. 주석 Clean Code 4장 (주석) 주석은 나쁜 코드를 보완하지 못한다 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 주석은 좋은 주석이 있고, 나쁜 주석이 있다. 좋은 주석 (책에 있는내용 전부 말고, 내 생각에 괜찮다고 생각한 주석들) 법적인 주석 // Copyright (C) 2003,2004,2005 ... Inc. All rights reserved 정보를 제공하는 주석 정규표현식에 대한 주석은 외계어를 알아보기 더 좋게 만들어준다.// kk:mm:ss EEE, MMM dd, yyyy 형식이다. Pattern timeMatcher = Patern.compile("\\d*:\\d*:\\d*\\w*, \\w* \\d*, \\d*"); .. 2022. 1. 23.
[Clean Code] 3장. 함수 Clean Code 3장 (함수) 작게 만들어라! 함수를 만드는 규칙은 작게 만드는것이다. 20줄도 길다. 이 책의 저자 켄트벡은 java swing의 함수들이 2~3줄 이었다고 한다. (이게 닌자코딩아닌가?) if/else, while문에 들어가는 블록은 한 줄이어야 한다. 함수를 잘 만드는 원칙 함수는 한가지를 해야한다. 그 한 가지를 잘 해야한다. 그 한가지만을 해야한다. 워렌버핏의 주식 투자원칙이 생각나는 말인데, 결론은 제발 한가지만 하자 인것으로... 함수 당 추상화 수준은 하나로! (이해 좀 더 필요) getHtml()은 추상화 수준이 높다. String pagePathName = PathParser.render(pagepath); 는 추상화 수준이 중간이다. .append('\n&#.. 2022. 1. 22.
[Clean Code] 3장. 함수 Clean Code 3장 (함수) 작게 만들어라! 함수를 만드는 규칙은 작게 만드는것이다. 20줄도 길다. 이 책의 저자 켄트벡은 java swing의 함수들이 2~3줄 이었다고 한다. (이게 닌자코딩아닌가?) if/else, while문에 들어가는 블록은 한 줄이어야 한다. 함수를 잘 만드는 원칙 함수는 한가지를 해야한다. 그 한 가지를 잘 해야한다. 그 한가지만을 해야한다. 워렌버핏의 주식 투자원칙이 생각나는 말인데, 결론은 제발 한가지만 하자 인것으로... 함수 당 추상화 수준은 하나로! (이해 좀 더 필요) getHtml()은 추상화 수준이 높다. String pagePathName = PathParser.render(pagepath); 는 추상화 수준이 중간이다. .append('\n&#.. 2022. 1. 22.
[Clean Code] 2장. (의미있는 이름, 요약 : 닌자코딩 금지) 의도를 분명히 밝혀라 변수, 함수, 클래스명을 보고 주석이 필요 없는 이름이 중요하다 (진짜다) int elapsedTimeInDays; int d; or int time; elaspedTimeInDays가 훨씬 직관적이다. x[0] == 1 대신 flag[SELECTED] == 1 이 좀 더 직관적이다. (매우 인정) 의도를 함축하지마라 (닌자코딩 금지, 1장에서도 언급됨) 결론 : 읽는 사람이 알도록 이름을 지어라. 발음하기 쉬운 이름을 사용하라 제니md흠스 변수좀 고쳐주세요! private Date genymdhms; // 이게 사람이 할짓인가? 실화를 바탕으로 재구성(generate date, year, month, day, hour, min, sec) private Date generationT.. 2022. 1. 1.
[Clean Code] 1장. 깨끗한 코드 좋은 팀원들을 만나서 함께 스터디를 하면서 기록을 하게 됐습니다. 제가 발표할 자료들을 짧게 요약한 파일입니다. 1회독이라 이해가 잘못된 부분이 있을 수 있습니다. 언제든지 비난, 비판은 환영입니다 ^^. Clean Code 1장 (깨끗한 코드) 코드가 존재하리라 책에서는 코드를 자동으로 생성해주는 시대가 온다고 말한다. 근데 Copilot은 이미 왔다. 물론 엄청나긴 하지만, 고도로 추상된 언어나 특정 도메인 지식의 언어들을 이해하진 못할것이다. (그라고 그래야한다. 아니면 난 일자리를 잃는다...) 제대로 명시한 요구사항은 코드만큼 정형적이고, 테스트 케이스로 사용해도 좋다. 테스트케이스는 잘 설명된 요구사항 그 자체로도 만족할 수 있다. 나쁜 코드 르블랑의 법칙(Leblanc's law) 나.. 2021. 12. 26.
[BOJ] N과 M(1), next_permutation풀이 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹으로 푸는걸 떠나서, next_permutation으로 어떻게 풀어야 할지 감이 잘 오지 않았다. 코드를 짧게해서 조합을 구할때처럼 뭔가 깔끔한 N! 풀이가 없나? 싶었다. 조합은 {0,0,0,1,1}로 두고 5C3을 한번에 출력할 수 있지만, 순열은 그렇지 않다. ​ 특히 next_permutation은 5명중에 순서고려 X해서 5명 다 세우는건 쉽게 할 수 있다. 하지만, 4P2 이런.. 2021. 11. 8.
[BOJ] 2448. 별찍기-11 https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 여기까지 푸니 이제서야 재귀가 뭔지 와닿는다. 뭔가 말로 표현은 할 수없는데.. 어떻게 되는지 조금 생각할 수 있게됨 ​ 규칙 : 1. 이게 N = 12일때 인데, 뭔가 재귀함수 내에서 3개로 나눠서 호출하면 될 것 같다는 생각을 함 2. 파란 네모 단위로 배열에 담으면 되겠다는 생각 3. 시작점만 잘 주면 풀리겠다는 생각 4. 시작점을 어떻게 찾을까? N = 12일때(빨간색 네모로 들어가보자) div = N/2; recur(div, x, y+div.. 2021. 11. 4.
[BOJ] 1699. 제곱수의 합 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 풀이방법 : DP + 약간의 생각 ​ 1트 : 실패 Why? TLE 1. DP[n] = k, n을 만드는데 필요한 최소 숫자의 개수 라고 table 정의 ​ DP[1] = 1 DP[2] =2 // 1 + 1 DP[3] = 3 // 1 + 1 + 1 DP[4] = 1 // 2^2 ​ 이런식으로 해서 DP[10]을 구할땐, DP[1]+DP[9], DP[2]+DP.. 2021. 10. 28.
728x90