본문 바로가기
[Effective Unit Testing] Chap6. 신뢰성 [Effective Unit Testing] Chap6. 신뢰성 -테스트를 작성하는 이유이기도 한 신뢰할 수 있는 코드를 만들기 위해서는 테스트 자체도 믿음직해야 한다.소프트웨어 개발에는 코드를 수정하고 개선하고 관리하는 일이 빠질 수 없는데, 만약 테스트를 믿지 못한다면 아무 관련 없어 보이는 코드라도 쉽사리 바꾸지 못한다. -주석은 이해를 돕기 위한 설명글로 코드에 적어 넣을 수 있다는 요긴함이 있지만,자칫 한눈파는 순간 엉터리 정보로 둔갑하는가하면, 본문 전체를 주석 처리한 테스트는 실제로는 아무것도 안 하면서 성공했다고 보고되기도 한다. 6.1. 주석으로 변한 테스트 -주석으로 변한 테스트(Commented-out Test)는 아무런 설명도 없이 읽는 이에게 혼란을 가져다 준다. 6.1.1. 예시.. 2019. 3. 15.
[Effective Unit Testing] Chap1. 좋은 테스트의 약속 [Effective Unit Testing] Chap1. 좋은 테스트의 약속 -좋은 설계임을 증명하려거든 자동화된 테스트를 만들어보라! -테스트에 대한 인식 전환이 필요하다.테스트란 단순한 기능 검증 수단만이 아닌 요구사항을 명시한 문장이요, 모듈과 API 설계 수단이며, 사용설명서이자, 최고의 인수인계/유지보수 자료이기까지 하다.개발자의 설계역량 면에서 보면, 디자인 패턴에만 의지하기보다 테스트하기 쉬운 설계를 추구하는 쪽이 훨씬 탄탄한 기본기와 응용력을 길러줄 것이라고 감히 단언할 수 있다. 1.1. 더 좋은 테스트를 작성하기 위한 현황 점검-테스트 선행 방식에서는 자동화된 테스트를 단순한 오류 예방 목적으로뿐 아니라, 코딩 전에 그 코드에 기대하는 동작을 정의하는 설계 보조 수단으로까지 활용한다.구.. 2019. 2. 26.
[실용주의 프로그래머] 리팩터링 [실용주의 프로그래머] 리팩터링 -코드가 더 이상 잘 맞지 않아서 장애물에 부딪혔을 때, 사실은 하나로 합쳐져 있어야 할 두 개를 발견했을 때, 어떤 것이든 ‘잘못’ 되었다고 생각될 때, 그것을 변경하는 일을 주저하면 안 된다. 언제나 바로 지금이 최적기다. 어떤 것이라도 코드를 리팩터링해야 할 이유가 될 수 있다. 중복, 직교성이 좋지 않은 설계, 유효기간이 끝난 지식, 성능 -코드를 리팩터링하는 것은 사실 고통 관리(pain management)를 실천하는 것이다.현실을 피하지 말자. 소스코드를 이곳저곳 변경하는 것은 굉장히 고통스러운 작업일 수도 있다.거의 작동하는 수준까지 올려놓은 코드였는데, 이제 완전히 망가져 버린다.코드를 산산조각으로 해체하는 일을 주저하는 개발자들이 많은데, 그 까닭은 그런.. 2018. 11. 5.
[실용주의 프로그래머] 우연에 맡기는 프로그래밍 [실용주의 프로그래머] 우연에 맡기는 프로그래밍 -일단 코딩에 들어가면 대부분 기계적으로 따라가야 하는 일, 곧 설계 내용을 컴퓨터가 실행할 수 있는 문장으로 바꾸는 일만 남는다는 생각이 일반적이다.이런 태도가 우리 생각에는 보기 흉하고, 비효율적이고, 구조가 엉망이고, 유지보수하기 힘들고, 한마디로 완전히 잘못된 프로그램이 그렇게나 많게 된 가장 큰 원인이다. -적극적으로 자기 코드에 대해 생각하지 않는 프로그래머는 우연에 맡기는 프로그래밍(programming by coincidence)을 하는 것이다. -실용주의 프로그래머는 모든 코드를 비판적인 눈으로 바라보는데, 자기 자신의 코드도 예외가 아니다.우리는 스스로 만든 프로그램과 설계에서 언제나 개선할 여지가 남아있음을 느낀다. -여러분이 코드를 작.. 2018. 11. 3.
[실용주의 프로그래머] 직교성 [실용주의 프로그래머] 직교성 -설계, 빌드, 테스트 그리고 확장하기에 쉬운 시스템을 만드는 데에 있어 직교성(Orthogonality)은 매우 중요한 개념이다. 직교성이란 -컴퓨팅에서 이 용어는 일종의 독립성(independence)이나, 결합도 줄이기(decoupling)을 의미한다.하나가 바뀌어도 나머지에 어떤 영향도 주지 않으면 서로 직교한다고 할 수 있다. 비직교적인 시스템 직교성의 장점 -시스템의 컴포넌트들이 고도로 상호의존적인 경우, 특정 국지적 부분만 수정하는 방법이란 없다. “” 관련 없는 것들 간에 서로 영향이 없도록 하라. “” -컴포넌트들이 각기 격리(isolate)되어 있으면 어느 하나를 바꿀 때 나머지 것들을 걱정하지 않아도 된다.해당 컴포넌트의 외부 인터페이스를 바꾸지 않는 한.. 2018. 9. 30.
[Effective Objective-C] #32 안전한 예외 처리 코드를 작성하려면 메모리 관리를 주의 깊게 다루라 [Effective Objective-C] #32 안전한 예외 처리 코드를 작성하려면 메모리 관리를 주의 깊게 다루라 출처 : Effective Objective-C -예외는 많은 최신 언어에서 제공되는 기능이다.C 에는 예외라는 개념이 없지만 C++ 과 오브젝티브-C 에는 있다.사실 최신 런타임에서는 C++ 과 오브젝티브-C 예외가 서로 호환된다.이는 한 언어에서 발생한 예외를 다른 언어에서 catch 해서 처리할 수 있다는 것을 말한다. -오브젝티브-C 는 심각한 에러 처리에만 예외를 사용하도록 권장하긴 하지만 그래도 예외를 잡아 처리하는 코드가 필요할 수 있다.예를 들어 예외가 발생하는 것에 대해 아무런 통제를 할 수 없는 오브젝티브-C++ 코드나 서드 파티 라이브러리를 사용하는 코드에서 예외 처리.. 2017. 9. 25.
[android] CodePro Analytix 내 코드를 분석하자. 안드로이드, CodePro Analytix 내 코드를 분석해보자. https://developers.google.com/java-dev-tools/codepro/doc/?hl=ko&csw=1 CodePro Analytix는 이클립스 개발자를 위한 Java 테스팅 및 코드 분석 툴이다.개발자들이 보다 훌륭한 품질의 코드를 작성하도록 도와주며, 오류를 줄이는 데도 도움을 준다. 이전에는 상용이었는데, 구글이 인수한 후 무료로 기부 배포!! CodePro Analytics 로 할 수 있는 일들. 1. 코드 분석 ( Code Analysis )2. 코드 지표 측정 ( Metrics )3. 유사 코드 분석 ( Similar Code Analysis )4. 코드 커버리지 측정 ( Code Coverage )5. 코.. 2014. 1. 9.
반응형