DRY (Don't Repeat Yourself) in Software Engineering - Time & Space Complexity
Analyzing time complexity helps us see how following the DRY principle affects the speed of our code.
We want to know how avoiding repeated code impacts the number of steps the program takes.
Analyze the time complexity of the following code snippet.
function calculateSum(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
function calculateAverage(arr) {
let total = calculateSum(arr);
return total / arr.length;
}
This code calculates the sum of numbers in an array and then uses that to find the average, reusing the sum calculation instead of repeating the loop.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: A single loop that goes through the array once to sum all elements.
- How many times: The loop runs exactly once per function call to
calculateSum.
As the array size grows, the number of steps grows in a straight line with it.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 steps to sum |
| 100 | 100 steps to sum |
| 1000 | 1000 steps to sum |
Pattern observation: The work grows evenly as the input grows; doubling input doubles the work.
Time Complexity: O(n)
This means the time to run grows directly with the size of the input array.
[X] Wrong: "Calling the sum function twice is just as fast as calling it once."
[OK] Correct: Each call loops through the array, so calling it twice doubles the work and time.
Understanding how reusing code affects time helps you write cleaner and faster programs, a skill valued in real projects and interviews.
"What if the sum calculation was repeated inside the average function instead of calling a separate function? How would the time complexity change?"
Practice
Solution
Step 1: Understand the acronym DRY
DRY stands for "Don't Repeat Yourself" which means avoiding duplicate code.Step 2: Match the meaning to options
Don't Repeat Yourself - avoid writing the same code multiple times correctly explains DRY as avoiding repeated code to keep it clean and maintainable.Final Answer:
Don't Repeat Yourself - avoid writing the same code multiple times -> Option AQuick Check:
DRY = Don't Repeat Yourself [OK]
- Confusing DRY with debugging or speed
- Thinking DRY means writing less code overall
- Assuming DRY is about output or design only
Solution
Step 1: Identify how to avoid code repetition
Functions or methods allow reusing code by calling them multiple times instead of copying code.Step 2: Compare options for DRY compliance
Use functions or methods to reuse code uses functions to reuse code, which follows DRY. Others increase repetition.Final Answer:
Use functions or methods to reuse code -> Option AQuick Check:
Functions help reuse code [OK]
- Copy-pasting code instead of using functions
- Writing long scripts without modular parts
- Repeating declarations unnecessarily
def greet():
print('Hello!')
greet()
greet()What is the main benefit of using the function
greet() here?Solution
Step 1: Analyze the function usage
The functiongreet()contains the print statement and is called twice.Step 2: Understand the benefit
Instead of writingprint('Hello!')twice, the function is called twice, avoiding code repetition.Final Answer:
It avoids repeating the print code by calling the function -> Option DQuick Check:
Function calls reuse code [OK]
- Thinking function calls duplicate code
- Assuming functions slow down simple prints
- Believing this causes syntax errors
def calculate_area(radius):
area = 3.14 * radius * radius
return area
print(calculate_area(5))
print(3.14 * 7 * 7)Solution
Step 1: Check code repetition
The first print uses the function, but the second print repeats the area calculation manually.Step 2: Identify DRY violation
Repeating the formula outside the function breaks DRY; both should use the function.Final Answer:
The function is not called for the second print, repeating code -> Option BQuick Check:
Repeated formula outside function breaks DRY [OK]
- Ignoring repeated formula outside function
- Thinking the function has syntax errors
- Assuming pi value causes DRY issues
Solution
Step 1: Understand the task
Applying the same discount calculation repeatedly should be done without copying code.Step 2: Choose the DRY-compliant method
Creating a function for discount calculation and calling it for each price avoids repetition and keeps code clean.Final Answer:
Create a function to calculate discount and call it for each price -> Option CQuick Check:
Functions prevent repeated discount code [OK]
- Repeating calculation code in loops or manually
- Copy-pasting discount logic multiple times
- Not using reusable code blocks
Ready to prove it?
Pass the test and this pattern moves unknown
