????????
????Martin Fowler??????????????д????????????2003??????????????????????????????????????????????仯???????????????????????????????????????????????????????????????????????????????????????????????????е???????????????????????κ????????????У???????????????????????????????????????????????????????“????????е???????”???????????????????????????????????????á????????????????????????????????????????????????????????????????????????????????ζ?????????????????????????????????????в????e????С????????????????????????????????Σ?????????????????????????????????????????????????????????????????????????????ζ??????????????ζ????
?????????????????????????????????????????????????????????????????????????????к????????????????????????????????????????????裬?????????????????о??????????????????У??????????????????????????????????????????????? ???????????????????????????C/C++??????????????????????Java???????????????????????????????????????????IDE????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????и?Ч??C/C++???????顢?????????
????????????
????????????
????Martin Fowler??????????????д????????????и??????????????????.
??????????????????:
????Refactoring: ???????????????????????????????????????????????£????????????????????????.
?????????????????:
????Refactor: ?????????????????????????????????????£????????.
????????????
????????????????? ???????????????????????taste????????taste?????????????????ζ???????????ζ??!
????Matin Fowler???????????????壬?????????????:
????· ???????????????
????· ?????????????
????· ????????????
??????????????????????????????????????????????и?????????. ????Kent Beck???????????:
????· Pass All Test: ??????????;
????· No Duplication: ??????(DRY)
????· Reveals Intent: ??????????????????
????· Has no superfluous parts: ???????????YAGNI???
???????????????????????ν???.
?????????????????????????”????????????”??????!
????????????????????????????????????????в????????????????й???????.???????????л???????”????????????????”??????:
????1) ??????????????????????в???!
????Matin???????????????????????????????????2???3??:
????2) ?????????????: ????????????;
????3) ???????ó????????????: ?????????????;
??????????????????????????????????????:
????4) ??????????????:??????????????????.
????????????????????????????????????????????????????????ü?????????????????.
????????????
????????????????????o??????????:???????????????? ???????????????
???????????????????????????????????????????????????????κ?Υ?????????????????????????????????.????1)????????????bug?????2??????! ???? 2)??????????????ò??????! ???? 3)????д??????????????! ???? 4)???????????????????????????!
????????п??????????????????????????????????????????????????????????????м????????????????????. ?????????????????????????ν??????????????????ж????????????????????????????????????????????????????????????????????????????ν???! ??????????????????????????????????????????????????????????????????????????????????????????????????????????.
?????????????????Martin????????????ν??????????????磬?????????22????ζ??. ???????????????????????ζ???????????????????????????????ζ?????????????????????????.
?????????????????????Matin????:
????· ??????????????????? (???η???)
????· ????1???????
????· ???Bug?????
????· Code Review?????
??????????????????????У??????????????е?. ??????????????????????????????????????????????????????????????????????????????????.
????????????
??????????????????????????????????????????????! ???????????????????????????????????.
???????????????????????????????????????????????????????????.?????????????????????????????????????????·???????????????????????????????????????????????????????????????????????????????????????????????????! ???????????????????????????????????????????????????????С???????Ч????????????????????????????????.
?????????????????????????
????Martin?????????????????????????е???????????????????е??????????и???.
??????William Opdyke??????????”Refactoring Objected-Oriented Frameworks”?????????????????????:
?????????????????Behavior Preservation???????????????任.
?????????????潫????????????Щ??????????????任?????????Щ???????????????(Behavior Preservation)?????. ????????????????????????:
????Behavior Preservation ?? For the same set of input values??the resulting set of output values should be the same before and after the refactoring.
???????????????д???任????????????Щ???????????????????????£????????????????仯. ?????????????????????????????????任????. ??William Opdyke???????????C++?????26????ε??????任????(????: ???????????????????????????????????????????????…). ?????????????????????????ε??????任???????????????????????????????????????????????????????.
?????????????任?????. ?????????????е??????任.??????????1???仯:

??????????????????ζ???????任?????????????????????л?????α任???????????????.