FREE SHIPING FOR OVER $100 - MOSTLY SHIP VIA USPS GROUND ADVANTAGE %D days %H:%M:%S
마이클C.페더스
멘토링,능력개발,지식전달,소프트웨어개발관리등서비스제공분야의글로벌리더업체인오브젝트멘토에근무하고있다.테스트주도개발,리팩토링,객체지향설계,자바,C#,C++,익스트림프로그래밍에대한트레이닝과멘토링등의컨설팅을다수수행했으며,JUnit테스트프레임워크의C++버전인CppUnit과통합테스트프레임워크FIT의C++버전인FitCpp의개발자이기도하다.ACM과IEEE회원이다.OOPSLA콘퍼런스(객체지향기법에관한국제콘퍼런스)에서코드페스티벌의장을세차례맡았다.
추천의글지은이소개지은이의말감사의글옮긴이소개옮긴이의말들어가며1부.코드변경의메커니즘1장.소프트웨어변경2장.피드백활용3장.감지와분리4장.봉합모델5장.도구2부.소프트웨어변경6장.고칠것은많고시간은없고7장.코드하나바꾸는데왜이리오래걸리지?8장.어떻게기능을추가할까?9장.뚝딱!테스트하네스에클래스제대로넣기10장.테스트하네스에서이메소드를실행할수없다11장.코드를변경해야한다12장.클래스의존관계,반드시없애야할까?13장.변경해야하는데,어떤테스트를작성해야할지모르겠다14장.나를미치게하는라이브러리의존관계15장.애플리케이션에API호출이너무많다16장.변경이가능할만큼코드를이해하지못하는경우17장.내애플리케이션은뼈대가약하다18장.테스트코드가방해를한다19장.내프로젝트는객체지향이아니다20장.이클래스는너무비대해서더이상확장하고싶지않다21장.반복되는동일한수정,그만할수는없을까?22장.‘괴물메소드’를변경해야하는데테스트코드를작성하지못하겠다23장.기존동작을건드리지않았음을어떻게확인할수있을까?24장.어찌해야할지모르겠다.나아질것같지않아3부의존관계제거기법25장의존관계제거기법부록.리팩토링용어사전찾아보기
★요약★시스템내에오래된코드를다루는방법을배울수있다.오래된코드,즉레거시코드는그코드에익숙한사람도없고,테스트루틴도없어관리하기어렵다.저자는다년간의현장경험과실제코드를바탕으로다양한기법을소개한다.여러언어뿐만아니라,현업에서사용되는도구에대해현실적인조언을해준다.코드내의존관계해결,효과적테스팅방법등24가지기법을통해시스템의낡은코드를변경,관리하는데있어많은통찰력을줄것이다.★이책에서다루는내용★■기능추가,버그수정,설계개선,성능최적화등의소프트웨어변경기법■레거시코드를테스트하네스안에넣는방법■새로운문제발생으로부터시스템을보호해주는테스트루틴작성법■자바,C++,C,C#언어로작성된예제를통해소개하는어떤언어나플랫폼에도사용가능한기법■코드에서수정해야할부분을정확히찾아내는방법■객체지향적으로작성되지않은레거시시스템을다루는기법■구조가모호한애플리케이션을다루는방법★이책의구성★1부,‘코드변경의메커니즘’은소프트웨어코드를변경하는네가지이유와단위테스트,레거시코드를변경하는순서,봉합모델등소프트웨어변경기법에관해다룬다.2부,‘소프트웨어변경’은레거시코드작업과관련된매우일반적인질문을다루고있으며,각장의제목은특정한문제를가리킨다.이때문에제목이다소길어졌지만,독자들이필요한내용을쉽게찾는데도움이될것이다.2부의앞뒤로는도입부에해당하는몇개의장들(1부,‘코드변경의메커니즘’)과레거시코드를다룰때유용한리팩토링에관한내용(3부,‘의존관계제거기법’)을배치했다.도입부의장들,특히4장,‘봉합모델’은꼭읽길바란다.2부에서사용되는기법들의배경지식과관련용어들을설명하기때문이다.문맥상이해되지않는용어가있다면부록의‘용어사전’을참조한다.3부,‘의존관계제거기법’에서소개하는리팩토링기법들은테스트루틴이없는상황에서테스트수행을목표로한다는점에서특별하다.더많은선택지를갖고레거시코드를다루기위해서라도3부의각장을읽어볼것을권장한다.★옮긴이의말★이책을읽고번역하다보니,예전에한창소프트웨어를개발하던시기가떠올랐다.그때는지식과도구가미천해많은시간을들여테스트하고디버깅했다.printf문을써가며변수값을일일이확인했으며,작은개선사항을테스트하기위해전체코드를컴파일하기도했습니다.물론이과정을통해버그는하나씩사라져갔지만,코드는점점더관리하기어려워졌다.결국,마지막에는작은요구사항을반영하는데도많은시간을소비해야만했다.이책은이와같은상황에서사용할수있는여러가지기법을알려준다.어느곳에테스트루틴을놓고,어떤리팩토링기법을사용해야하는지알수있는통찰력을길러줄것이다.독자여러분도소프트웨어를개발했던경험이있다면이와같은일들을수없이겪었을것이다.하지만대부분의개발자들은일관된기준없이상황에따라,혹은개개인의역량에따라다르게처리하면서,일정에쫓겨이를돌아볼겨를조차없을것이다.캡슐화,상속등과같은적절한코딩을위한시간투자보다는빠른기능구현을통한납기준수가우선시되는현실때문이다.이책의조언이여러분의작업환경에그대로적용되지는않을것이다.사용하는언어도많이바뀌고,개발방법도많이변화됐다.하지만어느분야에서든레거시코드는존재하고,관리하기어려운코드임은분명하다.또한이책의많은부분에서리팩토링과관련된내용을다룬다.리팩토링에대한배경지식이있다면좀더이해하기쉽겠지만,없다면이책을통해리팩토링의방식을어느정도체험해볼수있을것이다.여러분이작업하는코드에일괄적으로적용하기는어렵겠지만,기회가될때마다조금씩레거시코드에반영한다면시간이지날수록안전한코드로개선돼있을것이다.즉,코드는여러분의통제하에놓이게될것이고,필요할때새로운요구사항을신속히반영할수있을것이다.