Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions Sprint-3/3-dead-code/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Refactoring Dead Code

Here are two example of code that has not been built efficiently. Both files have dead code in them. It's your job to go back through this existing code, identify the dead code, and remove it so the code is ready for production.

## Instructions

1. Work through each `exercise` file inside this directory.
2. Delete the dead code.
3. Commit your changes and make a PR when done.
17 changes: 17 additions & 0 deletions Sprint-3/3-dead-code/exercise-1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Find the instances of unreachable and redundant code - remove them!
// The sayHello function should continue to work for any reasonable input it's given.

let testName = "Jerry";
const greeting = "hello";

function sayHello(greeting, name) {
const greetingStr = greeting + ", " + name + "!";
return `${greeting}, ${name}!`;
console.log(greetingStr);
}

testName = "Aman";

const greetingMessage = sayHello(greeting, testName);

console.log(greetingMessage); // 'hello, Aman!'
28 changes: 28 additions & 0 deletions Sprint-3/3-dead-code/exercise-2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Remove the unused code that does not contribute to the final console log
// The countAndCapitalisePets function should continue to work for any reasonable input it's given, and you shouldn't modify the pets variable.

const pets = ["parrot", "hamster", "horse", "dog", "hamster", "cat", "hamster"];
const capitalisedPets = pets.map((pet) => pet.toUpperCase());
const petsStartingWithH = pets.filter((pet) => pet[0] === "h");

function logPets(petsArr) {
petsArr.forEach((pet) => console.log(pet));
}

function countAndCapitalisePets(petsArr) {
const petCount = {};

petsArr.forEach((pet) => {
const capitalisedPet = pet.toUpperCase();
if (petCount[capitalisedPet]) {
petCount[capitalisedPet] += 1;
} else {
petCount[capitalisedPet] = 1;
}
});
return petCount;
}

const countedPetsStartingWithH = countAndCapitalisePets(petsStartingWithH);

console.log(countedPetsStartingWithH); // { 'HAMSTER': 3, 'HORSE': 1 } <- Final console log
File renamed without changes.
File renamed without changes.
4 changes: 3 additions & 1 deletion Sprint-3/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
> Do the prep.
This sprint you are expected to produce multiple different pull requests:

1. One pull request for the `1-implement-and-rewrite-tests` directory.
2. One pull request for the `2-practice-tdd` directory.
3. Optionally, one pull request for the `3-stretch` directory.
3. As a stretch goal, one pull request for the `3-dead-code` directory.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why stretch? This feels quite important to understand, and also not too big?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I saw the dead code backlog item was put as priority stretch, I assumed a decision was made to make this a stretch task?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's make it required :) We may rebalance things a bit with @cifarquhar's audit, but I'd rather people try to do this one than they didn't :)

4. Optionally, one pull request for the `4-stretch` directory.

Each directory contains a README.md file with instructions for that directory.