Coder Social home page Coder Social logo

enigma's Introduction

Enigma Project BE 2207

Submitted by Ken Lenhart

Functionality

Meets Expectations - I was able to implement the Enigma Class with working encrypt and decrypt methods that perform according to the provided interaction pattern. Encrypt and Decrypt runner files work as expected with command line interface.

Object Oriented Programming

Meets Expectations <--> Above Expectations - I broke my project into 3 Classes and 2 helper modules. Each Class is between 30 and 35 lines of code. The helper modules are between 15 and 20 lines of code.

Enigma Class instantiates Encryptor and Decryptor Classes and is solely responsible for interacting with the Encrypt and Decrypt runner files. Engima includes the Enigmable helper module that contains helper methods used only by Enigma.

Encryptor Class is instantiated by Enigma and is solely responsible for containing the functionality for the Enigma Class #encrypt method. Encryptor includes the Encryptable helper module that contains helper methods for functionality. Encryptor only "talks" to the Enigma Class and the Encryptable helper module.

like Encryptor, Decryptor Class is instantiated by Enigma and is solely responsible for containing the functionality for the Enigma Class #decrypt method. Decryptor also includes the Encryptable helper module that contains helper methods it also uses for functionality. Decryptor only "talks" to the Enigma Class and the Encryptable helper module.

I chose to use modules for the Engima and Encryptor/Decryptor Classes because while my design choice was going to need to share behavior in the form of helper methods between Classes, my design was not going to need to share both behavior and state as provided by inheritance. If I were to start this program over, I might try an approach in which Encryptor and Decryptor are child classes of Enigma and have access to helper methods contained within Enigma as well as state in the form of the key and date information.

Ruby Conventions and Mechanics

Meets Expectations <--> Below Expectations - My project is mostly properly indented and spaced and I feel that file, class, and module names follow convention.

Hashes were implemented in the Encryptor and Decryptor Classes.

I could have made better use of enumerables that would have reduced the amount of code needed in the decrypt/encrypt methods. I also feel that an enumerable could have been used to reduce the size and repetition in the #offset_generator method contained in the Encryptable helper module.

Test Driven Development

Meets Expectations <--> Above Expectations - I have 93 commits and 15 pull requests and 100% SimpleCov coverage.

Most of my pull requests contain related work but some are general "clean up" passes that could have been done differently in a way that better follows good version control convention.

While I tried to keep my commits focused to specific pieces of functionality, there are several that include bits and pieces from across Classes/Modules, especially as I got into the refactoring phase.

enigma's People

Contributors

penitent0 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.