Курс по програмиране за напреднали (2012) - 9. Добър и лош...
TRANSCRIPT
Copyright © 2012 DAVID Holding Company
Добър и лош код.Преработка и оптимизиране.
Source Control.
Валери Дачев[email protected]
Copyright © 2012 DAVID Holding Company
Agenda
• Добър и лош код• Конвенции• Документиране
• Преработка и оптимизиране• Преработка (refactoring)• Оптимизиране (optimization)• Примери и инструменти
• Source Control• Терминология• Базови операции• Разклоняване• Популярни системи• Примери и инструменти
Copyright © 2012 DAVID Holding Company
Добър и лош код
• За лош код няма определение. Той намирисва.• Не всеки код, който работи, е добър код.
Copyright © 2012 DAVID Holding Company
Добър и лош код – лош мирис
• Дублиращ се код• Дълги методи• Дълги класове (“Божествения обект”)• Твърде много параметри• “Feature envy”• “Inappropriate intimacy”• “Refused bequest”• Мързелив клас• “Изобретена сложност”• Твърде дълги/къси идентификатори• Твърде много литерали• “Ubercallback”
Copyright © 2012 DAVID Holding Company
Добър и лош код – конвенции
• Видове именуване• Lower case (напр. “current_index”);• Upper case (напр. “CURRENT_INDEX”);• Camel case (напр. “currentIndex”);• Pascal case (напр. “CurrentIndex”).
• Нотация• Унгарска нотация (напр. “dwLightYears”, “szTime”,
“hwndFoo”, “lpszBar”) – префиксиране на идентификатори с типа или начина на използване;
• Позиционна нотация – използва се за съкращаване на идентификатори до 8 символа.
Copyright © 2012 DAVID Holding Company
Добър и лош код – конвенции
• Разработени от Microsoft конвенцииhttp://bit.ly/TMbRyq
• Главни и малки букви в имената• Конфликтни имена на идентификатори• Именуване на типове данни
• Използване на често използвани типове• Именуване на членове на типове
• Методи• Свойства• Събития• Полета (и нашето несъгласие с тях)• Параметри• Ресурси
Copyright © 2012 DAVID Holding Company
Добър и лош код – документиране
• Коментари към функционалните части на кода• Коментари към нефункционалните части на кода• Допълнително описание на работата на кода
Copyright © 2012 DAVID Holding Company
Refactoring – характеристики
• Що е “refactoring”?• Преструктуриране на кода със заместване на
вътрешната структура без промяна на външното му поведение.
• Променя нефункционални атрибути на кода.• Не променя съответствието с функционалните
изисквания.• Какво постига?
• Подобрена четимост.• Редуцирана сложност.• Улеснена поддръжка.• Подобрена архитектура.• Разширяемост.
Copyright © 2012 DAVID Holding Company
Refactoring – примери и инструменти
• Примери• Преименуване на идентификатори• Извеждане на код под формата на методи• Изнасяне на параметри като клас• Изнасяне на методи и свойства в базов клас• Изнасяне на методи и свойства в абстрактен клас• Извеждане на методи и свойства в интерфейс• Превръщане на метод в свойство и обратно
• Инструменти• CodeRush Xpress• Telerik JustCode• JetBrains ReSharper
Copyright © 2012 DAVID Holding Company
Optimization – характеристики
• Що е “optimization”?• Модифициране на софтуерна система за постигане
на по-голяма ефективност и/или редуциране на ресурси.
• “Bottle-necks”• “Trade-offs”
• Нива на оптимизация• Ниво “дизайн”• Ниво “изходен код”• Ниво “компилатор”• Ниво “асемблер”• Ниво “изпълнение”
Copyright © 2012 DAVID Holding Company
Optimization – примери
• С грижа за паметта• Опознаване на работата на garbage collector• Правилно деклариране на променливи, методи и
класове• С грижа за процесорното време
• Промяна на алгоритми• С грижа към външните ресурси
• Освобождаване на ресурси• Използване на pools
• С грижа за консумацията на енергия• Идентифициране на консуматорите и редуциране
на използването им
Copyright © 2012 DAVID Holding Company
Optimization – инструменти
• Telerik JustTrace• JetBrains dotTrace
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)
Copyright © 2012 DAVID Holding Company
Source Control – базови операции
• Checkout• Update• Commit (checkin)• Import• Export
Copyright © 2012 DAVID Holding Company
Source Control – разклоняване
• Trunk• Клониране (branching, forking)• Сливане (merging, integration)• Етикетиране (tagging, labeling)
Copyright © 2012 DAVID Holding Company
Source Control – популярни системи
• Популярни системи за контрол на кода• VSS (Visual SourceSafe)• CVS (Concurrent Versions System)• SVN (Subversion)• TFS (Team Foundation Server)
Copyright © 2012 DAVID Holding Company
Source Control – примери
ДЕМО: Subversion
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/