Курс по програмиране за напреднали (2012) - 9. Добър и лош...

18
Copyright © 2012 DAVID Holding Company Добър и лош код. Преработка и оптимизиране. Source Control. Валери Дачев [email protected]

Upload: david-academy

Post on 19-Jul-2015

76 views

Category:

Education


5 download

TRANSCRIPT

Page 1: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Добър и лош код.Преработка и оптимизиране.

Source Control.

Валери Дачев[email protected]

Page 2: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Agenda

• Добър и лош код• Конвенции• Документиране

• Преработка и оптимизиране• Преработка (refactoring)• Оптимизиране (optimization)• Примери и инструменти

• Source Control• Терминология• Базови операции• Разклоняване• Популярни системи• Примери и инструменти

Page 3: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

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

• За лош код няма определение. Той намирисва.• Не всеки код, който работи, е добър код.

Page 4: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Добър и лош код – лош мирис

• Дублиращ се код• Дълги методи• Дълги класове (“Божествения обект”)• Твърде много параметри• “Feature envy”• “Inappropriate intimacy”• “Refused bequest”• Мързелив клас• “Изобретена сложност”• Твърде дълги/къси идентификатори• Твърде много литерали• “Ubercallback”

Page 5: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

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

Copyright © 2012 DAVID Holding Company

Добър и лош код – конвенции

• Разработени от Microsoft конвенцииhttp://bit.ly/TMbRyq

• Главни и малки букви в имената• Конфликтни имена на идентификатори• Именуване на типове данни

• Използване на често използвани типове• Именуване на членове на типове

• Методи• Свойства• Събития• Полета (и нашето несъгласие с тях)• Параметри• Ресурси

Page 7: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Добър и лош код – документиране

• Коментари към функционалните части на кода• Коментари към нефункционалните части на кода• Допълнително описание на работата на кода

Page 8: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Refactoring – характеристики

• Що е “refactoring”?• Преструктуриране на кода със заместване на

вътрешната структура без промяна на външното му поведение.

• Променя нефункционални атрибути на кода.• Не променя съответствието с функционалните

изисквания.• Какво постига?

• Подобрена четимост.• Редуцирана сложност.• Улеснена поддръжка.• Подобрена архитектура.• Разширяемост.

Page 9: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Refactoring – примери и инструменти

• Примери• Преименуване на идентификатори• Извеждане на код под формата на методи• Изнасяне на параметри като клас• Изнасяне на методи и свойства в базов клас• Изнасяне на методи и свойства в абстрактен клас• Извеждане на методи и свойства в интерфейс• Превръщане на метод в свойство и обратно

• Инструменти• CodeRush Xpress• Telerik JustCode• JetBrains ReSharper

Page 10: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Optimization – характеристики

• Що е “optimization”?• Модифициране на софтуерна система за постигане

на по-голяма ефективност и/или редуциране на ресурси.

• “Bottle-necks”• “Trade-offs”

• Нива на оптимизация• Ниво “дизайн”• Ниво “изходен код”• Ниво “компилатор”• Ниво “асемблер”• Ниво “изпълнение”

Page 11: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Optimization – примери

• С грижа за паметта• Опознаване на работата на garbage collector• Правилно деклариране на променливи, методи и

класове• С грижа за процесорното време

• Промяна на алгоритми• С грижа към външните ресурси

• Освобождаване на ресурси• Използване на pools

• С грижа за консумацията на енергия• Идентифициране на консуматорите и редуциране

на използването им

Page 12: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Optimization – инструменти

• Telerik JustTrace• JetBrains dotTrace

Page 13: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

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

Copyright © 2012 DAVID Holding Company

Source Control – базови операции

• Checkout• Update• Commit (checkin)• Import• Export

Page 15: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

Copyright © 2012 DAVID Holding Company

Source Control – разклоняване

• Trunk• Клониране (branching, forking)• Сливане (merging, integration)• Етикетиране (tagging, labeling)

Page 16: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

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

Copyright © 2012 DAVID Holding Company

Source Control – примери

ДЕМО: Subversion

Page 18: Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и оптимизане. Source control

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/