분류 전체보기170 클린코드 14장 14장 점진적인 개선 책 초반에, 좋은 코드를 짜기 위해서는 일단 막 짜고 나서 다듬어야 한다고 했다.. 초안 코드를 단계적으로 개선해 좋은 코드를 만들어야 한다. public static void main(String[] args) { try { Args arg = new Args("l,p#,d*", args); boolean logging = arg.getBoolean('l'); int port = arg.getInt('p'); String directory = arg.getString('d'); executeAppliocation(logging, port, directory); } catch (ArgsException e) { System.out.printf("Argument error: %s\n".. 2022. 9. 16. 인적성 수리 공식 모음 인적성이랑 ai 면접이 뭔지도 모르는데 당장 낼 모레 시험을 쳐야한다.... 내 가장 큰 고민은 수리부분이다. 문제 유형을 보니 옛저녁에 다 까먹은 공식들을 좀 써야 할 것 같아서 정리해본다. 1 거속시 거리, 속도, 시간과 관련한 문제 거리 = 속력 X 시간 속도 = 거리 / 시간 시간 = 거리 / 속도 6km의 거리를 자동차로 가는데 45분이 걸렸다. 이 자동차의 평균 시속은 몇 km/h 인가? 정답: 8km/h 2 소금물 농도 액체 농도 관련 문제 소금물의 농도 = 소금의 양 / 소금물의 양 X 100(%) 소금의 양 = 소금물의 농도(0.xx) X 소금의 양 물을 추가하는 경우 (소금물 + 물) 물을 증발시키는 경우 (소금물 - 물) 15%의 소금물 450g에 물 50g을 섞어 넣으면 몇 %의 소.. 2022. 9. 16. 유니온 파인드 최근에 졸업 시험과 기업 코테를 포함하여 여러번 코테를 쳤다. 그중에서 n의 크기가 300,000으로, 아무리 봐도 최소 nlogn 안쪽으로 풀어야 할 것 같은데 완탐 풀이법밖에 생각나지 않는 문제들이 2개 있었다. 그들의 공통점은 union find로 풀어야 하는 문제였다는 것이었다. 첫번째 문제를 만났을 때 유니온 파인드를 공부했다면 다른 문제는 풀 수 있었을지도 모르는데... 역시 모르는게 생기면 공부를 바로바로 해야 한다. 유니온 파인드에 대하여 유니온 파인드의 다른 이름은 서로소 집합이다. 두 집합이 서로소 관계인지를 확인할 수 있다는 말은 각 집합이 어떤 원소를 공통으로 가지고 있는지 확인할 수 있다는 말과 같다. 그렇기 때문에 union-find라고 부른다. 기본 유형은 위 그래프의 연결 관.. 2022. 9. 16. 클린코드 13장 13장 동시성 동시성이 필요한 이유? 구조적 개선 응답시간과 작업 처리량 개선 미신과 오해 다음은 동시성과 관련한 일반적인 미신과 오해이다. 동시성은 항상 성능을 높여준다. 동시성을 구현해도 설계는 변하지 않는다. 반대로 다음은 동시성과 관련된 타당한 생각 몇 가지다. 동시성은 다소 부하를 유발한다. 동시성은 복잡하다. 일반적으로 동시성 버그는 재현하기 어려워, 일회성 문제로 여기고 무시하기 쉽다. 동시성을 구현하려면 흔히 근본적인 설계 전략을 재고해야 한다. 난관 두 스레드가 같은 변수를 동시에 참조하면 이상한 결과가 발생할 수 있다..재수없게 동시에 참조하지 않는다면 올바른 결과를 내놓겠지만, 문제는 잘못된 결과를 내놓는 일부 경우이다. 하지만 동시성 코드가 일으키는 문제로부터 시스템을 방어하는 원칙.. 2022. 9. 16. 클린코드 12장 12장 창발성 창발(創發)또는 떠오름 현상은 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상이다.(위키백과) 창발적 설계로 깔끔한 코드를 구현하자 켄트 벡이 제시한 단순한 설계 규칙 4가지 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계 규칙 1: 모든 테스트를 실행하라 '테스트 케이스를 만들고 계속 돌려라'라는 규칙을 따르면 시스템은 낮은 결합도와 높은 응집력이라는, 객체 지향 방법론이 지향하는 목표를 저절로 달성할 수 있다! 단순한 설계 규칙 2~4: 리팩터링 코드 몇 줄을 추가할 때마다 잠시 멈추고 설계를 깔끔하게 조감한다. 테케가 있으므로 코드를 정리하면서 시스템이 깨.. 2022. 9. 16. 클린코드 11장 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. 11장 시스템 도시를 세운다면? 도시가 잘 돌아갈 수 있는 이유 중 하나는 적절한 추상화와 모듈화이다. 큰 그림을 이해하지 못할지라도 개인과 개인이 관리하는 구성요소는 효율적으로 돌아간다. 시스템 제작과 시스템 사용을 분리하라 소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는 준비 과정과 (준비과정 이후에 이어지는) 런타임 로직을 분리해야 한다.) Main 분리 시스템 생성과 시스템 사용을 분리하는 한 가지 방법. 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮긴다. 즉 애플리케이션은 객체가 생성되는 과정을 전혀 모른다. 팩토리 객체 생성 시즘을 애플리케.. 2022. 9. 16. 이전 1 ··· 9 10 11 12 13 14 15 ··· 29 다음 반응형