Last active
April 10, 2017 16:29
-
-
Save larisasmiles/583260be829df990fef65e8cb812ae36 to your computer and use it in GitHub Desktop.
Module 1 Week 4 Diagnostic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Module 1 Week 4 Diagnostic | |
This exercise is intended to help you assess your progress with the concepts and techniques we've covered during the week. | |
For these questions, write a short description or snippet of code that meets the requirement. In cases where the question mentions a "given" data value, use the variable given to refer to it (instead of re-writing the information). | |
##### 1. Give one difference between Modules and Classes. | |
Modules are not meant to create intances. | |
##### 2. Defining Modules | |
First, create a module `Doughy` which defines a method `has_carbs?` that always returns true. | |
Then, given the following Pizza class, update Pizza to use your new Doughy module to gain the defined `has_carbs?` behavior. | |
```ruby | |
module Doughy | |
class Pizza | |
def tasty? | |
true | |
end | |
def has_carbs? | |
true | |
end | |
end | |
``` | |
##### 3. What are two benefits modules provide us in Ruby? Elaborate on each. | |
Modules provide a namespace and prevent name clashes. | |
Modules implement the mixin facility. | |
##### 4. What values in Ruby evaluate as "falsy"? | |
nil and false | |
##### 5. Give 3 examples of "truthy" values in Ruby. | |
"0" | |
5 == 5 | |
true == true | |
##### 6. Git and Branches: give a git command to accomplish each of the following: | |
* Switch to an existing branch iteration-1 :git check out iteration-1 | |
* Create a new branch iteration-2 :git checkout -b iteration-1 | |
* Push a branch iteration-2 to a remote origin :git push origin iteration-2 | |
* Merge a branch iteration-1 into a branch master (assume you are not on master to begin with) | |
:git checkout master | |
##### 7. Load Paths and Requires | |
Given a project with the following directory structure, give 2 ways that we could require file_one from file_two. | |
```ruby | |
. require_relative 'file_1' | |
├── lib | |
│ │── file_one.rb | |
│ └── file_two.rb | |
``` | |
##### 8. Refactoring: given the following snippet of code, show 2 refactorings you might make to improve the design of this code. | |
```ruby | |
class Encryptor | |
def date_offset | |
date = Time.now.strftime("%d%m%y").to_i | |
date_squared = date ** 2 | |
last_four_digits = date_squared.to_s[-4..-1] | |
[last_four_digits[-4].to_i, | |
last_four_digits[-3].to_i, | |
last_four_digits[-2].to_i, | |
last_four_digits[-1].to_i] | |
end | |
end | |
Encryptor.new.date_offset | |
``` | |
or..... | |
class Encryptor | |
def date_offset | |
last_four_digits | |
end | |
def last_four_digits | |
date - date.last[-4..-1].chars | |
made.map! { |num| | |
num to_i | |
} | |
end | |
def date | |
date = Time.now.strftime("%d%m%y").to_i | |
end | |
def date_squared | |
date_squared = date ** 2 | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment