180 likes | 297 Views
Добър и лош код. Преработка и оптимизиране. Source Control. Валери Дачев valery@david.bg. Agenda. Добър и лош код Конвенции Документиране Преработка и оптимизиране Преработка (refactoring) Оптимизиране (optimization) Примери и инструменти Source Control Терминология
E N D
Добър и лош код. Преработка и оптимизиране. Source Control. Валери Дачев valery@david.bg
Agenda • Добър и лош код • Конвенции • Документиране • Преработка и оптимизиране • Преработка (refactoring) • Оптимизиране (optimization) • Примери и инструменти • Source Control • Терминология • Базови операции • Разклоняване • Популярни системи • Примери и инструменти
Добър и лош код • За лош код няма определение. Той намирисва. • Не всеки код, който работи, е добър код.
Добър и лош код – лош мирис • Дублиращ се код • Дълги методи • Дълги класове (“Божествения обект”) • Твърде много параметри • “Feature envy” • “Inappropriate intimacy” • “Refused bequest” • Мързелив клас • “Изобретена сложност” • Твърде дълги/къси идентификатори • Твърде много литерали • “Ubercallback”
Добър и лош код – конвенции • Видове именуване • Lower case (напр. “current_index”); • Upper case (напр. “CURRENT_INDEX”); • Camel case (напр. “currentIndex”); • Pascal case (напр. “CurrentIndex”). • Нотация • Унгарска нотация (напр. “dwLightYears”, “szTime”, “hwndFoo”, “lpszBar”) – префиксиране на идентификатори с типа или начина на използване; • Позиционна нотация – използва се за съкращаване на идентификатори до 8 символа.
Добър и лош код – конвенции • Разработени от Microsoft конвенцииhttp://bit.ly/TMbRyq • Главни и малки букви в имената • Конфликтни имена на идентификатори • Именуване на типове данни • Използване на често използвани типове • Именуване на членове на типове • Методи • Свойства • Събития • Полета (и нашето несъгласие с тях) • Параметри • Ресурси
Добър и лош код – документиране • Коментари към функционалните части на кода • Коментари към нефункционалните части на кода • Допълнително описание на работата на кода
Refactoring – характеристики • Що е “refactoring”? • Преструктуриране на кода със заместване на вътрешната структура без промяна на външното му поведение. • Променя нефункционални атрибути на кода. • Не променя съответствието с функционалните изисквания. • Какво постига? • Подобрена четимост. • Редуцирана сложност. • Улеснена поддръжка. • Подобрена архитектура. • Разширяемост.
Refactoring – примери и инструменти • Примери • Преименуване на идентификатори • Извеждане на код под формата на методи • Изнасяне на параметри като клас • Изнасяне на методи и свойства в базов клас • Изнасяне на методи и свойства в абстрактен клас • Извеждане на методи и свойства в интерфейс • Превръщане на метод в свойство и обратно • Инструменти • CodeRush Xpress • TelerikJustCode • JetBrainsReSharper
Optimization – характеристики • Що е “optimization”? • Модифициране на софтуерна система за постигане на по-голяма ефективност и/или редуциране на ресурси. • “Bottle-necks” • “Trade-offs” • Нива на оптимизация • Ниво “дизайн” • Ниво “изходен код” • Ниво “компилатор” • Ниво “асемблер” • Ниво “изпълнение”
Optimization – примери • С грижа за паметта • Опознаване на работата на garbage collector • Правилно деклариране на променливи, методи и класове • С грижа за процесорното време • Промяна на алгоритми • С грижа към външните ресурси • Освобождаване на ресурси • Използване на pools • С грижа за консумацията на енергия • Идентифициране на консуматорите и редуциране на използването им
Optimization – инструменти • TelerikJustTrace • JetBrainsdotTrace
Source Control – терминология • Repository (depot) • Revision (version) • Working copy (sandbox) • Change (diff, delta) • Change list (change set) • Conflict • Resolution • Shelves (in TFS)
Source Control – базови операции • Checkout • Update • Commit (checkin) • Import • Export
Source Control – разклоняване • Trunk • Клониране (branching, forking) • Сливане (merging, integration) • Етикетиране (tagging, labeling)
Source Control – популярни системи • Популярни системи за контрол на кода • VSS (Visual SourceSafe) • CVS (Concurrent Versions System) • SVN (Subversion) • TFS (Team Foundation Server)
Source Control – примери ДЕМО: Subversion
Ценни връзки • Класики в жанра: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/