clean-code-javascript icon indicating copy to clipboard operation
clean-code-javascript copied to clipboard

Update Object.assign() example to include modern spread operator alternative

Open rushabhT3 opened this issue 7 months ago • 2 comments

Update Object.assign() example to include modern spread operator alternative

Summary

The current example for "Set default objects with Object.assign" should be updated to include the modern spread operator syntax as the preferred approach, while keeping Object.assign() for reference.

Current State

The documentation currently shows Object.assign() as the "good" example:

function createMenu(config) {
  let finalConfig = Object.assign(
    {
      title: "Foo",
      body: "Bar",
      buttonText: "Baz",
      cancellable: true
    },
    config
  );
  return finalConfig;
}

Proposed Change

Update the example to show the spread operator as the primary modern approach:

function createMenu(config) {
  const finalConfig = {
    title: "Foo",
    body: "Bar",
    buttonText: "Baz",
    cancellable: true,
    ...config  // Override defaults with user config
  };
  return finalConfig;
}

Suggested Implementation

Show both approaches with clear preference:

// Modern approach (recommended)
function createMenu(config) {
  const finalConfig = {
    title: "Foo",
    body: "Bar", 
    buttonText: "Baz",
    cancellable: true,
    ...config
  };
  return finalConfig;
}

// Alternative using Object.assign()
function createMenuAlternative(config) {
  const finalConfig = Object.assign(
    {
      title: "Foo",
      body: "Bar",
      buttonText: "Baz", 
      cancellable: true
    },
    config
  );
  return finalConfig;
}

rushabhT3 avatar Jul 13 '25 16:07 rushabhT3

Duplicate of #286

spartanatreyu avatar Aug 11 '25 05:08 spartanatreyu

https://github.com/ryanmcdermott/clean-code-javascript/issues/705

myltik1702 avatar Nov 24 '25 01:11 myltik1702