Transcript Добър и лош код
Copyright © 2012 DAVID Holding Company
Добър и лош код.
Преработка и оптимизиране.
Source Control.
Валери Дачев
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/ VisualSVN http://www.visualsvn.com/ TortoiseSVN: http://tortoisesvn.net/ Copyright © 2012 DAVID Holding Company