Идея проста. Не пишите длинные функции.

Не пишите функции длиннее 50 строк. - ESLint (конфигурация по умолчанию)

Конфигурация ESLint по умолчанию требует, чтобы максимальное количество строк в функции составляло 50 строк.

Я предпочитаю, чтобы это было максимум 20 строк.

Чем меньше, тем лучше. ;)

Почему 20 строк?

Это снижает сложность вашего кода. Облегчает понимание. Ладно, я думаю, ты уже знал. ;) Конечно, это снижает сложность, но есть некоторые мелочи, которые я хочу отметить в этой статье. Для этого нужно ответить на вопрос, зачем были придуманы функции. ;)

Почему именно функции?

Функции или подпрограммы были изобретены для достижения двух основных целей.

  • Повторное использование
  • Абстракция

Главное, что приходит в голову, - это возможность повторного использования. Не пишите один и тот же код снова и снова. Напишите функцию и используйте ее везде. Это то, что мы делаем, не так ли? Это круто. Это даже безвредно для окружающей среды. Также снижает углеродный след.

Это основное назначение функций, но второму мы не уделяем особого внимания. Абстракция. По крайней мере, я этого не сделал. До недавнего времени я видел, что рекомендуется разделять работу на множество функций, даже если они не используются повторно, но почему?

Ответ исходит из очень известной и очень старой поговорки ...

DOTADIW

Делай одно дело и делай это хорошо - философия Unix

Это очень уважаемое высказывание в истории информатики. Впервые это было заявлено Дугласом Макилроем и было принято в сообществе Unix, а затем и сообществом Linux.

Давай сделаем одно ... подожди что?

Идея в том, что вы должны писать программы, которые делают одно и только одно. Ваши программы не должны делать многого. Это способствует модульности.

Значит, ваши функции должны делать то же самое. Сделайте одно. Немногое. Если вы делаете много вещей, вам следует разделить это на множество функций.

Но почему? Есть много причин, но моя любимая - это. - ›Вам не нужны комментарии, чтобы описать, что делает функция. Название самой функции описывает, что она делает.

Если у вас есть функция, которая выполняет множество функций, что ж ... у вас есть два варианта.

  1. Напишите комментарии, чтобы описать, что вы делаете на каждом этапе. или,
  2. Напишите комментарий в верхней части функции: «Не трогайте это. Это моя функция, если вам нужно что-то изменить, проконсультируйтесь со мной - Автор »

Давайте посмотрим ;)

Давайте посмотрим на очень простых примерах, как это работает. Допустим, вам дано множество форм. Фигуры могут быть квадратами, прямоугольниками или кругами.

Для прямоугольников предусмотрены высота и ширина. Для квадратов предусмотрена ширина. Для окружностей указан радиус.

Ваша цель - написать функцию для вычисления суммы площадей всех фигур в массиве.

[{height: 200, width: 30, type: 'rectangle'}, {radius: 50, type: 'circle'},  {width: 100, type: 'square'},... ]

Напишем монолитный ответ,

function calculateTotalArea(shapes) {
  return shapes.reduce((sum, shape) => {   
      // Calculate the area of this shape
      let area = 0
      if(shape.type === 'square') { 
        area = shape.width * shape.width;
      }
      if(shape.type === 'rectangle') { 
        area = shape.height * shape.width;
      }
      if(shape.type === 'circle') { 
        area = shape.radius * shape.radius * Math.PI;
      }
      // Add it to the sum
      return sum + area;
  }, 0)
}

Что он делает, так это запускает функцию уменьшения массива для каждого элемента массива и складывает их площадь.

Разобьем его на небольшие функции. ;)

function calculateTotalArea(shapes) {
  return shapes.reduce((sum, shape) => {    
      return sum + calculateShapeArea(shape);
  }, 0)
}
function calculateShapeArea(shape){
  let area = 0
  if(shape.type === 'square') { 
     area = shape.width * shape.width;
  }
  if(shape.type === 'rectangle') { 
     area = shape.height * shape.width;
  }
  if(shape.type === 'circle') { 
     area = shape.radius * shape.radius * Math.PI;
  }
  return area;
}

Смотрите, это очень просто. ;)

Конечно, легче сказать, чем реализовать. В любом случае эта идея не нова. Если вы попробуете Google, вы можете найти много статей по этому поводу.

но самое главное НЕ делайте этого, потому что я говорю это. И не переусердствуйте. Не разбивайте каждую строку на функции. Все оказывает негативное влияние, все идет на компромисс. а также..

Вот и все ... ❤

Большое спасибо за чтение. Не стесняйтесь высказывать свое мнение.

Некоторые статьи, к которым можно обратиться, если вы хотите узнать больше: