Добър и лош код

Download Report

Transcript Добър и лош код

Copyright © 2012 DAVID Holding Company

Добър и лош код.

Преработка и оптимизиране.

Source Control.

Валери Дачев

[email protected]

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