Git Product home page Git Product logo

mikado-space's Introduction

This repository contains messy code for practicing the Mikado Method, refactorings and restructurings, clean code and object-oriented design. It was originated from https://github.com/mikadomethod/space

RUNNING THE CODE

The project has a Space class that is the main class. The main() method takes no parameters.

The Space class has two static boolean members that control behavior, IS_BOUNCING_BALLS and IS_BREAKOUT.

If IS_BOUNCING_BALLS is false, the application is a simulation of a solar system, not that different from ours. The value of IS_BREAKOUT doesn't matter.

If IS_BOUNCING_BALLS is true, the application shows a box of bouncing balls. If IS_BREAKOUT is true, the balls can exit through the lower side of the box. If IS_BREAKOUT is false, the balls just keep bouncing in the box.

There are also some tests available. They don't cover all the code, just as in real life. ;-)

EXERCISES

Each of the exercises can start from a fresh pull of the code. They can also start from the previous (working) state as the exercises are completed.

Easy level

Background

The space.PhysicalObject is to be used in another project. However, the entire Space class must NOT be shared. Your task is to extract the space.PhysicalObject to a new project.

Goal

Enable reuse of space.PhysicalObject

Intermediate level

Background

The solar system and bouncing balls applications are to be sold in separate delivery packages. Due to legal issues, the solar system may not contain any bouncing balls logic and vice versa.

Goal

Two separate, minimal, deliverables for bouncing balls and solar system.

Difficult level

Background

The application is a huge success, and will be ported to a limited device without Swing/AWT support. The exact API of the new graphics support is not ready, but to be first on the market when it arrives, you need to start separating presentation logic from domain ASAP.

Goal

The domain logic is compilable without Swing/AWT dependencies. When Swing/AWT + any bridging code is available, the application should be runnable.

mikado-space's People

Contributors

michal-lipski avatar

Watchers

 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.