Giter Site home page Giter Site logo

catalog-of-things's Introduction

Hello, I'm Omar Salem!

Twitter Badge LinkedIn Badge

Iโ€™m Omar, a Software Engineer, with a love for React and Redux creative coder and self-proclaimed designer who specializes in front-end development. I make it my mission to translate user-focused designs into pixel-perfect websites or applications that run blazing fast. Open to new opportunities.

Want to know more about me? Check out my portfolio.
Reach me by email: [email protected]

My Rank

Most Active GitHub User Rank

GitHub Stats ๐Ÿ“ˆ


Omar's GitHub Stats

Languages and Tools ๐Ÿ’ผโš™๏ธ

bootstrap css3 firebase git html5 javascript babel jest linux postgresql rails react redux ruby sass webpack

catalog-of-things's People

Contributors

bertrandconxy avatar omarsalem7 avatar yerimah avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

bertrandconxy

catalog-of-things's Issues

[2pt] Create MusicAlbum class in a separate .rb file.

  • All MusicAlbum class properties visible in the diagram should be defined and set up in the constructor method.
  • Implement methods:
    • can_be_archived?() in the MusicAlbum class
      • should override the method from the parent class
      • should return true if parent's method returns true AND if on_spotify equals true
      • otherwise, it should return false

[2pt] - Create a Label class with an association to the Item class (in a separate .rb file).

  • All Label class properties visible in the diagram should be defined and set up in the constructor method.
  • Implement methods:
    • add_item method in the Label class
      • should take an instance of the Item class as an input
      • should add the input item to the collection of items
      • should add self as a property of the item object (by using the correct setter from the item object)

[2pt] Create an Author class with an association to the Item class (in a separate .rb file).

  • All Author class properties visible in the diagram should be defined and set up in the constructor method.
  • Implement methods:
  • Implement methods:
    • add_item method in the Author class
      • should take an instance of the Item class as an input
      • should add the input item to the collection of items
      • should add self as a property of the item object (by using the correct setter from the item object)

[2pt] Create a Book class in a separate .rb file.

  • All Book class properties visible in the diagram should be defined and set up in the constructor method.
  • Implement methods:
    • can_be_archived?() in the Book class
      • should override the method from the parent class
      • should return true if parent's method returns true OR if cover_state equals to "bad"
      • otherwise, it should return false

[2pt] Create Item class

  • All Item class properties visible in the diagram should be defined and set up in the constructor method. Exception: properties for the 1-to-many relationships should NOT be set in the constructor method. Instead, they should have a custom setter method created.
  • Add all methods visible in the diagram.
  • Implement methods:
    • can_be_archived?() in the Item class
      • should return true if published_date is older than 10 years
      • otherwise, it should return false
    • move_to_archive() in the Item class
      • should reuse can_be_archived?() method
      • should change the archived property to true if the result of the can_be_archived?() method is true
      • should do nothing if the result of the can_be_archived?() method is false

Peer-to-peer code review: Ruby capstone

Hello team,

You have done a great job building this console app! ๐ŸŽ†

Highlights ๐Ÿฅ‡

โœ”๏ธ Requirements are implemented well
โœ”๏ธ The console app is working as expected without crashing
โœ”๏ธ No linter errors
โœ”๏ธ Use of Ruby best practices
โœ”๏ธ All the unit tests are passing
However, there are some issues that I would like to present to you so that when you correct them, your codes will be clean and more maintainable than they are now.

Requested improvements โ™ป๏ธ

While looking through this project, I have noticed a lot of repetition of the similar blocks of codes while it is the best programming practice to always keep our codes DRY which means "Not Repeating similar codes multiple times". Every piece of knowledge must have a single, unambiguous, authoritative representation within a system (Andrew Hunt & David Thomas, "The Pragmatic Programmer"). Please try to look at these code snippet screenshots I took from some of your project files.

case 1

cat1

case 2

cat2

case 3

cat5

There is the repetition of the block of codes that is responsible to read data from the storage in every module which is the same for the case of writing data in the storage.

Suggested solution

I kindly recommend that you may create a Ruby module that handles all data manipulation operations (reading and writing data) and then include that module in every class that is responsible for displaying data in the storage or saving data in the storage.
For example
Solution

Then, after this module is included in a particular class, you can perform read operations

sln_read

And also the write operations like this;

sln_write

Thank you, happy coding! ๐Ÿ‘

[2pt] Create Genre class with an association to the Item class (in a separate .rb file).

  • All Genre class properties visible in the diagram should be defined and set up in the constructor method.
  • Implement methods:
    • add_item method in the Genre class
      • should take an instance of the Item class as an input
      • should add the input item to the collection of items
      • should add self as a property of the item object (by using the correct setter from the item object)

[4pt] User interface for entry points

Create a main.rb file that will serve as your console app entry-point.
Your console app, at the start, should:
Present the user with a list of options to perform.
Let users choose an option.
If needed, ask for parameters for the option.
Have a way to quit the app.

[2pt] Create a Game class in a separate .rb file.

  • All Game class properties visible in the diagram should be defined and set up in the constructor method.
  • Implement methods:
    • can_be_archived?() in the Game class
      • should override the method from the parent class
      • should return true if parent's method returns true AND if last_played_at is older than 2 years
      • otherwise, it should return false

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.