Git Product home page Git Product logo

tdd's Introduction

TDD Katas

Test Driven Development is a philosophy that says you should write tests first, then write the code to pass them.

In theory this will make it easier to avoid bugs and even easier to track down. This is certainly true if you are an experienced developer working on the a project who's architecture, team, and requirements will allow TDD. But not all projects are conducive to TDD, and it can take some time before you understand development well enough to integrate TDD into your work-flow.

What is undeniable is that learning TDD early on in your programming life will teach you strong habits like organized refactoring, thinking of code in terms of behavior not implementation, checking yourself early & often, and explaining your thought process.

In this project you will learn how to use TDD as an effective learning tool by completing and analyzing a minimum of 5 TDD Katas and organizing them into a gallery landing page as you did with JS 30 and CodeWars.

Index


Learning Objectives

  • TDD
  • Basic Functional Programming

TDD

Functional Programming

This is a highly complex subject, you will learn more about it when we begin to study Statefull Frontend Applications. For now a basic understanding will be more than enough. Functional Programming is when you build your applications completely out of pure functions:

Pure Function: It's return value is determined exclusively by it's arguments.

Building applications entirely from pure functions is a good habit, but requires a high level of programming experience. You are encouraged to apply this paradigm as often as you can without over-complicating your projects.

TDD vs BDD

A quick & dirty analogy might go like this:

TDD ensures the walls won't crumble, BDD ensures the building matches the blueprints.

This project focuses entirely on TDD, we will discuss BDD later on in the Testing unit.

TOP


Specifications

  1. Follow these guides to TDD & Functional Programming:
  1. Start building TDD Kata Repos. Just like with the Codewars project, you're never truly finished. This exercise will grow with you. Try to complete 3-4 per week. Each repo will have:
  • README
    1. Introduction to the problem
    2. Kata requirements explained in order, each linking to their markdowns
    3. Learning Notes
  • Live gh-pages tests as in the CodeWars Repos.
  • Completed, Refactored, Beautiful Solution.
  • REQUIREMENT.md - one per requirement in your kata
    1. Describe this requirement. Explain how it builds on the last one.
    2. List each test case and what you did to pass it
    3. Include your passing code as a snippet
    4. Describe & include your refactored code as a snippet
  1. Request code reviews for each finished TDD repo.

A usual, build a gallery page to feature your Katas and put it up on your portfolio.

Challenge:

TOP


Resources

Lists of Katas:

TDD:

Live, Online TDD:

Pure Functions:

Challenge:

TOP



tdd's People

Contributors

colevanderswands avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.