[Перевод] Чистый javascript.Переменные
Перевод книги Раяна Макдермота чистый код адаптированной под javascript.
Плохо:
Хорошо:
Используйте один и тот же метод для того же типа переменной
Плохо:
Хорошо:
Мы будем читать код чаще, чем мы когда-нибудь напишем. Важно писать читаемый код, который легко искать. Делайте ваши имена для поиска. Такие инструменты, как buddy.js и ESLint могут помочь идентифицировать неназванные константы.
Хорошо:
Плохо:
Хорошо:
Явное лучше, чем неявное.
Хорошо:
Если ваше имя класса / объекта говорит вам что это, не повторяйте тоже при именовании его свойств и методов.
Хорошо:
Используйте условия по умолчанию вместо коротких замыканий или условных выражений
Плохо:
Хорошо:
Оглавление:
- Введение
- Переменные
Используйте значимые и произносимые имена переменных
Плохо:
const yyyymmdstr = moment().format('YYYY/MM/DD');
Хорошо:
const yearMonthDay = moment().format('YYYY/MM/DD');
Используйте один и тот же метод для того же типа переменной
Плохо:
getUserInfo();
getClientData();
getCustomerRecord();
Хорошо:
getUser();
Используйте именованные значения
Мы будем читать код чаще, чем мы когда-нибудь напишем. Важно писать читаемый код, который легко искать. Делайте ваши имена для поиска. Такие инструменты, как buddy.js и ESLint могут помочь идентифицировать неназванные константы.
Плохо:
// Что значит 86400000?
setTimeout(() => {
this.blastOff();
}, 86400000);
Хорошо:
// Объявляйте их как глобальные переменные.
const MILLISECONDS_IN_A_DAY = 86400000;
setTimeout(() => {
this.blastOff();
}, MILLISECONDS_IN_A_DAY);
Используйте объясняющие переменные
Плохо:
const address = 'One Infinite Loop, Cupertino 95014';
const cityStateRegex = /^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;
saveCityState(address.match(cityStateRegex)[1], address.match(cityStateRegex)[2]);
Хорошо:
const address = 'One Infinite Loop, Cupertino 95014';
const cityStateRegex = /^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;
const [, city, state] = address.match(cityStateRegex);
saveCityState(city, state);
Используйте очеловеченные названия
Явное лучше, чем неявное.
Плохо:
const locations = ['Austin', 'New York', 'San Francisco'];
locations.forEach((l) => {
doStuff();
doSomeOtherStuff();
// ...
// ...
// ...
// Что значит `l`?
dispatch(l);
});
Хорошо:
const locations = ['Austin', 'New York', 'San Francisco'];
locations.forEach((location) => {
doStuff();
doSomeOtherStuff();
// ...
// ...
// ...
dispatch(location);
});
Не добавляйте ненужный контекст
Если ваше имя класса / объекта говорит вам что это, не повторяйте тоже при именовании его свойств и методов.
Плохо:
const Car = {
carMake: 'Honda',
carModel: 'Accord',
carColor: 'Blue'
};
function paintCar(car) {
car.carColor = 'Red';
}
Хорошо:
const Car = {
make: 'Honda',
model: 'Accord',
color: 'Blue'
};
function paintCar(car) {
car.color = 'Red';
}
Используйте условия по умолчанию вместо коротких замыканий или условных выражений
Плохо:
function createMicrobrewery(name) {
const breweryName = name || 'Hipster Brew Co.';
// ...
}
Хорошо:
function createMicrobrewery(breweryName = 'Hipster Brew Co.') {
// ...
}
Комментарии (9)
14 января 2017 в 12:02
+2↑
↓
Это относится ко всем языкам программирования всех времен и народов.14 января 2017 в 12:07
–1↑
↓
Полностью с вами согласен.14 января 2017 в 12:47
+2↑
↓
Но тогда зачем писать очевидные вещи, которым место в «Программирование для самых маленьких (в картинках)»? Да и полно подобных статей уже.14 января 2017 в 13:44
+1↑
↓
Читайте оригинал.
14 января 2017 в 13:16
+6↑
↓
Наверное, вам стоит подписаться на коммиты в репозитории, потому что примеры и формулировки там сейчас активно и коллективно обновляются. Например, этот код уже отличается от старой версии, использованной вами.14 января 2017 в 13:28
+7↑
↓
Лучше объедините переводы в одну статью. Читать отдельные короткие, не очень удобно.14 января 2017 в 15:20 (комментарий был изменён)
+5↑
↓
+1. Введение — вообще ни о чем. Эта часть — коротковата. Если материал уже есть — лучше чуть подлиннее. При наличии нормальной структуры будет читаться лучше.К React, Node, Angular это точно имеет отношение?
14 января 2017 в 17:38
0↑
↓
function createMicrobrewery (breweryName = 'Hipster Brew Co.') {
//…
}Узнал для себя новое, и давно уже значение по умолчанию доступно в JS?
14 января 2017 в 17:44
0↑
↓
Согласно MDN, начиная с ES6.