refactoring ییارآاب ب یاِهدقه -...

21
علی عیدی هاهس بر در پیشرفت سازیا زباى جا بby: einali{at}[ ce.sharif.edu | gmail.com] م خداا ب هقده ای بریزآرای با) Refactoring ( Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin Fowler

Upload: nguyendat

Post on 25-Sep-2018

234 views

Category:

Documents


0 download

TRANSCRIPT

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

ب ام خدا

)Refactoring(بازآراییای بر هقده

Any fool can write code that a computer can understand. Good programmers write

code that humans can understand.

Martin Fowler

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

فرست هطالب

2 ......................................................................................................................... مذ

3 .............................................................................................................. فیوث وذ داػتب

6 ............................................................................................................ فیوث وذ ـیس

6 .............................................................................................................. ؼت؟یچ ییثبصآسا

7 ................................................................................................................ احذ آص

8 ............................................................................................................ ییثبصآسا یبیضا

01 ................................................................................................. ییثبصآسا یثشا یذیجذ وال

00 ............................................................................................................. خب یب خـت

01 .............................................................................................................. یتىشاس وذ

02 ............................................................................................................. یال تذ

03 ............................................................................................................ ثضسي والع

04 ................................................................................................... پبساتشب ثذ فشػت

05 ............................................................................................................... اشا شییتغ

05 ....................................................................................................... ب ػبچ یجشاح

06 ........................................................................................ شاید اىببت ث داؿت چـ

07 ......................................................................................................... داد یب خؿ

08 .......................................................................................... وذ ییخاب ث شثى یب یتك

11 ..................................................................................................................... ضیت وذ

10 ........................................................................................................................ بثغ

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

هقده

افضاسی اػت. ؿبیذ ثتا فت حتی ثب پیـشفت تیذ بی شثؼیبسی اص پشطاكی خشجی ،ثشب ؿت ؿذ یب ب وذ

یغ ثػی ثشب افضاس اص ػح تجشیذ ثبالتش، دس آیذ یض چب وذی افضاسب ایجبد اثضاسبیی ثشای تیذ شش

اص ای افضاس ثبلی خاذ بذ.ذػب شث ػا خشجی اكی وبس ؿد تػي بؿی خاذ اجشا اػت ؿت ؿذ

داسد.ثشای ذػب تج ث ویفیت ای خشجی ایت صیبدی سػت و

ؿد.یؼی ؿت ـذ ثبؿذ، وذ وثیف خاذ یوذی و ثب اك دسػتی ثشب

سی یضا ضی ظس اص ثش دذ. صب ثشای یه وذ وثیف سا ـب یتی تیذ سی داس صیش یه ساث ثی ثش

بی جذیذ ث ثشب كشف ؿد. صبی اػت و ثبیذ ثشای افضد یظی

آیذ. صیشا وذ وثیف بیت سی ث ؿذت پبیی یثش 0وذ ثب زؿت صب ثشای یه وذ وثیفبس و ـبذ ی

احتب ایى وذ جذیذ یض وثیف ؿت ؿد خیی ثیـتش اص آ ،ث وذ وثیف جذیذ ب افضد وذیؼی آى ؼشی داسد.

تا فت و یضا وثیف ثد یه وذ ث ؿى بیی افضایؾ ىذ تیض ؿت ؿد. ث ػجبست دیش یث كستاػت و

وذ.فش ی یوذ ث شس ث كسی تی ث ؿى بیی وبؾ پیذا یوذ. اص ای س ثشپیذا ی

بی ثجد آ اسای دذ.وذ یه مذ دس خلف ویفیت وذ سؽای ؼتذ تالؽ ی

یؼی خة اػتفبد ؿذ اػت.یؼی ثذ دس مبث ثشب( ثشای خشجی ثشبClean Code( دس مبث وذ تیض)Messy Codeدس ای ؼتذ اكالح وذ وثیف) 0

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

داستاى کد کثیف

خسذ؟ چشا ثؼیبسی ب ث دی وذ وثیف ؿىؼت یلؼ وؼی دػت ذاسد وذ وثیف ثیؼذ. ی چشا ثؼیبسی اص پشط

ؿذ؟ ی ب اػتفبد ؿذ، دس سیخت دثبس ؿتزاسی اجب ؿذ ثش سی آیافضاسب لج اص آى ث اذاص ػشباص ش

بی خد یؼتذ حبهشذ و جبغ ثؼیبسی اص هشس وذ بی لبدس ث تغییشات حتی وچه ثش سی وذچشا ثؼیبسی ػبصب

بی جد خد ذذ؟ی ت ث تغییش وذ

آسد اػت و چی هؼی سا پیؾ ثذ آبیؼب ؼجت ث وذ شاحی اؾ و ثشبتا تب فشم وشد و دی

افضاسب داسد!!( دس ادا داػتب چشخ حیبت یه پشط سا اػت. )شچذ و ای دی ػ صیبدی دس ویفیت و ش

تش ای ـىالت سا ثشسػی وی.یشی تب وی دلیكیپی

افضاسی تـىی ؿذ. ای تی پغ اص اسای ؼخ ثشای اجب یه پشط ش ی ث ب )اف(یه ػبصب تی سصی سصبسی دس

ب بی ختف ػبصب )یب ـتشیب( اج ؿذ. حبال تی دس فـبس ؿذیذ وبسثشا ثشای افضد یظیای ثب اػتمجب ثخؾ

بی ػخت ثذیاؿت. ذیشا تلی شفتذ و ثب هغ صب اىببت جذیذ پـتیجبی اص استجببت جذیذ لشاس د

بی دس وتشی صب ى تغییشات صیبدی دس وذ داد ؿد.افضایؾ ضی

تؼشیف وشد. پغ اص اسای ؼخ ای و ثب تبخیش شا ثد، تی ثشای تی )ة( ای دیشؿبیذ ثتا ای داػتب سا ث

بی حل تیذ ؿذ جك ثب یبصذی ،افضاسدی تحی بدسػت فشایذ اؿتجب تیذ شتج ؿذ و ث )ة(

ثیی ؿذ خبسج ؿذ اػت. حبال پشط ث دی تبخیشبی ىشس وبال اص چبسچة ضی صب پیؾطوبسثشا یؼت. پش

ؿد.اص ثحشا ؿذیذا احؼبع یخش ؿىؼت وب سثشػت یبص ث یه الذا هشثتی ثشای خشج

یه سایت دیش اص داػتب ثشای تی )ج( جد داسد. ای تی ثشای اجب یه پشط تـىی ؿذ و دس اثتذا دسن دسػتی اص

ثذی ثؼیبس وتشی ثشای پشط دس ظش شفت ؿذ. حبال ضدیه ثذی پشط جد ذاؿت. ث ی دی صباثؼبد صب

اجب پشط اػت تی ثب یه هؼیت ثحشای سثشػت. 0ػشسػیذ

1 Deadline

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

ؿد اػوبی تی یه جؼ ثحشا تـىی ی وذ.اص ایجب لل تی )اف( ، )ة( )ج( ث یه ؿى ادا پیذا ی

اص هؼیت و وذیػؼی سصی تیؿذ و تب تالؽ خد سا ثشای دسػت ؿذ اهبع ثىذ. ثب تالؽ ؿجبتؼذ ی

ث ػشسػیذبی خد سػیذ افتذ حبال تی ثحشای خبسج ؿد چیض سا ث حبت ػبدی ثششداذ. ای اتفبق ی

اػت ذیشا ثؼیبس ساهی ؼتذ.

-ؿد. ا ثب خد فىش یتج یه اتفبق ػجیت ی ،سددیشلت خؼت ث ػت خب خد یذیش تی ؿت ػشسػیذ و

ثد اػوبی تی وذبی سی تی ث ؿذت افضایؾ پیذا وشد دس سصبی تی ث ػشسػیذ ثشوذ و ث شص ػجیجی

دادذ. ذیش تی ثب خد فىش وشد و حتب احؼبع تش اص چذ لت پیؾ تحی یح ؿذ ث خدؿب سا ثؼیبس ػشیغ

آب ؿذ اػت.سی ؼئیت ثیـتش اػوبی تیؾ ثبػث افضایؾ ثش

و ؿذ ثد. وبیی اص وذ ؿذذ و ث شص وثیفی ؿتو تج ثخؾثؼذ اص ذتی )ثال چذ ب یب یه ػب( و

شفتذ، صب صیبد یؼب ثشای دیشوشد ػشسػیذبی خد سد اخز لشاس یسی تی دس حب وبؾ ثد. لتی ثشبثش

.وشدذآ سا ث ػا دی اسای ی 0فیذ وذ جد ثبصثىبسیشیؼی یب ػبصی ثب وذ فیىپبسچ

بی جذیذ وذ ثب جبثجبیی افشاد یب اػتخذا یشداذ ػؼی یسی افشاد سا ملش یحبال ذیشا ثشای وبؾ ثش

تاذ دیذ دسػتی اص ثیذ یفی و یؿذ ث دی وذ وثیهؼیت سا ثتش وذ. افشاد جذیذی و ث پشط اهبف ی

ؿذ.تش ؿذ وذ یجت وثیف ،یؼذثب وذبیی جذیذی و ثب چـب ثؼت یشاحی وذ ث دػت آسذ

1 Reuse

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

وذ افتذ. ثالخش اػوبی تی اص ای هؼیت ث ت آذ ذیشا سا جبة یػشاجب یه ؿسؽ دس ػبصب اتفبق ی

تا شحی دس اذاخت تبی ای ـىالت سا ث ساحتی بی جذیذ ییه تی جذیذ اػتفبد اص فبسیو ثب تـىی

ثشای ای وبس تـىی دذ. 0ایتی حشفیه ؿد و ثالخش ساهی یدس صب وی ح وشد. ػبصب

جذیذ وبس وذ آصادی ػ ثیـتشی داؿت ثبؿذ بیتاذ ثب فبسیثبؿذ صیشا آجب ی دػت داسذ و دس ای تی

ؼتذ وبس ػبصب ثیبؿبػذ ی ثب ك وؼتبی جذیذ سا یب ثب اػوبی جذیذ و فبسیاب ػب ای تی

-ی ؿذ اص ای س حغ ثؼذی ؼجت ث اػوبی تی جذیذ پیذااػوبی پشط لذیی وبس زاؿت ی ؿد.تـىی ی

وذ.

-افضاس لذیی سا اجب یتب وبسبی شافضاسی ثؼبصد و حبال ش د تی دس حب سلبثت ؼتذ. تی جذیذ ثبیذ ش

و دس حب حبهش ثش سی ػیؼت لذیی دس 1بی تغییشتشی سا یض خاذ داؿت ثى دسخاػتاىببت جذیذ دذ

ؿذ اػب ؿد.حب اجشا اػت، ثبیذ دس ػیؼت جذیذ حی ػبخت

ذیشیت اػال وشد اػت و تب صبی و ػیؼت جذیذ وب ؿد ثتاذ وبسبی شثى ث ػیؼت لجی سا ث

آ سا خاذ داد. 2وبساذاصیدسػتی اجب دذ اجبص ث

افضاس افضاس جذیذ ث یه ػیؼت صیجب ی بوبسآذ دس مبث شو شوـذ وافضاس جذیذ ثؼیبس یصب تیذ ش

و و ؿد.تش یوبسثشا ث اػتفبد اص آ ػخت ػخت ججس وشدؿد ی لذیی صؿت ی وبسا دس ػبصب ؿبخت

بی جذیذ آبد خاذ ؿذ تلف ایذ آى ػیؼت جذیذ ػمشیت ثب تبی یظیاػب تغییشات سی ػیؼت لذیی ث

بذ. ؿد تظش ػیؼت جذیذ یی

ؿذ سا حمك وذ. ثالخش ؼیبی تاذ ػشسػیذاب ػیؼت جذیذ ثب ـىالت صیبدی ثشای پیبد ػبصی سثشػت ی

افضاس جذیذ سا ث وبسثیذاصذ ش وذ و تب ػشسػیذ ـخلی شذیذ سا ججس یوذ تی جای ثبس ذیشا ؿسؽ ی

پشط تلف خاذ ؿذ.

-ؿد. ثشای ادا داػتب ای ثخؾ سا دثبس اص ا ای ثبس ثشای تیثبس دیش جؼ ثحشا ای ثبس دس تی جذیذ تـىی ی

جذیذ ثخایذ!!

1 Tiger Team

1 Change Request – افضاس تغییشات اص یذ. دس فبص ذاسی شؿد، یافضاسی داد یبیی تػي وبسثشا ثشای تغییش ثش سی ػیؼت شاكالح ث دسخاػت ؿذ.سیضی ثش سی ػیؼت اػب یبی تغییش پغ اص ی یه فشایذ ذ تبییذ ثشبشیك دسخاػت

3 Deployment

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

ریش کد کثیف

ب داؼت.ثد تحت فـبس ػشسػیذ ،سا 0اییؼب ثبػاد حشفتشی ػت ایجبد وذ وثیف تػي ثشبؿبیذ ثتا

بی ری خد دس خلف ویفیت یؼب ث كست بخداب ثخـی ای فیتشبی ثشبب ضدیه ؿذ ث ػشسػیذ

ـتشی ث ػشسػیذ سد ظش ثشػذ.وذ تب ثتاذ ثب آصادی ػ ثییؼی سا خبؽ یثشب

سػذ. ؼئ فمي ب فشایـب ای هؼیت اػت. ثؼذی و یچ "وفؼ ثیؼؾ ثؼذ دسػتؾ ی"ای ج

ری یؼی یه وبس پیچیذفشاؿی یب جد اساد ثشای ثبصـت ث زؿت تغییش وذ یؼت ثى اص اجبیی و ثشب

-هؼیت ری زؿت ثشای فیذ دسػت یب غي ثد تلیبت یض ثشخی اص البت ثؼیبس ػخت ی اػت، ثشـت ث

ؿد.

وبس دس ثشب اصیؼب تاذ تجیی ثشای ػت ؼئیت ثشبپزیشفت فـبس ػشػیذ ث ػا سیـ وذ وثیف ی

سیضی ث ػا یه اك ثشای پزیشی ثشبیشیتلج ذكذ اجت و بی صب ضی ـخق ثبؿذ. چبسچة

تب دس خلف تبثیشات ثذ صبجذی ی ؼئ شح ؿذ .غیشلبث خذؿ اػت اكثشد ش وبس ذػی یه پیؾ

.اػتافضاسی ػختی ای وبس دلت سد یبص ثشای آ سا دس خلف یه پشط شتبویذی ثش

چیست؟ بازآرایی

بی ثیشی تبثیش دس یه سؽ ذ ثشای ثجد ویفیت وذ جد ثذ تغییش دس اػي (Refactoring)ثبصآسایی

اػت. 2ث وذ تیض 1ث ػجبست دیش ثبصػی یه فشایذ تؼشیف ؿذ ثشای تجذی وذ وثیف بی آ اػت.اػتفبد

یذ ای تؼشیف وی ػجیت ث ظش ثشػذ صیشا و ؿب ؿذ وذ اػت.ثجد شاحی ثؼذ اص ؿت ثبصآسایییه تؼشیف دیش اص

-ؼئ ای اػت و یه وذیؼی دسػت ثؼذ اص یه شاحی خة اتفبق ی ؿد.ػب وذیؼی ثؼذ اص شاحی اجب ی

تش و وش وشؿذ ثشای آ، وػیؼت ػبختبس شاحی 3وذ، یىپبسچیش ییافتذ پغ اص ذتی و وذ تغی

ای ث جبی یه فشایذ ذػی ثیـتش ث یه دس ای ب افضد وذ ث چی ثشب ؿد.پغ اص ذتی ح یؿذ

ؿد.تجذی یثب چـب ثؼت پی وشد وبس ك

ػاد چب ذاؿت داؾ دس خلف ویفیت وذ شاحی، دی اكی وذ ثذ اػت.یؼب جتذی ثیثشای ثشب 0

2 Messy Code 3 Clean Code 4 Integrity

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

وشد دثبس یه تفىش ؼج شاحی ؿذ ث آ اػت. ای وبس اص شیك ثشای ثجد شاحی حبو وذ ثبصآساییفشایذ

افتذ و تبثیش جؼی ای تغییشات وچه ث ایجبد وذی ثب بی ختف وذ اتفبق ییشات ػب وچىی ثش سی ثخؾتغی

.اجبذی ثیـتش ویفیت

ثبصآساییوتبة دس ایی اص دیش وذب ثبصؿبخت. تا اص ـبلشاسیشذ، سا ی ثبصآساییبیی اص وذ و ثتش اػت سد ثخؾ

جبیضی 1ؿد و دس ای ؼتذ ای اكالح ثب اكالح خـت خبفت ی 0ثذ بیی ثیبستی فبش ث چی ـب

ؿذ اػت.

آزهى احد

وذ بذ ش تغییش دیشی دس آ حت ثبصآساییبػت ثشای وذ اػت. 2بی احذوذ ؿت آص ثبصآساییب ا ثشای

دذ و پغ اص تغییشات اص ػذ خببی جذیذی سا دس وذ جت ؿد. ؿت آص ای اىب سا یاػت و ـىالت

ئ ؿی. 3ایجبد خب

بػت. آص بی ثیشی آتغییش ػبختبس شاحی اجضای ثشب ثذ تغییش دس اػي ثبصآساییثبیذ تج داؿت و ذف

ش چذ و اش وذ ثب فشایذ دسػتی ؿت تبس ثیشی اجضا سا ثش ػذ داسد.احذ دلیمب ظیف ایب اص كحت سف

اسصیبثی ؿذ.اجشا وب دلیمی داسد و ثبیؼتی ثب ش تغییش وذ دثبس 4ذاسی ؿذ ثبؿذ لؼب اسد آص

0 Bad Smell – ص یه اتفبق ثذ ای اجبی ای اكالح فت بدسثضسي وت ثه دس خلف و ثچ اػت9 لتی ثی ثذ ؿیذی ثبیذ ثچ سا ػم وی. ظس ـب

اػت. تاذ دس یه ثبی ثضسي ث ػا یه م هؼف تاذ ثب یه ثبسذی اص ثی ثشد چ ثؼب ػبختبی سا فش ثشیضد. خـت خب یخـتی و خة پخت ـذ ثبؿذ، ی 1

دس ،اص اكالحی و فبش دس وتبثؾ ث وبس ثشد اػت سا تشیـت خب ؼبی دلیكثبم ثبلی ثبذ چ ثؼب صبی جت فشسیخت ثب ؿد. اص ای س ؿبیذ ثتا فت و خ خب دس یه ػبختب اػت.افضاس ثؼیبس ؿجی جبیضی وشد خـتوذبیی ثب شاحی ثذ دس یه شخد داسد. جبیضی وشد لؼ

ایشای صب ػبػبیب ثد و للش ثؼیبس ثبؿىی ثشای ؼب ؿب حیش ػبخت س ؼبسػبثبؿذ. س ػبآجش جدػبص صیتاذ یه خـت خب دس یه ثبی ثضسي ی سیضد. پغؿبػذ و اش آ سا ثشداسد، و للش فش یس پبػخ داد و آجشی دس ثب یػبؿبػی؟ چ ثب ث اتب سػیذ ؿب اص ؼبس پشػیذ آیب م هؼفی دس ای ثب ی

س ثبی ػبس تحیش ؿذ و اص ثی آى ػبؼب چب دس ؿى ثبی ،ب چ ثب ث اتب سػیذثشخی سایتدس پبدؿب دػتس داد، و ا سا اص ثبالی للش ث صیش ثیبذاصذ. بی ثضسي ث ثبس آسد. ثشا تاذ یشایدس ػبختبی ثضسي اػت و ی ؿجی ث آ سا ثشای دیشی ثؼبصد، دػتس لت ا سا داد .ظس اص آجش ػبس م هؼفی وچه

ؿت اػت.ایشای دس خلف ای ذع شذ "سػبجغ لشثبی "ثیوبیی بیـب صیجبیی ث ب 3 Unit Test 4 Bug 5 TestCase

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

تشی ضایبی س اجشا ؿذ. یىی اص ث كست ذا پغ اص ش تغییشی دثب ثبصآساییبی ثبیؼتی ی فشایذ آی آص

تىشاسپزیشی آ اػت پغ اش آ سا یىجبس پغ اص اجب تغییشات اجشا ویذ اص ضیت اكی آ ثش ،آص خدوبس

ایذ.جشد

بازآراییهسایای

فشػت صیش ضایبی ثبصآسایی وذ سا احلب وشد اػت9

ثخـذ.شاحی سا ثجد ی ثبصآسایی .0

ثبصآساییویفیت شاحی یه ثشب ثب افضد ؿذ اىببت جذیذ اػب تغییشات یـ س ث اف اػت

تالؿی اػت دس جت ثبسشداذ تفىش شاحی ث ثشب

وذ.تش یسا لبث ف ثشب ثبصآسایی .1

یؼبی و دس آیذ یض یؼتذ. ثى ثشبوذب وذب تب اػتفبد ،وذب سا اجشا یبیی و ثشبوبپیتش

یچ ؿذ ثبیذ ذ ظش لشاس یشذ.وذ وذ حؼة یاػتفبدیض ، ثفذآ سا ثبیذ سی وذ وبس وذ

ث خبش ذاسد. زا خد یؼذ یض ثؼذ اص ذتی ،و ذتی اص ؿت آ زؿت اػت سا یؼی جضئیبت وذیثشب

وتبی جضئیبت یؼی پغ اص صب خلك ایى یچ ثشب خاذ ثد وذوذب دػت اػتفبداص ای

تب وذ اص ؿى یه ؼبی غیشلبث ف ث وذ وه ی ثبصآسایی .سا ث خبش ذاسد ،اػتو ؿتای سا ثشب

دس آیذ.اؽ ثش ؿیا ثشای تكیف ذف یؼذكست یه

وذ.وـف خبب وه ی ث ثبصآسایی .2

یب ب 0افضاسای آص ایؼتبی شاص آ س و ؼتض ف وب وذ جد اػت، ثبصآساییخد فشایذ

آیذ.ث ؿبس ی 1ثبصثیی وذ

ؿد، ذف یؼذ وذ سا حذ ى ث ؿى ؿفبفی دس وذ ثیب ؿد ای جت ی ثبصآساییاص شف دیش

یغ ث سؿی افتذ و ذف ثشبجبیی اتفبق ی توذ. خبب ثؼیبسی اص البیبفت خبب وه یؼئ ث

وذ.بی ختف وذ سا ایجبد یصی اػتفبد بثجب یب تمی اؿتجب اص ثخؾ ،اثبای ثیب ـذ اػت

پب یذ وذ تیض وذی اػت و . ا یاػتدلیمب ح ف ثیب ؿذ ػتشح اص وذ تیض شتكیف ثیبس اػت

ؿذ سا ثشای خبب ػخت وذ.

1 Software Static Test 2 Code Review

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

وذ.تش ییؼی سا ػشیغثشب ثبصآسایی .3

وذ. ؿبیذ تػؼ وذ وثیف دس تش ی، تػؼ ثشب سا ػشیغثبصآساییؿبیذ دس اثتب وی ػجیت ث ظش ثشػذ ی

ب ،وذی و ث شص وثیفی تػؼ پیذا وشدتغییش تش ث ظش ثشػذ ی اش دس ثبص صبی الی ث اثتذا ػشیغ

تاؼت ثؼیبس ثیـتش اص صبی اػت و ی ،صبی ث دی وثیف ثد وذ ث صب تػؼ افضد ؿذ اػت ،وی

ث شس ثشای تیض ذاؿت وذ كشف ؿد.

یـ ؼجت تمشیجب خی خد سا ثب حج وذ تغییشات اػب ثبصآساییب سد یبص ثشای تا فت و صصیشا ی

وذ.وذ ی صب سد یبص ثشای تغییش وذ وثیف ث كست بیی افضایؾ پیذا یؿذ ثش سی آ حفظ ی

تش اص ضیتش ش، ػشیغتاس آػب ؿفبف ؿذ تیض ثب شاحی دسػتثبصآساییاص ای س تغییش یه وذ

ؿذ اػت.تغییش دس یه وذ وثیف ثب شاحی ح

بازآراییجدیدی برای کال

یؼی ثخـی اص خد تبیض لبی ؿذ. 0شیتػؼ مؾ ثبصآسایییؼب ثی مؾ دذ و ثشبوت ثه پیـبد ی

لت خد سا تب ث افضد اىببت جذیذ ؿت سد آص ث آ اىببت اختلبف دذ دس ثخؾ دیشی اص لت

ثش ػش ثبصآساییشی یب ای ف سا ثب زاؿت ذا وال تػؼ ثپشداصذ. وذبی ؿت ؿذ جد ثبصآساییخد تب ث

وذ.تكیف ی

ؿؾ وال ثشای تفىشپضؿه، ساـبع یؼذ وتبة ؼشف ا ث ب اداسد دث دس الغ اص وبسبی ای ف

آب ث یه ؼئ ب تا اص دسیچ ختفی ؼتذ و ی بیظشببی ا ظس اص وال دس ؿتاخز ؿذ اػت.

ث كست ،تؼیی ؿذبی ری اص پیؾتا ثب وتشی تبثیش چبسچةوذ دس حی ح ؼئ ثای ف وه ی وشد.

تش بی ختف تفىش سای اػت ثشای وبی ختف سد مبدی لشاس داد. دس الغ والیه ؼئ سا اص ججخاللب

داسد. خالقیبص ث تفىش ثشای اج ثب یه لؼیت بآؿب و تؼیی ؿذ بی ری اص پیؾوشد تبثیش فی چبسچة

بی شثى ث تبویذ ثش جذاػبصی جج شیدس مبث وال تػؼ ثبصآساییدس هع حبهش كحجت اص وال جذیذ ثشای

شی چبسچة ری سی تظی د و ث اجب یؼی ب تػؼ یؼی اػت.اص فشایذ ؼ ثشب ثبصآسایی

.ذف اجب دذ اػت شاحی ثشبو ویفیت ثبصآساییض وشد دس لت دسػت اىب جذیذ تشو

1 Add features

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

ذ ظش ثبصآساییای ؼئ ث ای ؼی یؼت و دس ب افضد اىببت جذیذ ثبیذ اص اك حبو ثش ویفیت وذ و دس

بی خب دس بیی اص خـتاػت غبف ؿذ، ثى ثیـتش تبویذ ثش ای ىت اػت و بی اص البت خلك صبی و ـب

اص ظش وبسثش ثبصآساییثذ دغذغ ایى وبس ثبصآساییشی سا ث وبسی زاؿت ثب وال وذ لبث ـبذ اػت، وال تػؼ

بی پخت پشداخت.بی خب ثب خـتذاسد ث تؼین خـتخشجی لبث ؼی ،یب ذیش

بی ختف تیج وبس بزاسد اص ظشیغ حی وبس خد ث كست ذا والبی ختفی سا ثش ػش ییه ثشب

دس صب حب ؿذ. اسصؿی و ثشبزاسی یب اص د ظش اسصؽث فت وت ثه اس ثشب وذ.خد سا اسصیبثی ی

ثشای ثجد ثبصآساییشی ثشای افضایؾ اسصؽ فؼی ثشب اػت وال داسد اسصؿی و ثشب ثشای آیذ داسد. وال تػؼ

اسصؽ آتی ثشب.

داذ و فشدا ثبیذ ثشب چ وبسئ اػت اب وبال ی ،یغ اس دس خلف وبسی و ثشب ثبیذ ثىذثشب

ثبصآسایی جذیذی سا ثش ػذ ثیشد. ی اش تب ث فىش تغییش اشص ثبؿذ، لؼ ثشای تغییشات فشدا دچبس ـى خاذ ؿذ.

سػذ، ثشای وه دس جت وبسبیی و فشدا ثبیذ اجب ؿد.اكالح تلیبت دسػت دیشص اػت و اشص اؿتجب ث ظش ی

ثشای اسصیبثی اسصؽ آتی ثشب اػت. ثبصآساییؽ فؼی وال شی ثشای اسصیبثی اسصی تػؼوال

ای خامخشت

افضاسی دس بی شبی خب یبص ث تجشث داؾ داسد. داؾ اص آ س و چی ـىالتی دس ثشبتـخیق دسػت خـت

ثش اػبع ، اػت ایجبد وذاذ دالی ـىالت حتی و ىآسی تحی ؿذبثغ ختف ث ؿى ذی جغ

اذ.تجیی ؿذ اك لاػذ ـخق

تجشث اص آ س مؾ ویذی داسد و چی تلیبتی ث تبی تلیبت شاحی ثؼیبس ،بی خبثشای تـخیق خـت

ی دس یؼی دسػت یب غي ثد یه شاح اػت و شاحی دس آ شح ؿذ اػت. 0ایاثؼت ث فوبی ؼئ صی

ح آ اسای ؿذ اػت استجبى داسد احىب وی ثشای ای و شاحی ثشای سا فوبی ؼئ ثؼیبسی اص الغ ث صی

دسػتی یب بدسػتی یه لؼ وذ اوثش البت جد ذاسد.

1 Context

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

اكی یه خـت ثش بی خب اػت. ثشخی اص البت فؼف ؼئ دیش استجبى ثی اك حبو ثش ؿبػبیی خـت

دس تجبی ب دس توبد اػت. ث ػا بی خب ؿبػبیی خـتؿد، ثب ثشخی دیش اص اك اػبع آ خب اسصیبثی ی

پزیشی وذ ثشخی اص البت وبس پؼذیذ بی وبسی بپؼذ تمی ؿذ اػت. ثبص ای صی ثب تالؽ ثشای اؼبف

وذا یه اص اك ثبیذ ثیـتش سد تج لشاس یشد. دس ش لؼیت، وذیفوبی ؼئ اػت و ـخق

1کد تکراری

ثؼیبسی اص تذب . ـىی و سیـ ثؼیبسی اص ـىالت دیش اػت.1افضاس داؼتاخجبئث دیبی شسا ؿبیذ ثتا اتىشاس

و 3بدس دادب 2ث ػا ثب ف ثجبسی اذ.افضاس ثشای اص ثی ثشد ای ـى اثذاع ؿذبی ذػی شسؽ

شایی ثب حسیت یب سیىشد ؿی تػؼ پیذا وشد اػت، ح ف افضدی یب تىشاس داد اػت. 4تػي ادبس وبد

ثشای فشاس اص تىشاس تػؼ پیذا وشد اػت. 5ثبصثىبسیشی

و اش ثتا سای ذاػت، ئ ثبؿیدس چذی جبی ختف تىشاس ؿذ اش دس ثشب ػبختبس یب سفتبسی ـبذ وشدیذ و

ثشای یىی وشد ای تىشاسب پیذا وشد، ویفیت ثشب ثتش خاذ ؿذ.

تاذ جیؼی ثبؿذ ی ثبس وذ و تىشاس تب دثبس یای سا ثیب یثشخی یؼذب ث ػا یه حؼبة ػشاـتی لبػذ

وبسیشی وشد. اص آجبیی و شاحی وبسی ؿذیذا اثؼت ث فوبی ؼئ ی ث حب جبیضیی تىشاس ثب ثبصثػ ثبیؼتی فىش

اػت ثتش اػت و یـ صی فوبی ؼئ ذ ظش لشاس یشد. ؿبیذ ثشای یه ؼئ حتی تح دثبس تىشاس یض

ثبس تىشاس ؿد.وذ ثیؾ اص ػ ای دیش ثتا پزیشفت و ثخـی اصمی جبؿذ ثشای ؼئ

ثشای ح چی ـىی وبفیؼت و ثب تذ یه والع اػت. یب چذ تشی ؿى تىشاس، تىشاسی ثخـی اص وذ دس دػبد

دیش تىشاس، تىشاس ثخـی اص وذ دس د ، وذ تىشاسی دس لبت یه تذ جذیذ د یب چذ ثبس فشاخای ویذ.اػتخشاج تذ

ث والع ثبالوـیذ ػپغ اػتخشاج تذ فشصذی دس یه ػح لشاس داسذ.-والع اػت و دس یه ػؼ شاتت پذس

تاذ ضی بػجی ثبؿذ.پذس ی

1 Duplicate Codes 2 “Duplication may be the root of all evil in software” Robert Cecil Martin 3 Normal Form 4 Database 5 Edgar Frank Codd 6 Reusability

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

تاذ شح بی صیش یفشصذی ؿشیه جبؿذ، ضی -دس كستی و د والػی و تذبی تىشاسی داسد دس ساث پذس

ثبؿذ9

جذیذ اص تذب وذبی تىشاسی فشاخای دس ش د والع اػتخشاج والع

وذ ـتشن تػي والع دیشؿب بی فشاخای یىی اص والع

د والع ؿذ اػت ایجبد پذس ـتشن ثشای د ثبصثیی جذد جج ـتشوی و جت ایجبد وذتىشاسی دس

یبصوالع دس كست

1هتد طالی

ای و ث خثی دس وبس لشاس اجضای وچه جؼ ػبد یـ ة ثد اػت.، 1اك وچه صیجبػت افضاسشدس

ای و وبسبی تع صیبدی سا ثش ػذ داسذ، تشجیح داسذ.اذ یـ ؼجت ث اجضای ثضسی پیچیذشفت

-پؿی و وشدبی ذس ػشثبس بؿی اص تای فشاخای تذبی ختف ث حذ لبث چـدس حب حبهش تمشیجب صثب

وذ، ذاسد.دیش سا فشاخای یاذ. اص ای س یه تذ ثذ اص دیذب اجشا یچ ضیتی ؼجت ث چذی تذ وتب و

بی وتب اػ وتب اػت. ؿىؼت یه تذ ثذ ث تذبی ثذ اص ای س خابیی وذ تب ؼیبس مبیؼ ثی تذ

ب دس الغ سضـبیی اص ؼبی ف ػبختبس ذف تذ تجذی آ ث یه ت خاب اص زاسی دلیك خة ثشای آ

ذی سد یبص ثشای اجشای ثشب اػت.اجضایی ظیف

ثبؿذ و خاذ ثذ یبص ث ب اتخبة ؿذبی بػت ثشای آاػو ثبیذ تذبی ث حتی وتب ثبؿذ تا فتی

شچیضی و الص اػت ساجغ ث آ ثذاذ سا تج ؿد. 2خاذ ثذ تذ ثب خاذ اوبی آ

ؿد و دس خال وذ ؿت ؿذ 3تاذ جبیضی تهیحبتیتش حتی یثشخی اص البت ؿىؼت تذ ث تذبی وچه

وبفیؼت ثخـی اص وذ و یبص ث تهیح داسد دس لبت یه تذ وچه ثب بی ثب ؼب و تكیف دسػتی اص وبس تذ اػت.

دذ، جبیضی ؿد. اسای ی

1 Long Method 2 Small is beautiful 3 Method Signature( بی تؼشیف تذ اػت ، ع داد ثبصـتی ثشخی دیش اص پیىشثذیپبساتشبی سدیظس خي ا تؼشیف تذ ؿب ب، اػال ) 4 Comments

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

تشی حتی اثبیی ذاؿت ثبؿیذ و تذی سا اػتخشاج ویذ ب فل آ اص وذی و دس دس ثذ آ جد داسد، ثیؾ

اكی ؼبیی اػت و ب تذ ثشای تكیف ذف آ تذ دس خد داسد، كشف وتبی وذ. داؿت ثبؿذ. ؼئ

تش اػتفبد اص اػبی تا ثب ؿىؼت وذ ث اجضای وچهخثی ثشای جبیی اػت و ی جد تهیحبت دس ثشب ـب

و وبسی .وذی ذف یؼذ خابیی وذ سا پش یوذ سا تیضتش وشد. دس الغ تهیحبت دس وذ فبك ؼبیی ث ؼبثب

دذ.ث شص ثتشی اجب ی ،اذؿذؿت اهحتذبی وتبی و ثشای اجب ظبیف وچه ی

لبػذ ػش اـتی جد داسد و ثبیؼتی تالؽ وشد ثذ ش تذ ثیـتش اص چذ خي جبؿذ.

وبس سا ثبیذ آ وبس سا دسػت اجب دذ ثبیذ تب ب اس یه وبس اجب دذث یبد داؿت ثبؿیذ و تذب ثبیذ

اجب دذ.

بسرگکالس

ؿذ. افضاستش بی وچهب جبیی و دس خلف تذبی الی فت ؿذ، ثبیؼتی ث والعبی ثضسي ثب والع

سذ.صیبدی دا 0ایبی دادبی تغیشؼال چی والع

بیی بی ظش سد ثشسػی لشاسیشذ، ثؼیذ یؼت و استجبى ؼبیی ثی دػتبی چی والعتش ث تغیشاش وی دلیك

ای سا دس لبت یه والع جذیذ ػبصب داد. دس دذ آ اػت و ؿبیذ ثتا ش دػتب جد داؿت ثبؿذ و ـباص آ

بی وچىی اص بی والع ثضسي ثی والعبی جذیذ، تذای دس والعبی دادای كست ث تجغ جبیبیی تغیش

اذ لبث تمؼی ؼتذ.ؿىؼت آ ایجبد ؿذ

وذ ب وبس یای آبی ثضسي ث جبیی صی ثذی ثشای تىشاس وشد وذ ؼتذ. صیشا وذبیی و ثب تغیشبی دادوالع

صیبدی ذاسذ. 1اذ اىب ثبصثىبسیشیؿذوالع ثضسي پخؾبی ختف و دس تذ ث دی آ

-آیذ و ظبیف صیبد تػی سا ثش ػذ یدس ی 2بی لبدسكبی ثضسي ث ؿى والعوالع ثشخی اص البت

شایی اػت و ثبیذ اص آ اجتبة وشد.ؼشف دس حص ؿی 3بیبی لبدس ك اص پبدایشذ. والع

1 Instance Variable(Fields) 2 Reusability 3 Omni potent Classes 4 Anti-Pattern

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

س ث یبد داؿت ثبؿیذ ش چیضی و دس یه داخ والع )اف( اػت ثبیذ ث فی و والع )اف( ح آ تؼشیف ا

ؿذ ، سثي ؼتمی داؿت ثبؿذ ش چیضی و دس فوبی ح ؼئ ث ای ف سثي ؼتمی داسد، ثبیؼتی دس والع

)اف( ثبؿذ.

1افرست بلد پاراهتر

یؼی سیـ ـىالت صیبدی ثدذ، بی ثشبتش صثببی لذییو دس ؼ 1تغیشبی ػشاػشیشا بی ؿیصثب

ب دس لبت اؿیب اىب خثی ثشای اسػب داد ثشای فشاخای تذب ثذی داداىب ثؼت ثب وذ . دس ػمپـتیجبی ی

. اذایجبد وشد

اذ جبیضی ؿد.وشد ثذیب سا ث خثی ثؼتتاذ ثب اؿیبیی و آ دادتذ یفشػت ثذ پبساتشبی سد یبص یه

داسذ و خشجی یه بػت. ثشخی اص ثشب یؼب ػبدت ب اجتبة اص فشاخای تدستی تذؼئ دیش دس فشاخای تذ

شاخای ث ػا اسب یه تذ دیش اسػب زاسی وذ ث حن ف تذ سا ثذ آى ث ػا یه تغیش ـخق ب

وذ.

ث ثب صیش تج ویذ. تذ حبػج حمق، تذ حبػج ػبػبت وبسی سا ث ث ؿى تدست فشاخای وشد اػت.

تا وذ ثؼیبس خابتشی ؿت9ی اػتخشاج تغیشثب اػتفبد اص اىب

1 Long Parameter List 2 Global Variables

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

1تغییر اگرا

ثال ى اػت دس ثبصثیی ؿیذ و ث دالیی تع ى اػت و تغییش وذ.بیی اج یوالعثشخی اص البت دس ثب

ثبیذ ای ػ تذ سا تغییش د اش ح ،ػبصی جذیذ اػتفبد ویه والع ث خد ثییذ و اش لشاس ثبؿذ ع رخیش

بیؾ تغییش و ای د تذ ای والع ثبیذ تغییش وذ. دالیی و ثشای تغییش ای والع جد داسد، استجبى ضدیىی ثب

ؿىؼت ؿد. 1تشیىذیش ذاسذ ای ؿبیذ ث ای ؼی ثبؿذ و ثبیؼتی ای والع ث د والع ؼج

ث تغییش داؿت ثبؿذ، ثؼیبس ث ؿجی ثبؿذ. دالیی و ى اػت یه والع یبصلبػذ وی ثبیذ اس ث ػا یه

ضدیىی داسد ث ػجبست دیش من اك یىتبیی ظیف والع جش ساث 2ف ای خـت خب ثب اك یىتبیی ظیف

ؿد.ث ایجبد خـت خب تغییش اشا ی

4اساچوجراحی

ای لشاس شفت اػت، جشاح ثبیذ تؼذاد صیبدی لؼبت وچه ػبچ سا اص ثشای جشاحی وؼی و سد اكبثت تف ػبچ

،یغ ى اػت ثشای اػب یه تغییشاحی ختف ثذ ا خبسج وذ. ای دلیمب ؿجی وبسی اػت و یه ثشب

دذ.تغییشات وچىی دس جببی ختف وذ ث تؼذاد صیبد اجب

بی ختف وذ اػتفبد ؿذ اػت9اػتثبب دس ثخؾ 4سیذادبسیث ػا ثب تلس ویذ و لؼ وذ صیش ثشای

وبسثشی وبسثش جبسی یب صب لع خب سا ث خشجی و حب اش تلی ثیشیذ و اص ای پغ االػبت دیشی ظیش ب

ؿذ( تغییشات ی اجب یسبی صیبدی)ش جب و سیذادبثد و دس والع ذخایؿد اهبف بییذ، ججس چبح ی

وچىی سا تىشاس بییذ.

1Diverge Change

2 Coherent 3 Single Responsibility Principle(SRP) 4 Shotgun Surgery 5 Logging

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

دی ثشای تغییش یه والع احذ تع بی دس الغ ف مبث تغییش اشا اػت. دس تغییش اشا جشاحی ػبچخـت

سد تج لشاس بی ب ثشای یه دی احذ عب تغییشبی تؼذد دس والىؾ ؿذ اػت، دس جشاحی ػبچ

یه ثساث یهؿد، والػی و تغییش دس آ اجب یثی دالی تغییش یـ آ آ اػت و حبت ایذ اػت.شفت

جد داؿت ثبؿذ.

احذ اػت و بی ختف ثب یه والع یب تذسا ح ثششف وشد ای خـت خب، جبیضیی وذتىشاسی دس والع

ثب تبویذ ثش ح ای ـى اثذاع ؿذ اػت. دس ای 0شایؼی جججببی ختف فشاخای ؿذ اػت. سیىشد ثشب

ؿذ.كستی سؿذ ذیشیت یث ،اذافضاس پشاوذ ؿذافضاس و دس و شبیی تىشاسی اص شسیىشد جج

2دیگراىچشن داشتي ب اهکاات

سػذ و یه ب داؿت ثبؿذ، ث ظش یش ثخـی اص یه والع ثشای اجب وبسبی خد یبص ث االػبتی اص دیش والعا

دس ظش ثیشیذEmployee 9ایشاد داسد. تذ صیش سا دس والػی دس غیش اص والع جبی وبس

ػبتی و دس والع وبسذ اػت، احتیبج داسد.ای تذ ظیف حبػج حمق یه وبسذ سا داسد دس دس ثذ خد ث اال

اوثش البت ای خـت خب ث كست چـ داؿت ث داد دیش چی تذی م جبیذ جبیی جض خد والع وبسذ ثبؿذ.

ث دیشی داسد، ثبیذ ضدیه بی صیبدی اص والعث دادثشای اجب ظیف خد یبصذ و ؿد. تذی ب دیذ یوالع

ب ثبؿذ.ب دس والع شثى ث آب داد

ب داسد.دس ای كست چی ثخـی ثبیذ دس اثتذا ث بیی اص یه تذ اػت و چـ ث دیش والعبی اص البت ثخؾ

كست یه تذ جذیذ اػتخشاج ؿد ػپغ ث والػی و ث آ استجبى ثیـتشی داسد، تم ؿد.

وذ ای د ثبیذ دس وبس یىذیش ثب دس وبس دیش دس یىجب ثد داد سفتبس ؼب پیذا ی شایی ف ؿیدس ؿی

تغییش وذ. دس كستی و تغییش سفتبس دس جبیی غیش اص تغییش داد شثى ث آ اتفبق ثیفتذ، ثبیؼتی سفتبس ث جبیی ضدیه ث

استجبى ؼبیی ضدیىی داسد. اشا یشیخـت خب ثب خـت تغای داد تم ؿد.

1 Aspect Oriented Programming 2 Feature Envy

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

1داد ایخش

ب تبی ث تا فت داداص ای س اػت و ی ؿذ. جغ دس وبس ظبش یبی دس یه ثشب ؼال داد

وبس ب وذی و ثخـی اص داد بی سدی یه تذ یب لؼآسب بیی شتجي ثب خد داسذ.ثؼت دس وبس دادخؿ

بیی اص داد اػت.، ـب دذ خؿوذبیی و یـ ضب تغییش ی یب داد وذیىذیش تغییش ی

بی تؼذد یه تذ دی ؿذ. اػتخشاج والع، جبیضیی اسببی جذیذ ػبببیی ثبیذ دس لبت والعچی خؿ

بی داد اػت.شیت خؿیذبیی ثشای ب ساثب یه والع حتی ب داد

اػت.بی داد خب خؿای خبف اص ای خـت بیی اص خـت خب فشػت ثذ پبساتشب حبت

بی خب ث جغ ؿبس یه شاجؼ بییذ.ثشای بؼ ثیـتش دس خلف خـت

1 Data Clumps

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

ای هربط ب خاایی کدتصی

اػبی ثب ؼب

اػت. دس ای دیب صثب استجبى اص 0ب، ػط بی ری تجشیذب، ذدیبی وبسوشد ثب فبیافضاس، دیبی ش

یؼی بی ثشبافضاس چ صثبای ثشخداسذ. چ صثب استجبى یب ذػب وبسثشا شاؼبدایت فق

وذ. ی افضاسب سا اجشابیی و شسػی ثشای استجبى ثب بؿی

داسا جی ابت ث ػا بدػت یب ؿبػشا ث اطافضاس بذ تشجب چیششاص ای سػت و ذػب

زاسی ثشلشاسی استجبى دس لبت ب ثشای اػاسصؿذ ؼب احتشا ثزاسذ دس ث وبس ثشد اتخبة آ

صیبدی ـب دذ.ػاع دلت ،ؼتذات

زاسذ، خابیی وذ سا ثؼیبس ػتفبد اص اػبی و دس سا سا ثشای ػءتؼجیش، اثب، خي ؼب یب اؿتشان ؼب ثبص یا

وذ یـ تكی ؿذ وذ. اػبی ثذ و ث ؿى دلیك، وب یىتبیی ؼی خد سا تكیف یو ی

جبد ؼی وب ظس خد دس آ لشف وذ.یغ اص ب جبیذ ثشباػت. الی ؿذ اػ یچ

اػتفبد اص اوالد

بی یه خی اختیبسی اػت، اس ػبدت ویذ و ثشای چی ش چذ و دس جبا اػتفبد اص اوالد ثشای ثالن

وذ ؿب تشی اصاهح 1زاسیوذ و دذاوه ی IDEدػتساتی یض اص اوالد اػتفبد ویذ. چی وبسی ث

تب ثشب ؿب سا 2سا فؼب ویذ IDEشثى ث Reformatاجب دذ. اس پغ اص چذ خي وذ ؿت ضی

شتت بیذ.

تشجیح ثیب تلشیح ث ؼبی هی

یؼی ثبیذ ذ ظش لشاس یشد. ثال اػتفبد اص مذاس پیـفشم بی اجب ؿذ دس ثشباس ثیب كشیح فشم

ثال شچذ و ش ثشب یؼی جبایی بی ثذ مذاسدی ای جت اثب خاذب وشد خاذ ؿذ.تغیش

یشد، ی تلشیف مذاس كفش ثشای ای تغیش یذاذ و تغیش ػذدی و مذاسدی ای ـذ ثبؿذ مذاس كفش ی

تشجیح داسد.

1 Abstraction 2 Indenting

اػتفبد ویذ. Ctrl+Shift+Fاص Eclipse ثشای Alt+Ctrl+Lاص ویذ یبجش InteliJ IDEAثشای 2

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

ای ب، مذاس ای تغیشبی دادثشای دا یب مبدیش ؼتجش ثشای تغیشبیی یؼب فشمثؼیبسی اص البت ثشب

بیی اص ب سا ثذیی فشم وشد اذ. وذ تیض وذی اػت و اص چی فشموذ و آب ی تشتیت فشاخای تذ

ثبؿذ. دذ، حبفظت ؿذشیك اىببتی و صثب ثشب یؼی دس اختیبس لشاس ی

0بؿشدیب دس ثذی دسػت ااع حبتثؼت

بی خد سا دس لبت تهیحبت خال وذ ثیؼیذ بی ثبثت ثشب ث جبی ایى فشمف ااع حبتدس خل

ػبصی ویذ. جبا اىببت بی ذبی ختف سا دس لبت ؿشدیبی ثش سی ااع وچه حبتثذیدػت

بی ؿذ ك شثى ث حبتدذ و اص پخؾبی دس اختیبس لشاس یجبی اص ؿشدیثؼیبس خثی ثشای پـتی

وذ.ختف دس جببی ختف ثشب ؿت وذ تىشاسی جیشی ی

کد تویس

بفی. آ. یؼی وبسوشد وذ الص ثشای وذ تیض اػت ؿشى ووذ ثب وذ ایذوذ تیض دس الغ فبك وذی اػت و وبس ی

، لبث لج یؼت. ویفیت وذ ؿب ثؼیبس اص 1وذ چشا ثبیذ آ سا تغییش داص ای س ای اػتذال و لتی ای وذ وبس ی

بی وبس وشد وشد ثذیی فشم ؿذ اػت.بیی اػت و دس تبی آیظی

"ذوتؼیش یاػت سا خشاة ـذچیضی و "تا فت و ث ؼشف ذػی یافضاس چذا ، دس ذػی ش2

بی ذػی تش اص دیش سؿتافضاس پیچیذتش آ اػت و ثیی تؼشیف خشاثی دس ذػی ش)ش چذ دلیك وبسثشد ذاسد.

