공부노트/개발서적

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

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

    현대의 미친 듯이 빠른 변화 속도를 따라가려면 모든 수단을 동원하여 가능한 한 느슨하고 유연한 코드를 작성해야 한다. 되돌릴 수 있는 의사 결정. Topic 28. 결합도 줄이기 다리를 설계할 때는 그 형태가 바뀌지 않기를 바랄 것이다. 따라서 구조가 단단해야 한다. 하지만 소프트웨어를 설계할 때는 언젠가 형태를 바꾸려 할 것이다. 바라는 것이 정확히 반대다. 소프트웨어의 구조는 유연해야 한다. 묻지 말고 말하라 Tell, Don't Ask. TDA 객체 메서드를 설계할 때 Getter 를 무분별하게 사용해서 Ask 하지 말고 해당 객체가 역할(일)을 수행하는 메서드를 만들어서 Ask 하도록 하면 좋다. 왜냐하면 Getter 를 통해 사용하면 객체의 상태가 호출자 로직(역할)과 결합이 생긴다. 그러면 한..

    [실용주의 프로그래머] Topic 27. 헤드라이트를 앞서가지 말라

    언제나 신중하게 작은 단계들을 밟아라. 더 진행하기 전에 피드백을 확인하고 조정하라. 독립적으로 확증하거나 반증하는 것이라면 모두 피드백이다. 단위테스트는 직전에 고친 코드에 대한 피드백을 준다 사용자 데모 및 사용자와의 대화는 기능이나 사용성에 대한 피드백을 준다. 너무 큰 작업은 무엇일까? '예언'을 해야 하는 모든 작업이다. 자동차 헤드라이트로 비출 수 있는 거리에 한계가 있는 것처럼 우리도 한두 단계 앞의 미래만 내다볼 수 있다. 미래에 어떤 기술을 사용할지, 미래 사용자가 어떤 요구사항을 할지 예측해서 개발하는 것은 너무 앞서 나간 예시라고 설명하고 있다. 단위테스트와 실제 사용자 피드백을 통해 오버엔지니어링을 조절할 수 있다고 말하는 것 같다. 예측해서 코드를 짜지 말고 교체 가능한 코드를 작..

    [실용주의 프로그래머] Topic 26. 리소스 사용의 균형

    [실용주의 프로그래머] Topic 26. 리소스 사용의 균형

    Tip40. 자신이 시작한 것은 자신이 끝내라 Tip41. 지역적으로 행동하라 "자신이 시작한 것은 자신이 끝내라" 팁이 가르쳐 주는 것은 이상적으로 말해서 리소스를 할당하는 루틴이 해제 역시 책임져야 한다는 것이다 public long readCustomer(File file){ try(Scanner sc = new Scanner(file)){ return sc.nextLong(); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } try-with-resource 를 사용해서 리소스를 할당한 곳에서 해제하는 것이 좋다. 중첩할당 코드의 여러곳에서 동일한 구성의 리소스들을 할당하는 경우에는 언제나 같은 순서로 할당해야 교착 de..