Книга знаний

Инф. технологии

Признаки плохого программирования

Рассмотрены признаки плохого программированияАвтор статьи: Гений 1С | Редакторы: Волшебник, Fynjy, Лёвыч, EmK, Stillcat,
Последняя редакция №6 от 19.07.06 | История
URL: http://kb.mista.ru/article.php?id=273

Ключевые слова: программирование, стиль


Функции с большим числом параметров


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

Пример плохого стиля:
ПеретаскиваниеВНовуюОбластьДанных(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка, ПраваДоступаПользователей, МодифицированностьФормы)


Использование в коде программы конкретных данных


Пример плохого стиля:
Если ИмяПользователя="Иванов_С" Тогда ... КонецЕсли

Представьте потом, что если пользователь уволится, нужно будет найти все случаи, где встречается Иванов_С и сделать замену на нового сотрудника.
Пример плохого стиля:
Если Справочник.Код=17 Тогда ... КонецЕсли

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

Использование глобальных переменных


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

Дублирование кода


Весь дублирующийся функционал нужно выносить в процедуры и функции:
Сравните:
А=Макс(Х,-Х);
Б=Мин(Y,-Y);

Против:
А=Модуль(Х);
Б=-Модуль(Y);


Замена индекса массива кодом


В коде начинающих программистов часто встречаются конструкции вида:
А1=0;
А2=0;
А3=0;
А4=0;
А5=0;

Против:
Для Каждого Эл из А Цикл
    Эл=0;
КонецЦикла;

На самом деле примеры бывают ужаснее (по 100, 200 элементов), просто нет под рукой ссылок.

Имена переменных, процедур и функций


Часто очень приходиться разбирать чужой код. И очень многие забывают о том, что после них будут работать другие люди и читаемость кода зависит от того какие имена переменным, процедурам и функциям мы даем.
Начинающие в большинстве (из-за лени) дают вот таки имена:
Не правильно.
А1, А2
Эл, Пр, Спр, Док

Из-за этого код становиться сложно читаемым.
Правильно
Без локализации.
Счетчик, СправочникКонтрагенты

С локализацией.
//гл - глобальная, ф - форма, м - общая модуль, л - локальная процедура/функция, сз - список значений и т.д. 
лСчетчик, мСправочникКонтрагенты, лсзСправочникТМЦ

Более детально можно почитать в любой книге по программированию + на ИТС достаточно подробно описаны данные правила (дайте пожалуйста название темы на ИТС, не нашли).

Еще можно почитать здесь: Книга знаний: Kazakh Notation (Казахская нотация) В программировании это называется "венгерская нотация".

Явное объявление локальных переменных


Желательно явно объявлять локальные переменные, как ни лениво это делать. Это дает возможность увидеть вам список переменных, используемых в функции и избежать конфликтов с глобальными переменными.

Использование текущей даты в функциях


Иногда встречаешь код, где внутри функции используется вызов ТекущаяДата().
Во-первых это нарушает изолированность функции, т.к. используются данные, которые не передаются в
фунцию.
А во-вторых это лишает нас возможности получить результаты функции на указанную дату, а часто если вначале такое и не нужно, то потом требуется. Пример из жизни: функция вычисляла на текущую дату накопленную сумму покупок покупателями для расчета текущего рейтинга. А затем понадобилось узнать, какая сумма была накоплена на дату Х, чтобы проверить, правильно ли был рассчитан рейтинг. Пришлось переделывать функцию.

Прочее


Напишите здесь ваши мысли.

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика