Всем привет. Я тут сейчас изучаю учебник "Программирование для начинающих" Радченко, сделал задание из учебника и хотелось бы попросить оценки моего кода.

Задание 3.39
Создайте массив и заполните его названиями дней недели по порядку. С помощью
операции [...] к выходным дням допишите « вых.». Чтобы, например, вместо
«Суббота» получилось «Суббота вых.».

Первый скриншот моё решение, второй - решение автора.
---
на вот, для коллекции

```1c
    МассивДней = Новый Массив;
    Для НомерДняНедели = 0 По 6 Цикл
    МассивДней.Добавить(ТРег(Формат(НачалоНедели(ТекущаяДата())+НомерДняНедели*86400,"ДФ=дддд")));
    Если НомерДняНедели>=5 Тогда
    МассивДней[НомерДняНедели] = МассивДней[НомерДняНедели] + " вых";
    КонецЕсли;
    КонецЦикла;
```
---
У вас, как минимум, не выполнено условие задания по использованию операции [...].
Вариант без использования циклов:

```1c
    СтрокаДней = "Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье";
    МассивДней = СтрРазделить(СтрокаДней, ",");
    МассивДней[5] = МассивДней[5] + "вых.";
    МассивДней[6] = МассивДней[6] + "вых.";
```
---
У вас, как минимум, не выполнено условие задания по использованию операции [...].
Вариант без использования циклов:

```1c
    СтрокаДней = "Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье";
    МассивДней = СтрРазделить(СтрокаДней, ",");
    МассивДней[5] = МассивДней[5] + "вых.";
    МассивДней[6] = МассивДней[6] + "вых.";
```
---
Уж не знаю зачем вам именно оценка, но пожалуйста - говнокод это на устоявшимся жаргоне называется.

Теперь по сути. Даже если отвлечься от того что решение избыточно и не соответствует поставленному заданию, есть пара проблем в вашей реализации:
1. Весь этот цикл не нужен - смысл перебирать если вы и так индексы элементов знаете.
2. Удалить/Вставить - ненужно. Загромождает код и, вероятно, требует больших вычислительных затрат чем просто ДниНедели[Суббота] = ...
3. У вас в массиве уже есть название дня недели, а вы его заменяете строкой содержащей его же. В итоге такой код занимает больше памяти. Ну и представьте что у вас было бы не 2 дня, а 15000 элементов на замену. Так же реализовали бы?

Успехов в освоении программирования, но почитайте что-то не из мира 1С про алгоритмы и структуры данных, комбинаторику.
---
хотелось бы попросить оценки моего кодаКод хороший уже только потому, что он работает. В программировании это является практически основным фактором. Да, производительность и эффективность кода вообще безусловно важна, но т.к. программистов в принципе мало, то это все уходит на второй план, и плохой код, который работает, лучше идеального, но не работающего, кода, т.к. его тупо некому написать.

Массив - это коллекция значений, в 1С эти значения могут быть любого типа, хотя, обычно, в массиве хранятся однотипные значения (или только строки, или только числа, или еще что-то типа ссылок на документы одного типа). Работа с коллекциями: обход и управление (перестановки, сортировка, ...) - это важные навыки. Суть 2-го решения в том, что к элементам коллекции обращаются через [], при этом просто к пятому и шестому добавляют " вых". Код в принципе ошибочен, т.к. предполагает, что суббота и воскресение находятся именно в этих пятом и шестом элементах. Хотя в условиях задачи и сказано, что дни недели надо заполнить по порядку, а в жизни такое вовсе необязательно. С другой стороны, если программа ожидает массива со всеми заполненными днями недели, то нет смысла проверять, заполнены ли пятый и шестой элементы.

Ну и учебник видимо устарел, т.к. заполнять массив строковыми константами лучше функцией СтрРазделить. В итоге код действительно сводится к условно трем строчкам.
---
выкинуть условие и выкинуть нелепый цикл и будет норм
---
на вот, для коллекции

```1c
    МассивДней = Новый Массив;
    Для НомерДняНедели = 0 По 6 Цикл
    МассивДней.Добавить(ТРег(Формат(НачалоНедели(ТекущаяДата())+НомерДняНедели*86400,"ДФ=дддд")));
    Если НомерДняНедели>=5 Тогда
    МассивДней[НомерДняНедели] = МассивДней[НомерДняНедели] + " вых";
    КонецЕсли;
    КонецЦикла;
```
---
Спасибо