[Clean Code] - 독후감 (11장, 12장, 13장)
도서/클린 코드
이 글은 개발 전공 서적을 읽고, 책의 전반적인 내용과 인상 깊었던 개념을 중심으로 개인적인 이해와 함께 정리한 글입니다. 11장. 시스템도시를 세운다면?팀 단위로 시스템을 제작할 때 비슷한 수준으로 관심사를 분리하거나 추상화 수준을 맞추기는 쉽지 않습니다.하지만, 깨끗한 코드를 구현하면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다고 합니다. 즉, 시스템의 구체적인 부분까지도 각 요소가 명확한 책임을 가지게 되어, 복잡한 구현 내부에서도 구조가 무너지지 않습니다. 시스템 제작과 시스템 사용을 분리하라시스템의 제작과 사용은 엄연히 다르게 관리해야 합니다. 이걸 소프트웨어 시스템으로 가져와서 다시 말한다면, 어플리케이션 객체를 제작하고 객체끼리의 의존성을 연결하는 '준비' 과정과 준비과정 이후에 그 객..
[Clean Code] - 변경에 강한 클래스 설계 (8장, 9장, 10장)
도서/클린 코드
이 글은 개발 전공 서적을 읽고, 책의 전반적인 내용과 인상 깊었던 개념을 중심으로 개인적인 이해와 함께 정리한 글입니다. 8장. 경계경계란, 작성한 코드와 외부 코드(라이브러리, 프레임워크, 외부 API) 사이의 접점을 일컫는 말입니다.외부 코드 사용하기먼저, 외부 라이브러리는 사용자가 가져다 쓰는 기능 이상의 내용을 구현하고 있습니다.다르게 말하면, 인터페이스(라이브러리) 제공자는 범용성있는 기능을 제공하려고 하고, 인터페이스 사용자는 자신에게 특화된 라이브러리를 찾게 됩니다. 별 생각없이 라이브러리를 Import하고 사용할 수 있겠지만, 공급자와 수요자의 초점이 다르기때문에 발생하는 문제를 인지하고 있어야 합니다. 책에서는, 아래 코드 처럼 외부 코드에서 가져온 인터페이스의 타입을 직접 노출하지 말..
[Clean Code] - 깨끗한 코드를 위한 설계 전략 (4장, 5장, 6장, 7장)
도서/클린 코드
이 글은 개발 전공 서적을 읽고, 책의 전반적인 내용과 인상 깊었던 개념을 중심으로 개인적인 이해와 함께 정리한 글입니다. 4장. 주석주석은 코드로 표현하지 못하는 부분을 위한 수단에 불과하다고 합니다. 그 말인즉슨, 코드를 짜는 실력이 좋지 못하다는 뜻이라는 의미를 돌려말하는 것 같습니다.또한, 코드는 변화하고 진화하는 반면 주석은 언제나 코드를 따라가지 못하기 때문에 프로그래머들은 주석을 엄격하게 관리해야 한다고, 그래서 복구성과 관련성과 정확성이 언제나 높아야 한다고 합니다. 또한 부정확한 주석은 아예 없는 것보다 더 나쁜 결과를 초래한다고 말합니다. 잘못된 주석은 코드를 이해하는 데 도움을 주기는커녕, 개발자를 오히려 잘못된 방향으로 이끌기 때문입니다. 주석은 나쁜 코드를 보완하지 못한다코드에 주..
데브코스 2차 팀 프로젝트 - Devchat 회고
프로젝트
Devchat - 코드 중심 협업 채팅 서비스프로젝트 기간 : 2025.05 ~ 2025.06 (2개월)프로젝트 인원 : 4명프로젝트 사용 기술 스택BE : Java, SpringBoot, SpringJPA, SpringSecurityFE : JavaScript, ReactDB : MySQL, RedisInfra : AWS EC2, Docker Compose, NGINXTestTool : JUnit, JMeter, PostmanMonitoring : Prometheus, GrafanaGithub 주소 : https://github.com/LimKangHyun/NBE5-7-2-Team08배포 주소 : https://thedevchat.duckdns.org 프로젝트 설명팀 프로젝트를 하다 보면 GitHub와..
백준 17484 진우의 달 여행(Small) - JAVA
알고리즘/백준
문제 링크https://www.acmicpc.net/problem/17484 문제 설명 입출력 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364import java.io.*;import java.util.*; public class Main { static int min = Integer.MAX_VALUE; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRead..
백준 1956 운동 - JAVA
알고리즘/백준
1956 문제 링크https://www.acmicpc.net/problem/1956 문제 설명 입출력 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import java.io.*;import java.util.*; public class Main { static int V; static int[][] dist; static Listint[]>[] graph; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRe..
[Clean Code] - 가독성 없는 코드 탈출 (1장, 2장, 3장)
도서/클린 코드
이 글은 개발 전공 서적을 읽고, 책의 전반적인 내용과 인상 깊었던 개념을 중심으로 개인적인 이해와 함께 정리한 글입니다. 1장. 깨끗한 코드르블랑의 법칙 (leblanc's Law)Later equals never 나중은 결코 오지 않는다 사람이 짜는 코드는 항상 완벽할 수는 없습니다. 상황에 맞게 개선 및 리팩토링을 해야하고, 더 좋은 코드가 있다면 교체할 수 있어야 합니다. 책의 내용처럼 나쁜 코드는 쌓일수록 팀 전체의 생산성을 점차 떨어뜨리고, 이를 해결하기 위해 추가적인 인력이 필요하기 때문에 일단 완성부터하고 나중에 고쳐야지라는 마음가짐보다는 처음부터 깨끗한 코드를 짜는 것이 중요한 것 같습니다. 이 책에서는 나쁜 코드의 위험성을 크게 세 가지로 들고 있습니다.원대한 재설계의 꿈현재 시스템의 ..
백준 17135 캐슬 디펜스 - JAVA
알고리즘/백준
17135 문제 링크https://www.acmicpc.net/problem/17135 문제 설명 입출력 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091import java.io.*;import java.util.*; public class Main { static int N, M, D; static int[][] board; static int max = 0; static MapInteger, Boolean> enem..
백준 2146 다리 만들기 - JAVA
알고리즘/백준
2146 문제 링크https://www.acmicpc.net/problem/2146 문제 설명 입출력 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081import java.io.*;import java.util.*; public class Main { static int N; static int minDist = Integer.MAX_VALUE; static int[][] map; static int[][] set; static Queueint[]>..
백준 1761 정점들의 거리 - JAVA
알고리즘/백준
1761 문제 링크https://www.acmicpc.net/problem/1761 문제 설명 입출력 코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586import java.io.*;import java.util.*; public class Main { static int N, LOG; static Listint[]>[] tree; static int[][] parent; static int[] depth; static int[] dis..