"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > One Level of Abstraction: The Key to Clean Functions

One Level of Abstraction: The Key to Clean Functions

Published on 2024-11-07
Browse:718

One Level of Abstraction: The Key to Clean Functions

Ever looked at a function and felt lost in its complexity? Let's explore a fundamental principle of clean code: functions should maintain only one level of abstraction.

Here's a real-world example of user creation in a web application:

// ❌ A function doing too many things at different abstraction levels
function createUser(userData) {
  // Validate data
  if (!userData.email || !userData.email.includes('@')) {
    return 'Invalid email';
  }
  if (userData.password.length 



This function mixes different levels of abstraction:

  • High-level business logic (user creation flow)
  • Mid-level operations (data validation, formatting)
  • Low-level details (password hashing)

Let's refactor it following the single level of abstraction principle:

// ✅ Clean version with one level of abstraction
function createUser(userData) {
  const validationError = validateUserData(userData);
  if (validationError) return validationError;

  const securePassword = hashPassword(userData.password);
  const formattedUser = formatUserData(userData.email, securePassword);

  return saveUserToDatabase(formattedUser);
}

function validateUserData({ email, password }) {
  if (!email || !email.includes('@')) return 'Invalid email';
  if (password.length 



Benefits of This Approach

  1. Readability: The main function reads like a story, describing what happens at a high level
  2. Maintainability: Each function has a single responsibility, making changes safer
  3. Testability: You can test each piece of logic independently
  4. Reusability: These focused functions can be reused in other contexts

Key Takeaways

When writing functions:

  • Keep them focused on one level of abstraction
  • Extract complex operations into well-named functions
  • Make the main function tell a story
  • Think of each function as a single step in your process

Remember: If you're mixing "how" and "what" in the same function, you're probably dealing with multiple levels of abstraction. Split them up!

Release Statement This article is reproduced at: https://dev.to/56_kode/one-level-of-abstraction-the-key-to-clean-functions-2ekb?1 If there is any infringement, please contact [email protected] to delete it
Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3