Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
когда копипастишь, что само по себе уже нехорошо и оставляет много мест для баговВы издеваетесь? У меня есть огромный массив огромных хэшей, и я решил в него добавить ещё парочку таких же, с несколькими изменёнными полями. Я весь хэш буду руками набирать? По-вашему это не оставляет много мест для багов? Во всяких перлах-питонах для того и разрешили в конце списка/хэша ставить запятые, чтоб облегчить копипаст. Не путайте копипаст кода с копипастом данных.
дублирование это о-о-очень плохоЕще раз говорю, не путайте дублирование кода и дублирование данных. Из миллиона юзеров только два имеют разный пол, остальные 999998 — продублированный. И страна у 90% продублирована. Откройте код хабра и посмотрите сколько продублированных структур — на каждый комментарий, где отличается только юзер, дата, и содержимое, дублируется целая страница текста. И это нормально, потому что это данные, а не выполняемый код.
А что если в каждый хеш надо будет добавить еще одно одинаковое значение — тоже Ctrl+C, Ctrl+V?Да, «yy», потом несколько раз «p» (vim же). А в вашем случае — что я буду делать если мне понадобится из некоторых хешей удалить/поменять значение? Писать код который генерирует хеши по шаблону, потом код который заменяет/добавляет нужные ключи в нужных хэшах, потом код который удаляет нужные ключи. А потом когда другой человек захочет добавить поле ХХХ в объект УУУ, он должен будет разбираться как этот код работает? И весь этот геморрой вместо использования данных, которые самоочевидны, только потому что дублирование это очень плохо?
{
"values": [
{
"name": "first",
"a": "value1",
"b": "value2",
"c": "value3"
},
{
"name": "second",
"a": "value1",
"b": "value2",
"c": "value3"
},
{
"name": "third",
"a": "value42",
"b": "value2",
"d": "value3"
},
{
"name": "last",
"a": "value1",
"b": "value2",
"c": "value42",
"d": "value4"
}
]
}
Ага, в небольшое приложение, которое хранит настройки в JSON, я внезапно должен подключать реляционную базу данных (минимум пару сотен Кб для сжатого sqlite), делать несколько нормализованных таблиц чтобы избежать ужасного дублирования (сэкономлю пару сотен байт!), и генерировать оттуда этот JSON. И это всё для того чтоб прочитать настройки. Спасибо, поржал.
Вот вам условный пример кода с огромным количеством дублируемых данных.
{
"valueDefaults" : {
"a": "value1",
"b": "value2",
"c": "value3"
},
"values": [
{
"name": "first"
},
{
"name": "second"
},
{
"name": "third",
"a": "value42",
"c": null,
"d": "value3"
},
{
"name": "last",
"c": "value42",
"d": "value4"
}
]
}
var object =
{
a:"a"
,b:"b"
,c:"c"
}
var object = { a: "a"
, b: "b"
, c: "c"
}
Если в любом месте списка элементов встречается запятая, перед которой не присутствует ВыражениеПрисваивания (т. е. запятая в начале списка или сразу после другой запятой), пропущенный элемент массива увеличивает длину объекта Array и индексы последующих элементов.
[1,2,3,]
foo = {bar: 'baz',
tom: 'cat',
}
Убираем лишние запятые из javascript-кода