-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Количество параметров в методе, однострочные конструкции, аннотация методов #8
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -64,7 +64,6 @@ | |
НоваяСтрока.НомерГруппы = ГруппаПоВидуОперации(ВидОперации); | ||
НоваяСтрока.ПоОрганизацииВЦелом = ГруппаПоОрганизации(НоваяСтрок); | ||
``` | ||
|
||
### Методы | ||
|
||
- Параметр функции не должен возвращать значение. Иными словами не используйте входные параметры функций как дополнительный вывод. Весь вывод должен быть в возвращаемом значении. Если нужно возвращать несколько значений следует использовать такие типы как `Структура`, `Массив` и т.д. | ||
|
@@ -83,6 +82,45 @@ URLСервиса = ""; | |
// ИмяПользователя - Строка | ||
// ПарольПользователя - Строка | ||
``` | ||
- Не используйте в методе больше трех основных параметров. Структура дополнительных параметров определяется четвертым параметром | ||
```bsl | ||
// Плохо: | ||
Процедура СоздатьЦепочкуДокументов(ДокументПоступления, ТаблицаОпераций, Отказ, | ||
ВыполнитьВФоне = Ложь, | ||
ПоказыватьПрогрессБар = Ложь, | ||
НеПоказыватьИсключения = Ложь) | ||
|
||
КонецПроцедуры | ||
|
||
// Хорошо | ||
Процедура СоздатьЦепочкуДокументов(ДокументПоступления, ТаблицаОпераций, Отказ, СтруктураДопПараметров) | ||
|
||
КонецПроцедуры | ||
``` | ||
|
||
- Обязательная аннотация методов. Полноценный комментарий к методу, придерживаясь общих правил комментирования | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Стивен Макконел в книге "Совершенный код" пишет - если ваш код требует комментариев - перепишите его, чтобы не требовал. В случае если это недостижимо ... (далее идет целая глава) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. В таком случае следует написать "Аннотация не требуется, см. наименование метода" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. А есть ли ценность в этой аннотации? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Соглашусь, ценности в этом случаем ноль получается |
||
```bsl | ||
// Плохо: | ||
|
||
// Выполняет перерасчет таблицы | ||
// Параметры | ||
// *ТаблицаДляПерерасчета - ТаблицаЗначений - Таблица значений для перерасчета | ||
// | ||
Процедура ВыполнитьПереасчетТаблицы(ТаблицаДляПереасчета) | ||
|
||
КонецПроцедуры | ||
|
||
// Хорошо | ||
|
||
// Выполняет перерасчет сумм в таблице после изменения цен для последующего | ||
// создания документа УстановкаЦенНоменклатуры | ||
// Параметры | ||
// *ТаблицаДляПерерасчета - ТаблицаЗначений - Таблица товаров с новыми ценами | ||
// | ||
Процедура ВЫполнитьПерерасчетТаблицы(ТаблицаДляПерерасчета) | ||
|
||
КонецПроцедуры | ||
``` | ||
|
||
### Условия | ||
- Предпочтительней использовать тернарный оператор для простых конструкций. | ||
|
@@ -178,6 +216,14 @@ URLСервиса = ""; | |
... | ||
КонецФункции | ||
``` | ||
- Строковые переменные следует располагать в алфавитном порядке для более легкого чтения | ||
```bsl | ||
// Плохо: | ||
ПараметрыОткрытияФормы = Новый Структура("НеОбновлятьДанныеПриОткрытии, ЗаголовокФормы, Комментарий"); | ||
|
||
// Хорошо | ||
ПараметрыОткрытияФормы = Новый Структура("ЗаголовокФормы, Комментарий, НеОбновлятьДанныеПриОткрытии"); | ||
``` | ||
|
||
### Имена процедур, функций, переменных | ||
|
||
|
@@ -204,7 +250,17 @@ URLСервиса = ""; | |
|
||
Если Не Условие И Не ПроверкаПройдена() Тогда | ||
``` | ||
### Читаемость кода | ||
- Не используйте однострочные конструкции со сложной логикой, т.к. усложняется отладка | ||
```bsl | ||
// Плохо: | ||
Наименования = Запрос.Выполнить().Выгрузить().Свернуть("Наименование").ВыгрузитьКолонку("Наименование"); | ||
|
||
// Хорошо | ||
РезультатЗапроса = Запрос.Выполнить(); | ||
ТаблицаРезультатаЗапроса = РезультатЗапроса.Выгрузить(); | ||
Comment on lines
+260
to
+261
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Для данного примера я бы не выносил There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Возможно пример получился не самый удачный (можно заменить). Главное сама суть такого подхода |
||
Наименования = ТаблицаРезультатаЗапроса.Свернуть("Наименование").ВыгрузитьКолонку("Наименование") | ||
``` | ||
### Комментарии | ||
- Если код требует комментария для пояснения работы - в первую очередь необходимо рассмотреть варианты рефакторинга, чтобы код не требовал комментария. | ||
- К комментариям также относятся ограничения на длину строки в 120 символов. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Спорный момент. Sandi Metz, достаточно известный и авторитетный разработчик в своих правилах https://thoughtbot.com/blog/sandi-metz-rules-for-developers пишет:
Не используйте более 4 аргументов, элементы структуры тоже считаются.
Для 1С можно написать 5, но прятать аргументы в структуру не лучшая рекомендация.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Начиная с 5 параметров глаз уже "начинает теряться" среди такого количества. Почему же прятать аргументы в структуру не лучшая рекомендация?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Дело в том что в среднем по больнице если у метода большое количество аргументов значит у него с большой вероятностью более одной обязанности (single responsibility principle). И это правило как раз помогает лучше структурировать код на методы, которые делают одну вещь.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Убедительно. Тут по всей видимости у каждого разработчика своя величина, +- 1