فشاتش اص ؼئ وبس ىشد اػت.(

یغ اػت. ثب ثشب وذ ثب وبسثش تـخیق وذ تیضتـخیق وذ ثذ خب ثب وبپبیش، تـخیق وذی و وبس ی

1 Enumeration

افضاسی ث تیج ؿد. اص دیذ ثشب یؼب تجشثی خد ؿت ؿذ ثشب ذف اػت ثب اجب آ یه پشط شیؼب تجشثی شح یای اػتذال ثیـتش تػي ثشب 1 یؼی اػت.افضاس ث بست ثشبسػیذ اػت. ای سیىشد دس الغ فشوبػت داؾ شثى ث ذػی ش

3 If it ain't broke, don't fix it

ب زباى جااسازی پیشرفت درس براه هدی عیعلی

by: einali{at}[ ce.sharif.edu | gmail.com]

“I'm not a great programmer; I'm just a good programmer with great habits.”

Kent Beck

هابع

1. Refactoring: Improving the Design of Existing Code, Martin Fowler , Kent

Beck and others, Addison-Wesley Professional,1999

2. Clean code,A handbook of agile software craftmanship, Robert C

Martin,2008, Prentice Hall

3. The Essence of Object Oriented Programming with Java and UML, Antonio

Maña Gómez, University of Malaga,

http://www.lcc.uma.es/~amg/ISE/OOP-Java-UML/Chapter8.html