Курс по програмиране за напреднали (2012) - 9. Добър и лош...
TRANSCRIPT
![Page 1: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/1.jpg)
Copyright © 2012 DAVID Holding Company
Добър и лош код.Преработка и оптимизиране.
Source Control.
Валери Дачев[email protected]
![Page 2: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/2.jpg)
Copyright © 2012 DAVID Holding Company
Agenda
• Добър и лош код• Конвенции• Документиране
• Преработка и оптимизиране• Преработка (refactoring)• Оптимизиране (optimization)• Примери и инструменти
• Source Control• Терминология• Базови операции• Разклоняване• Популярни системи• Примери и инструменти
![Page 3: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/3.jpg)
Copyright © 2012 DAVID Holding Company
Добър и лош код
• За лош код няма определение. Той намирисва.• Не всеки код, който работи, е добър код.
![Page 4: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/4.jpg)
Copyright © 2012 DAVID Holding Company
Добър и лош код – лош мирис
• Дублиращ се код• Дълги методи• Дълги класове (“Божествения обект”)• Твърде много параметри• “Feature envy”• “Inappropriate intimacy”• “Refused bequest”• Мързелив клас• “Изобретена сложност”• Твърде дълги/къси идентификатори• Твърде много литерали• “Ubercallback”
![Page 5: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/5.jpg)
Copyright © 2012 DAVID Holding Company
Добър и лош код – конвенции
• Видове именуване• Lower case (напр. “current_index”);• Upper case (напр. “CURRENT_INDEX”);• Camel case (напр. “currentIndex”);• Pascal case (напр. “CurrentIndex”).
• Нотация• Унгарска нотация (напр. “dwLightYears”, “szTime”,
“hwndFoo”, “lpszBar”) – префиксиране на идентификатори с типа или начина на използване;
• Позиционна нотация – използва се за съкращаване на идентификатори до 8 символа.
![Page 6: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/6.jpg)
Copyright © 2012 DAVID Holding Company
Добър и лош код – конвенции
• Разработени от Microsoft конвенцииhttp://bit.ly/TMbRyq
• Главни и малки букви в имената• Конфликтни имена на идентификатори• Именуване на типове данни
• Използване на често използвани типове• Именуване на членове на типове
• Методи• Свойства• Събития• Полета (и нашето несъгласие с тях)• Параметри• Ресурси
![Page 7: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/7.jpg)
Copyright © 2012 DAVID Holding Company
Добър и лош код – документиране
• Коментари към функционалните части на кода• Коментари към нефункционалните части на кода• Допълнително описание на работата на кода
![Page 8: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/8.jpg)
Copyright © 2012 DAVID Holding Company
Refactoring – характеристики
• Що е “refactoring”?• Преструктуриране на кода със заместване на
вътрешната структура без промяна на външното му поведение.
• Променя нефункционални атрибути на кода.• Не променя съответствието с функционалните
изисквания.• Какво постига?
• Подобрена четимост.• Редуцирана сложност.• Улеснена поддръжка.• Подобрена архитектура.• Разширяемост.
![Page 9: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/9.jpg)
Copyright © 2012 DAVID Holding Company
Refactoring – примери и инструменти
• Примери• Преименуване на идентификатори• Извеждане на код под формата на методи• Изнасяне на параметри като клас• Изнасяне на методи и свойства в базов клас• Изнасяне на методи и свойства в абстрактен клас• Извеждане на методи и свойства в интерфейс• Превръщане на метод в свойство и обратно
• Инструменти• CodeRush Xpress• Telerik JustCode• JetBrains ReSharper
![Page 10: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/10.jpg)
Copyright © 2012 DAVID Holding Company
Optimization – характеристики
• Що е “optimization”?• Модифициране на софтуерна система за постигане
на по-голяма ефективност и/или редуциране на ресурси.
• “Bottle-necks”• “Trade-offs”
• Нива на оптимизация• Ниво “дизайн”• Ниво “изходен код”• Ниво “компилатор”• Ниво “асемблер”• Ниво “изпълнение”
![Page 11: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/11.jpg)
Copyright © 2012 DAVID Holding Company
Optimization – примери
• С грижа за паметта• Опознаване на работата на garbage collector• Правилно деклариране на променливи, методи и
класове• С грижа за процесорното време
• Промяна на алгоритми• С грижа към външните ресурси
• Освобождаване на ресурси• Използване на pools
• С грижа за консумацията на енергия• Идентифициране на консуматорите и редуциране
на използването им
![Page 12: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/12.jpg)
Copyright © 2012 DAVID Holding Company
Optimization – инструменти
• Telerik JustTrace• JetBrains dotTrace
![Page 13: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/13.jpg)
Copyright © 2012 DAVID Holding Company
Source Control – терминология
• Repository (depot)• Revision (version)• Working copy (sandbox)• Change (diff, delta)• Change list (change set)• Conflict• Resolution• Shelves (in TFS)
![Page 14: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/14.jpg)
Copyright © 2012 DAVID Holding Company
Source Control – базови операции
• Checkout• Update• Commit (checkin)• Import• Export
![Page 15: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/15.jpg)
Copyright © 2012 DAVID Holding Company
Source Control – разклоняване
• Trunk• Клониране (branching, forking)• Сливане (merging, integration)• Етикетиране (tagging, labeling)
![Page 16: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/16.jpg)
Copyright © 2012 DAVID Holding Company
Source Control – популярни системи
• Популярни системи за контрол на кода• VSS (Visual SourceSafe)• CVS (Concurrent Versions System)• SVN (Subversion)• TFS (Team Foundation Server)
![Page 17: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/17.jpg)
Copyright © 2012 DAVID Holding Company
Source Control – примери
ДЕМО: Subversion
![Page 18: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control](https://reader030.vdocuments.mx/reader030/viewer/2022032617/55aab5691a28ab74218b45d9/html5/thumbnails/18.jpg)
Copyright © 2012 DAVID Holding Company
Ценни връзки
• Класики в жанра:http://bit.ly/vl7ixF
• Coding Horror:http://www.codinghorror.com/blog/
• The Daily WTF:http://thedailywtf.com/
• VisualSVNhttp://www.visualsvn.com/
• TortoiseSVN:http://tortoisesvn.net/