КПК, Telerik Academy, 2013/2014
Team Labyrinth-7:
Задание: Рефакториране на конзолна игра и създаване на unit tests.
Задължително:
-
Използването на Git като хранилище за кода и използването на GitHub за хостване на проекта и като среда за сътрудничество между членовете на екипа.
-
Всеки член на екипа трябва да е допринесъл за проекта и да е изпращал код в хранилището поне в 3 различни дни. Признаваме, че тези изисквания изглеждат малко неестествени, но искаме да проследим как екипът си сътрудничи във времето и как проектът се развива постепенно, а не в "последната минута".
-
Цялостно рефакториране: структура на директориите, промяна на проектните файлове, на кода, класовете, интерфейсите, методите, свойствата, полетата и др. членове на класа или на програмата, както и промени на програмната логика. strong cohesion на всички нива (модули, класове, методи и др.); loose coupling между модули, класове, методи и др. 1.1. Цел 1: Лесен за четене, разбиране и поддържане 1.2. Цел 2: Правилно поведение - кодът трябва да изпълнява всички изисквания и всички бъгове или проблеми в кода трябва да бъдат поправени (в т.ч. проблеми с performance и usability). Всяка недовършена или липсваща функционалност трябва да бъде завършена.
-
Имплементиране на поне 6 шаблона за дизаин. 2.1. Structural - най-малко 2 от adapter, aggregate, bridge, composite, decorator, extensibility, facade 2.2. Behavior - най-малко 2 от chain of responsibility, command, interpreter, iterator, mediator, observer 2.3. Creational - най-малко 2 от abstract factory, builder, factory method, singleton, prototype
-
Всеки от следните принципи трябва да се използва поне веднъж: 3.1. SOLID (Single responsibility; open for extending - closed for modification; Liskov substitution; Interface segregation; Dependency Inversion) 3.2. DRY (Don't Repeat Yourself).
-
Създаване на unit tests върху цялата функционалност на проекта за проверка на коректното поведение на кода във всички възможни случаи (при правилни и неправилни данни, гранични случаи). Ако е нужно, променете първо логиката на приложението, за да направите кода тестваем. Да се покрият поне 80%. 4.1. Използвайте по ваш избор фреймърк за тестовете: Visual Studio Team Test, NUnit, MbUnit или др.
-
Документирайте рефакторирането.
Накрая:
-
Всички членове на екипа трябва да изпратят еднакъв .ZIP файл (до 8MB), съдържащ: 1.1. The original source code (project files, .cs files) without executables. 1.2. The refactored source code (project files, .cs files) without executables. 1.3. The unit tests – source code (project files, .cs files) without executables. 1.4. The refactoring documentation.
-
Защита - обяснение на рефакторирането (с помощта на документацията) и представяне на unit тестовете. Показване на логовете от качването на код в GitHub.