Skip to content

lostm1nd/HighQualityCode-Teamwork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Detailed Assignment Description

In order to ensure the high quality of the assigned project you need to fulfill the following tasks:

  1. Perform refactoring of the entire project (its directory structure, project files, source code, classes, interfaces, methods, properties, fields and other class members and program members and its programming logic) in order to make the code “high quality” according to the best practices introduced in the course “High-Quality Programming Code”. The obtained refactored code should conform to the following characteristics: -Easy to read, understand and maintain – the code should be well structured; should be easy to read and understand, easy to modify and maintain; should follow the concept of self-documenting code; should use good names for classes, methods, variables, and other identifiers; should be consistently formatted following the best formatting practices; should have strong cohesion at all levels (modules, classes, methods, etc.); should have loose coupling between modules, classes, methods, etc.; should follow the best practices of organizing programming logic at all levels (classes, methods, loops, conditional statements and other statements); should follow the best practices for working with variables, data, expressions, constants, control structures, exceptions, comments, etc. -Correct behavior – the project should fulfill correctly the requirements and to behave correctly in all possible use cases. This means that all bugs or other problems in the project (e.g. performance or usability issues) should be fixed and any unfinished or missing functionality should be completed. The code should be very well tested with properly designed unit tests.

  2. Implement design patterns – redesign the project to fulfil 6 of the Software Design patterns

    • Structural patterns – implement at least 2 of the structural design patterns (adapter, aggregate, bridge, composite, decorator, extensibility, façade, etc…)
    • Behavior patterns – implement at least 2 of the behavioral design patterns (chain of responsibility, command, interpreter, iterator, mediator, observer, etc…)
    • Creational patterns – implement at least 2 of the creational design patterns (abstract factory, builder, factory method, singleton, prototype, etc…)
  3. Follow the SOLID and DRY principles – Single responsibility, Open/close, Liskov substitution, Interface segregation, Dependency inversion, Don't repeat yourself -Redesign the project to fulfil the SOLID and DRY principles – each principle should be implemented at least once

  4. Design and implement unit tests covering the entire project functionality. To ensure the project works correctly according to the requirements and behaves correctly in all possible use cases, design and implement unit tests that cover all use cases and the entire program logic. If needed, first redesign the program logic to make the code testable. Test the normal expected behavior (correct data) and possible expected failures (incorrect data). Put special attention to the border cases. The code coverage of the unit tests should be at least 80%. Use unit testing framework of your choice (e.g. Visual Studio Team Test, NUnit, MbUnit or other).

  5. Document the refactorings you have performed in order to improve the quality of the project. Use English or Bulgarian language and follow the sample (see below).

About

Teamwork project from Telerik Academy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors