분류 전체보기 105

[노개북] 실용주의 프로그래머 (5장. 구부러지거나 부러지거나)

오늘 읽은 범위 🔖 5장. 구부러지거나 부러지거나 📝 책에서 기억하고 싶은 내용 결합도 줄이기 열차 사고: 메서드나 속성들이 모두 연결되어있는 코드. 코드가 지저분하고 고치기 어렵고 코드를 이해하기 위해 알아야하는 것이 너무 많다. (p. 185 ~ 186) 함수 파이프라인 (p. 189) 묻지 말고 답하라(Tell, Don't Ask, TDA): 객체가 하는 일을 위임하라. (객체에서 내부 객체를 호출하지 말고, 불필요하게 분리된 함수는 합치기) 데메테르 법칙, 디미터 법칙 (Law of Demeter, LoD): 깨끗하고 결합도가 낮은 함수를 작성하는 방법, 사실 실현하기 어려움 어떤 클래스 C에 정의된 메서드가 다음 목록에 속하는 것만 사용할 수 있다. C의 다른 인스턴스 메서드 메서드의 매개 변수..

[노개북] 실용주의 프로그래머 (4장. 실용주의 편집증)

오늘 읽은 범위 🔖 4장. 실용주의 편집증 📝 책에서 기억하고 싶은 내용 계약에 의한 설계 (DBC, Design by Contract): 코드를 작성하기 전에 값의 입력 범위, 경계 조건, 루틴이 전달하는게 뭔지 정의하는 일종의 설계 기법이다. 일찍 작동을 멈춰라 (p. 160) 절대 일어나지 않는 일은 없다. 단정문으로 불가능한 상황을 예방하라 (p. 162) 진짜 오류처리를 해야하는 곳에 단정을 대신 사용하지는 말라 (p. 163) 단정 기능을 켜 둬라, 실서비스에서도 (p. 165) 성능 이슈가 있는 경우 문제가 되는 단정문만 끄도록 하자 내가 사용한 리소스는 내가 해제하자 작은 단계들을 밟아라. 언제나. 더 진행하기 전에 피드백을 확인하고 조정하라. "아기 발걸음" 원칙 (p. 178) 너무 큰..

[노개북] 실용주의 프로그래머 (3장. 기본 도구)

오늘 읽은 범위 🔖 3장. 기본 도구 📝 책에서 기억하고 싶은 내용 일반 텍스트의 힘 (p. 132) 일반 텍스트, 암호화, 구조화(XML, JSON..)를 적절히 사용하기 조개 놀이 (Shell Games) (p. 139) 반복적이고 번거로운 GUI 작업을 Shell 명령어로 만들라 Windows의 경우 Cygwin을 이용해 유닉스 호환 레이어와 유닉스용 유틸리티를 사용할 수 있다. 디버깅 (p. 157) 디버깅 = 문제 해결, 디버깅을 할 때 당황하지 마라 데이터를 시각화하면 디버깅하기 좋다. (DDD 디버거 참고) 트레이싱(Tracing)은 값을 추적하기 어려운 동시성 프로세스, 이벤트 기반 애플리케이션에서 유용하다. 고무 오리: 문제의 원인은 누군가에게 설명하는 것만으로도 해결할 수 있다. (설명..

[노개북] 실용주의 프로그래머 (Mission 1)

Mission: 나의 최애 북틸 다른 사람의 TIL을 찾아서 읽고 맘에 드는 것을 3개 선정했습니다. nlom0218 님 책을 안 읽은 사람도 책을 다 읽은 것 처럼 느낄 수 있도록 한 장으로 잘 요약했다고 느꼈습니다. https://nomadcoders.co/community/thread/3724 TIL 2장 실용주의 접근법 – 노마드 코더 Nomad Coders Post on 노마드 코더 Community nomadcoders.co roghabo 님 책의 내용을 충분히 이해하고 작성했다는 느낌이 들었습니다. https://nomadcoders.co/community/thread/3703 실용주의 프로그래머 2장 실용주의 접근법 – 노마드 코더 Nomad Coders Post on 노마드 코더 Comm..

[노개북] 실용주의 프로그래머 (2장.실용주의 접근법)

오늘 읽은 범위 🔖 2장.실용주의 접근법 📝 책에서 기억하고 싶은 내용 요구사항은 항상 변한다 -> 소프트웨어를 신뢰성 높게 개발하고... 유지보수하기 쉽게 만드는 유일한 길 -> DRY 원칙을 따라라 (p. 66) 반복하지 마라 DRY, Don't Repeat Yourself 참을성 없는 중복: 만약 이런 유혹을 느낀다면 '돌아가는 길이 지름길이다'라는 진부한 격언을 기억하라 (p.73) 직교성 Orthogonality: 두 직선이 직교하는 경우, 두 개의 선은 '독립적'이다. -> 결합도 줄이기(decoupling) 하나가 바뀌어도 나머지에 어떤 영향도 주지 않은 경우.. (p. 76) 장점: 생산성 향상, 리스크 감소 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)..

[노개북] 실용주의 프로그래머 (서문 ~ 1장.실용주의 철학)

오늘 읽은 범위 🔖 서문 ~ 1장.실용주의 철학 📝 책에서 기억하고 싶은 내용 실용주의 프로그래머의 특징 (p. 19) 새로운 것에 빨리 적응한다. 캐묻기 좋아한다. 비판적인 사고를 가지고 있다. 현실적이다. 다방면의 기술에 익숙하다. 자신의 기술에 관심과 애정을 가진다. 나의 행동에 대해 책임지기, 변명X, 대안제시O 깨진 창문 35p = 나쁜 설계, 잘못된 결정, 형편없는 코드 등 내버려 두면 더 나빠진다 바로 처리하거나 그렇지 못하면, 아직 구현되지 않았음 Not Implemented 이라는 문구를 표시하라 돌멩이 수프 이야기 : 돌멩이를 끓인 물에서 시작해 마을 사람들의 호기심을 이용한 속임수로 진짜 수프를 만들어내는 이야기 시작 피로 start-up fatigue : 프로젝트 시작할 때 서로 가..

블록 레벨의 유효 범위(Scope)에 대하여

const는 블록 레벨 스코프이고, 재할당이 안된다. 하지만 아래와 같이 하위 블록에서 동일한 이름으로 선언하고, 값을 할당할 수 있다. Case 1 : 상위 블록과 하위 블록에 동일한 이름의 변수가 선언된 경우 function try1() { const a = "cocoa"; console.log("[try1] before", a); // cocoa if (true) { console.log("[if] before", a); // undefined const a = "leaf"; console.log("[if] after", a); // leaf } console.log("[try1] after", a); // cocoa } try1(); 그리고 그 블록에서는 상위 블록의 동일한 이름을 가진 변수는 참..

[HackerRank] Array Manipulation 풀이

문제 입력 값은 행렬의 크기(n*m)와, 쿼리(query, 여기서는 db 쿼리가 아니라 "연산"을 의미한다.)들로 이루어져있는데, 쿼리의 의미는 a = 시작 인덱스, b = 종료 인덱스, k = 값이다. 각 쿼리는 시작 인덱스 ~ 종료 인덱스 사이의 배열 요소에 값을 더하는 작업을 수행한다. 모든 작업을 수행하고 배열의 최대 값을 반환하면 된다. n m a, b, k a, b, k a, b, k ... www.hackerrank.com/challenges/crush/problem Array Manipulation | HackerRank Perform m operations on an array and print the maximum of the values. www.hackerrank.com 풀이 과정 ..