К тому времени, когда кто-то учится программировать, он уже усвоил множество правил написания. Во-первых, мы изучаем основные грамматические правила — когда и какие буквы писать с большой буквы, как ставить знаки препинания в написанных мыслях, как делить свои мысли на абзацы, как структурировать свои мысли в том порядке, в котором могут следовать другие. Письмо в Интернете обычно более неформальное, поэтому мы часто игнорируем многие из этих соглашений. Текстовые сообщения, мгновенные сообщения и даже сообщения в социальных сетях имеют свои собственные правила. Не используйте чрезмерно заглавные буквы — это кричит. Большинство людей пропускают знаки препинания, и существует множество сленговых терминов u для вас, 4 для for и b для be. А еще есть аббревиатуры — рофл, брб, ыквим.

В кодировании есть похожие соглашения, которые помогают сделать наш код понятным для других и для нас самих. При написании вашей первой программы Hello World мы узнаем о важности комментариев, соглашениях по именованию переменных и правильных отступах. В некоторых языках программирования некоторые из них даже несут смысл в самом коде, а не просто в соглашении. Например, блоки Python обозначаются только отступом. Я хотел бы предположить, что хорошая гигиена программирования может иметь еще одно преимущество помимо удобочитаемости — эти соглашения могут облегчить изучение других языков, поиск и исправление ошибок и даже помощь в поиске работы.

Как это могло произойти? Давайте посмотрим на пример кода —

function addtwonums(a,b){return a+b;}
console.log(addtwonums(5,2));

Технически юридический код. Но трудно сказать, что к чему. Это короткий фрагмент, так что не так плохо, как могло бы быть, но мы можем с этим поработать.

Теперь давайте посмотрим на ту же программу с хорошей гигиеной кодирования —

function addTwoNums (a, b) {
  return a + b;
}
console.log(addTwoNums(5, 2));

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

Немногие программисты могут выйти за рамки нескольких базовых программ, не изучив стандарты именования переменных, констант и функций. И есть много разных мнений о том, где должна быть открывающая фигурная скобка — в той же строке, что и код, открывающий ее, или в строке ниже, выровненной с вызовом. Код, который я написал выше, использует первый. Ниже второй —

function addTwoNums (a, b)
{
  return a + b;
}
console.log(addTwoNums(5, 2));

Эти дебаты представляют собой версию Оксфордской запятой для программистов: ставите ли вы запятую между всеми пунктами в списке, например, «Том ел стейк, зеленую фасоль и картофельное пюре на ужин», или пропускаете запятую перед и , «Том ел на ужин стейк, зеленую фасоль и картофельное пюре». Во многих случаях это не имеет значения. И во многих случаях один способ может вызвать путаницу, а другой нет. В дебатах о фигурных скобках некоторые языки диктуют, что они будут принимать, а некоторые компании имеют руководство по стилю для своих программистов, которому следует следовать, что принимает решение за всех. При большой базе кода код пишется, редактируется и отлаживается многими, а единый стиль помогает сделать код понятным для всех. Но это даже не та гигиена кодирования, на которой я хочу сегодня сосредоточиться.

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

Давайте посмотрим на квадратную формулу. Для тех, кто забыл алгебру, это https://upload.wikimedia.org/wikipedia/commons/7/75/Quadratic_Formula.jpg. В компьютерном коде это

function quadraticFormula(a, b, c) {
  let positive = ((b + Math.sqrt((b * b) - (4 * a * c))) / (2 * a));
  let negative = ((b - Math.sqrt((b * b) - (4 * a * c))) / (2 * a));
  return positive, negative;
}
console.log(2, 4, 6);

Это читабельно, хотя я подозреваю, что другие посмотрят на это и скажут иначе. Я использую много круглых скобок, но предпочитаю очень четко группировать. Я делаю то же самое с условными операторами. Но тот же код может быть гораздо менее читаемым.

function quadraticFormula(a,b,c){
  let positive=((b+Math.sqrt((b*b)-(4*a*c)))/(2*a));
  let negative=((b-Math.sqrt((b*b)-(4*a*c)))/(2*a));
  return positive, negative;
}
console.log(2,4,6);

Мораль этой истории, друзья, пожалуйста, будьте либеральны с пробелами!