Java 4

[Clean Code] 2. 의미있는 이름

좋은 이름을 지으려면 시간이 걸리지만, 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 이름에 의도를 분명히 밝혀라 측정하려는 값과 단위를 표현하는 이름이어야 한다. int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 의미 있게 구분하라 Product 클래스와 ProductInfo, ProdouctData라는 클래스가 있다면, 개념을 구분하지 않은 채 이름만 달리한 경우다. 읽는 사람이 차이를 알도록 이름을 지어라. 발음하기 쉬운 이름을 사용하라 genymdhms → generationTimestamp 검색하기 쉬운 이름을 사용하라 문자 하나 또는 상수는 텍스트 코드에서 찾기 어려우므로 이름에 ..

books/Clean Code 2022.01.30

[Clean Code] 1. 깨끗한 코드

이 책을 읽는 이유 → 더 나은 프로그래머가 되려고😀 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 하지만 나중은 오지 않는다... 일정에 쫓기더라도 대다수의 관리자는 좋은 코드를 원한다. 그들이 일정과 요구사항을 강력하게 밀어붙이는 이유는 그것이 그들의 책임이기 때문이다. 좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다. 나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다. 깨끗한 코드를 만드는 비결 모든 테스트를 통과한다. 중복을 피하라 클래스, 메서드, 함수 등을 최대한 줄인다. 이름을 확정하기 전..

books/Clean Code 2022.01.30

다익스트라 알고리즘 (Dijkstra Algorithm)

다익스트라 알고리즘 (Dijkstra Algorithm) 다익스트라 알고리즘은 최단경로를 찾는 알고리즘이다. 최단경로 알고리즘 종류 다익스트라 벨만포드 플로이드 음의 가중치가 없을 때, 하나의 정점에서 나머지 모든 정점으로의 최단경로를 구할 때 사용된다. 다익스트라 알고리즘은 DP를 활용한다. DP가 가능한 이유 > 최단거리는 여러 개의 최단거리로 이루어져 있기 때문! 시간복잡도 V : 정점의 개수, E : 간선 개수 O(V^2) 우선순위큐 사용시 : O((V+E)logN) O(VlogN) : 미방문 노드 중 현재까지의 최단거리를 가지는 노드 찾기 O(ElogN) : 각 노드마다 이웃한 노드이 최단 거리를 갱신할 때 필요 변수 int[] distance // 최단 거리 저장 boolean[] visite..

알고리즘 2021.04.04