Skip to content

Instantly share code, notes, and snippets.

@larisasmiles
Last active April 10, 2017 16:29
Show Gist options
  • Save larisasmiles/583260be829df990fef65e8cb812ae36 to your computer and use it in GitHub Desktop.
Save larisasmiles/583260be829df990fef65e8cb812ae36 to your computer and use it in GitHub Desktop.
Module 1 Week 4 Diagnostic
# 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