|
Как писать качественный код? | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
Дебет
21.12.17
✎
09:19
|
Работаем с коллегой в отделе занимающимся 1с.Оба пишем код, я хорошо понимаю администрирование 1с, а колгега хорошо понимает алгоритмы и пишет качественный код. С недавнего времени стал прикалывать что я пишу быдло код =(. Конечно когда нужно сделать еще вчера то нет времени писать качественно, делаешь просто что бы работало. Но сама мысль не дает теперь покая, как улучшить качество кода ? И есть оправдание быдло коду ?
|
|||||||
57
vde69
модератор
21.12.17
✎
10:59
|
(56) мне - нормально, недавно полез исправлять свою поделку на дельфях десятилетней давности, мне все понятно было...
|
|||||||
58
ildary
21.12.17
✎
11:01
|
(56) Не, десятилетный код - это уже не ужас, а комедия.
|
|||||||
59
Адинэснег
21.12.17
✎
11:02
|
кстати, да
найди и попроси коллег твоего тру-кодера выслать его код, который он на старте писал... поржёте вместе |
|||||||
60
Адинэснег
21.12.17
✎
11:03
|
заодно будут живые примеры гамнакода, с пояснениями автора
|
|||||||
61
Провинциальный 1сник
21.12.17
✎
11:03
|
(57) Ну дело тут не в понятности. Просто студенческие поделки кишмя кишат велосипедами, проистекающими из незнания темы. После того, как становишься в теме, свои старые проекты прямо руки чешутся переписать правильно. Только лень мешает.
|
|||||||
62
GANR
21.12.17
✎
11:14
|
Ни с одним из вариантов не согласен
|
|||||||
63
MrCoffin
21.12.17
✎
11:28
|
(3) Можно пользоваться деревенским уличным туалетом, биде и делать всё в резиновых одноразовых перчатках. И при этом писать красивый код.
|
|||||||
64
1Снеговик
гуру
21.12.17
✎
11:36
|
Красивый код - это не только читаемый, но и эффективный.
А еще он должен выполнять свою функцию, а не гонять данные ради красоты. И еще считаю важным делать проверки на заполненность, на возможность деления на 0, ограничивать ошибки пользователя. В общем, продумывать в алгоритмах наперед что в них может пойти не так. Плюс красиво работу кода подавать, рисовать интерфейс, строки состояния, вопросы при нажатии на кнопки. Ну и конечно не писать "Если Квартира.Наименование = "23" тогда" и прочие запросы в циклах. |
|||||||
65
nordbox
21.12.17
✎
11:40
|
(64)>>ограничивать ошибки пользователя.
верно. Программа должна быть ДУРАКОУСТОЙЧЕВАЯ )) |
|||||||
66
Terv
21.12.17
✎
11:43
|
(63) ссать на пол и при этом писать красивый код - это оксюморон. разруха в голове не бывает частичной.
|
|||||||
67
art commander
21.12.17
✎
11:58
|
(0) Код не бывает красивый или некрасивый. С объективной точки зрения, всякий код - убожество (субъективно - код может казаться красивым его автору). Код бывает работающим и не работающим.
|
|||||||
68
Адинэснег
21.12.17
✎
13:22
|
ТС про красоту ни слова не писал
|
|||||||
69
art commander
21.12.17
✎
15:18
|
(68) Можешь заменить "красивый" на "качественный" без потери смысла.
|
|||||||
70
lodger
21.12.17
✎
15:28
|
(67) есть (два стула, на одном ...) два куска кода.
делают одно и то же, делают это успешно. первый написан одной процедурой в 1000 строк без комментариев с цикличными неявными чтениями бд по десятку раз за круг, другой оформлен модулем с несколькими точками входа в экспортных процедурах, параметризуются по потребности, повторяемые части кода вынесены в функции, сперва происходит сбор всех необходимых данных, отдельно цикличная математика и блоки условий, постобработка. какой сам напишешь, какой у коллеги прочитаешь? |
|||||||
71
be-may
21.12.17
✎
15:29
|
Нет единого рецепта.
Меня, например дико раздражают чьи-то переменные названные примерно так : Параметр Параметр Параметр Видимо, на сях сидел человек когда-то. Вроде ж ничего такого, но не нравится)) Еще переменные типо КакаяТоНеведомаяХерня = .. ну как так можно вообще.. |
|||||||
72
be-may
21.12.17
✎
15:30
|
упс..
форматировался текст в (71) Имелось в виду параметр, начинающийся с одного, двух , трех или более символов нижнего подчеркивания. |
|||||||
73
be-may
21.12.17
✎
15:33
|
еще из "не люблю".
Не люблю когда пишут, так, будто экономят "бумагу" Если ... Тогда .. Иначе .. КонецЕсли и это все на одной строке. |
|||||||
74
MrCoffin
21.12.17
✎
15:34
|
(66) Не на пол, а в специально проделанное для этого отверстие в полу.
|
|||||||
75
Fish
21.12.17
✎
15:44
|
(0) "Как писать качественный код?" - Качественный код писать очень просто: надо писать его качественно! :)
|
|||||||
76
art commander
21.12.17
✎
15:47
|
(70) И то и другое - убожество.
|
|||||||
77
Timon1405
21.12.17
✎
15:49
|
(73) так код быстрее выполняется. серьезно.
выполните код и сравните результаты Для Сч=1 по 10000000 цикл Если 2=1 Тогда а=1 иначе а=2 КонецЕсли; КонецЦикла; Для Сч=1 по 10000000 цикл Если 2=1 Тогда а=1 Иначе а=2 КонецЕсли; КонецЦикла; |
|||||||
78
Terv
21.12.17
✎
15:55
|
(77) толсто
|
|||||||
79
0xFFFFFF
21.12.17
✎
15:55
|
(75) Ну или так: Чтобы писать качественный код, не нужно писать некачественный.
|
|||||||
80
Terv
21.12.17
✎
15:56
|
(79)"Делай хорошо - плохо само получится. " (цы)
|
|||||||
81
nordbox
21.12.17
✎
21:03
|
(0)https://habrahabr.ru/post/328864/
Завтра тяпница, почитаешь |
|||||||
82
echo77
21.12.17
✎
21:08
|
(5) +1
Еще попросите коллегу устраивать вам "ревизию кода" - это перед тем как пустить в продакшн - показываете ему код, он говорит, что надо переделать, как делать нельзя, что надо исправить и на что. Я так своих коллег ростил, передавал им свой опыт, что-то узнавал от них. Много кода писать |
|||||||
83
echo77
21.12.17
✎
21:08
|
Вредные советы: http://catalog.mista.ru/public/391560/
|
|||||||
84
nicxxx
21.12.17
✎
22:41
|
(77) а так еще быстрее будет:
Для Сч=1 по 10000000 цикл Если 2=1 Тогда а=1 иначе а=2 КонецЕсли; КонецЦикла; |
|||||||
85
nicxxx
21.12.17
✎
22:42
|
(78) а ты возьми и замерь. толсто ему...
|
|||||||
86
jsmith82
21.12.17
✎
22:46
|
Тема ни о чём
|
|||||||
87
ejikbeznojek
21.12.17
✎
23:36
|
из того, что в этой теме прочитал, на вид правильнее всего (12)
Начни с малого, тяжело написать качественно большой объём кода. Напиши качественно маленькую функцию и качественный её вызов. |
|||||||
88
tesseract
21.12.17
✎
23:38
|
Этой фразе лет 40:
Каждый раз читая свой год 5-летней давности, понимаешь, что его писал какой-то дебил. |
|||||||
89
be-may
21.12.17
✎
23:43
|
(84) угу, а если пробелы почистить , то еще быстрее..
---- и что, часто надо организовывать цикл типо Для Сч=1 по 10000000 цикл ... ? ИМХО, экономия на спичках. Не в том месте надо время экономить |
|||||||
90
France
21.12.17
✎
23:53
|
(0) если фикси - забей... для фикси нет понятия быдло-код..
если франь - напрягись... |
|||||||
91
H A D G E H O G s
21.12.17
✎
23:54
|
(0) Плохой код пишется долго.
Если ты пишешь код долго - ты написал его плохим, убей его. |
|||||||
92
Роки
21.12.17
✎
23:57
|
(0) Хороший код - мертвый код
|
|||||||
93
VladZ
22.12.17
✎
04:41
|
(90) Зря ты так. Плохой код портит карму. Оставишь его потомкам - они проклянут автора кода и нашлют на него проклятия "бедности и нищеты"...
|
|||||||
94
nordbox
22.12.17
✎
08:03
|
(93) ты уверен что потомки поймут что такое 1с и раcшифруют код?
|
|||||||
95
Злопчинский
22.12.17
✎
08:06
|
Давайте решать проблемы по мере их возникновения
|
|||||||
96
nordbox
22.12.17
✎
08:08
|
+94 Наши потомки будут так же как мы )))
http://d.radikal.ru/d20/1712/cb/9ee1839d547e.jpg |
|||||||
97
ildary
22.12.17
✎
08:39
|
Хочу задать вопрос по теме: как лучше называть куски кода, когда надо в свою обработку вставить некий кусок (например функцию из общего модуля), и внести в неё изменения? Единственное что приходит в голову: писать в комментарии "Заимствованный код", но уж больно сложное слово, хотелось бы попроще (без потери смысла).
|
|||||||
98
Mort
22.12.17
✎
08:44
|
(97) И кому будет полезен этот комментарий? Всем пофиг откуда ты её скомуниздил.
|
|||||||
99
golem14
22.12.17
✎
08:44
|
(81) почитал и поборол в себе Эффект Даннинга — Крюгера
|
|||||||
100
Mort
22.12.17
✎
08:50
|
(90) Имхо как раз наоборот, у фикси есть достаточно свободного времени, чтобы вылизать код, а франи оставляют первый работающий вариант, нет времени для этого. Мы вот юзаем франей, и от многих их спецов отказались по причине обнаруженного г-кода, и сейчас всё очень даже сносно.
|
|||||||
101
ildary
22.12.17
✎
08:54
|
(98) Хочу писать подобное для себя, чтобы через год самому было проще вспомнить. Или при обновлении базы - не бегать по всем обработкам вручную, а искать по тегу в комментарии.
|
|||||||
102
VladZ
22.12.17
✎
09:00
|
(101) В данном случае достаточно коммента "Добавил Вася Пупкин, 22 декабря 2017г".
|
|||||||
103
Mort
22.12.17
✎
09:08
|
(101) Даже не знаю, что сложнее: соблюдать всю эту бюрократию или раз в год разобраться что отвалилось и почему. Причем с бюрократией есть один нюанс...
Все эти строительные леса в виде якорей в коде, 100% покрытия тестами и прочие перделки так и не образовали устойчивые стандарты, ибо снижают количество ошибок не до нуля, а на процент. И вопрос о том, что важнее - протерянные ресурсы на поддержку всего этого или гипотетические ошибки в продукте очень сильно зависит от области применения. Не все космические корабли программируют. Ща набегут упоротые TDDшники. |
|||||||
104
Nyarlathotep
22.12.17
✎
09:08
|
(0) "что я пишу быдло код"
Забей. Придирки к качеству кода - это задротство, а твой коллега - задрот. "Качество кода" - понятие сугубо индивидуальное, у каждого оно свое. Если задача решена в срок, все работает правильно и не тормозит - значит все ок и код качественный. Ориентируйся на результат, а не на процесс. Много кода писать |
|||||||
105
ildary
22.12.17
✎
09:13
|
(102) как найти все вытащенные из общих модулей процедуры и функции, если у них нет общего тега?
(103) Конечно это всё бюрократия, вот только когда переходишь с одной подверсии конфигурации на другую, вся эта бюрократия так выручает! Из моего недавнего прошлого УТ - 11.1->11.2-11.3. И из предстоящего - 11.4. |
|||||||
106
Nyarlathotep
22.12.17
✎
09:18
|
(19) Убогий.
|
|||||||
107
VladZ
22.12.17
✎
09:26
|
(105) Общий тег "Вася Пупкин"
|
|||||||
108
VladZ
22.12.17
✎
09:32
|
(104) Есть такое понятие как "сложность поддержки информационной системы". Чем хуже код - тем сложнее его поддерживать. Нужны дополнительные ресурсы. А это деньги. На плохом коде организация будет терять деньги.
|
|||||||
109
Nyarlathotep
22.12.17
✎
09:35
|
(108) А по каким критериям отделять "плохой код" от "хорошего"?
|
|||||||
110
Buster007
22.12.17
✎
09:44
|
(106) покажешь свой "гениальный" код?
|
|||||||
111
ildary
22.12.17
✎
09:48
|
(107) тег "Вася Пупкин" - общий для любого добавления, поэтому для моего случая не подходит.
|
|||||||
112
Nyarlathotep
22.12.17
✎
09:51
|
(110) Нет :)
|
|||||||
113
VladZ
22.12.17
✎
10:09
|
(109) Давай я покажу тебе код, а ты реши. Итак, процедура формирования ТТН на вывоз (часть кода):
ОбластьСтрока.Параметры.ТоварНаименование = "Боковина без лестницы"; ОбластьСтрока.Параметры.КодПродукции = ""; ОбластьСтрока.Параметры.НомерПрейскуранта = СтрСчет.СчетНаОплату.ДоговорКонтрагента.Номер; ОбластьСтрока.Параметры.Артикул = ""; ОбластьСтрока.Параметры.Количество = 2 * Коэффициент; ОбластьСтрока.Параметры.КоличествоМест = ""; ОбластьСтрока.Параметры.БазоваяЕдиницаНаименование = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); ОбластьСтрока.Параметры.ВидУпаковки = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); ТабДокумент.Вывести(ОбластьСтрока); ОбластьСтрока.Параметры.ТоварНаименование = "Боковина с лестницей"; ОбластьСтрока.Параметры.КодПродукции = ""; ОбластьСтрока.Параметры.НомерПрейскуранта = СтрСчет.СчетНаОплату.ДоговорКонтрагента.Номер; ОбластьСтрока.Параметры.Артикул = ""; ОбластьСтрока.Параметры.Количество = 2 * Коэффициент; ОбластьСтрока.Параметры.КоличествоМест = ""; ОбластьСтрока.Параметры.БазоваяЕдиницаНаименование = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); ОбластьСтрока.Параметры.ВидУпаковки = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); ТабДокумент.Вывести(ОбластьСтрока); ОбластьСтрока.Параметры.ТоварНаименование = "Перекладина"; ОбластьСтрока.Параметры.КодПродукции = ""; ОбластьСтрока.Параметры.НомерПрейскуранта = СтрСчет.СчетНаОплату.ДоговорКонтрагента.Номер; ОбластьСтрока.Параметры.Артикул = ""; ОбластьСтрока.Параметры.Количество = 2 * Коэффициент; ОбластьСтрока.Параметры.КоличествоМест = ""; ОбластьСтрока.Параметры.БазоваяЕдиницаНаименование = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); ОбластьСтрока.Параметры.ВидУпаковки = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); ТабДокумент.Вывести(ОбластьСтрока); |
|||||||
114
VladZ
22.12.17
✎
10:15
|
еще пример:
Процедура МояМегаПроцедура() Если УсловиеВыполяется Тогда // тут 100500 строк кода КонецЕсли; КонецПроцедуры |
|||||||
115
Адинэснег
22.12.17
✎
10:21
|
(90) новый анекдот
"Франч без быдлокода" ... в довесок к "Франч покрыл всю систему тестами" |
|||||||
116
Nyarlathotep
22.12.17
✎
10:23
|
(113) (114) И что я должен решить?
|
|||||||
117
Адинэснег
22.12.17
✎
10:25
|
Для Сч=1 по 10000000 цикл
Если 2=1 Тогда а=1 Иначе а=2 КонецЕсли; КонецЦикла; так еще быстрее: а=2; Сч = 10000000; |
|||||||
118
nordbox
22.12.17
✎
10:26
|
(115)>>"Франч без быдлокода" ...
ты еще скажи франч- без студентов |
|||||||
119
Адинэснег
22.12.17
✎
10:27
|
(118) без дошика
|
|||||||
120
Nyarlathotep
22.12.17
✎
10:28
|
(119) Про Дошик не надо, Дошик - это святое :)
|
|||||||
121
Адинэснег
22.12.17
✎
10:29
|
(113) когда забанили в конструкторе запросов...
|
|||||||
122
MaxS
22.12.17
✎
10:31
|
(40) Странный программист. Не настроены приоритеты по прерываниям. Более важные дела должны были прервать выполнение и выйти из цикла.
|
|||||||
123
nordbox
22.12.17
✎
10:34
|
(122) у него обработчик прерывания был кривой
Звонок с телефона не предавался как параметр, потому что в другой комнате был ) |
|||||||
124
Terv
22.12.17
✎
11:09
|
(85) еще толще
троллей развелось тут я смотрю |
|||||||
125
ildary
22.12.17
✎
11:27
|
В итоге решил скопированный и измененный код помечать вот так:
//Вытащено из ЧекККМ.НастроитьПраваДляПользователя() для того и сего |
|||||||
126
Timon1405
22.12.17
✎
11:34
|
||||||||
127
Nyarlathotep
22.12.17
✎
11:37
|
(125) Я типовой вообще никогда не трогаю, делаю вот так:
//Nyarlathotep 22.12.2017 мояпочта@почтовыйсервер.ru { //По задаче "Тут название задачи", автор задачи - "Тут автор задачи" //Тут описание функционала добавляемого/изменяемого кода //Закомментировал { Тут закомментированный типовой код без изменений // } Закомментировал Тут мой добавленный/измененный код // } Nyarlathotep 22.12.2017 мояпочта@почтовыйсервер.ru |
|||||||
128
Nyarlathotep
22.12.17
✎
11:40
|
(127) Таким образом откат к типовому функционалу решается комментированием/раскомментированием пары находящихся рядом секций кода, в случае чего.
|
|||||||
129
Nyarlathotep
22.12.17
✎
12:10
|
Срача по поводу того, чей же код правильнее, я так понимаю, не будет? :)
|
|||||||
130
nordbox
22.12.17
✎
12:31
|
(129) коментов в коде будет больше чем самого кода )
|
|||||||
131
Адинэснег
22.12.17
✎
12:32
|
(129) тут даже срача франч/фикси нет... все выдохлись на Мисс Бюст
|
|||||||
132
Адинэснег
22.12.17
✎
12:35
|
// { Автор Задача
//Закоментированный //типовой //код //// Коммент из типового кода Новый код // коммент мой // } |
|||||||
133
brznzglwgn
22.12.17
✎
12:35
|
Смотря где..
В 1С половина написания кода это найти место внутри 10 вложенного проваливания в функции, далее там твой "качественный" код будет базироваться на уже написанном "высококачаственном" и понятном коде от 1С. |
|||||||
134
ADirks
22.12.17
✎
12:36
|
(113) недавно пришлось в ЗиКе семёрошном переделывать какое-то расчет, а там на 90% код копипастой написан, ну и как в (114) тоже. Сломал весь моск, пытаясь найти, куда бы впилится. Плюнул, занялся рефакторингом... ну небыстро да... Через какое-то время код сократился в 10 (десять) раз, и наконец-то стало всё понятно. Заодно работать стало быстрее раза в три.
Вот вам и "лишь бы работало". |
|||||||
135
Адинэснег
22.12.17
✎
12:36
|
(132) в комменте только номер задачи из системы регистрации задач/проблем/инцидентов
|
|||||||
136
nordbox
22.12.17
✎
12:39
|
короче, вот так получается ))
https://www.youtube.com/watch?v=JsG94qngMNU |
|||||||
137
Terv
22.12.17
✎
12:50
|
(126) И?
ты хочешь доказать присутствия мозга у людей, которые закладываются на особенности компилятора при разработке не embedded-систем? особенно учитывая, что их нормо-час стоит часто несколько новых процессоров. или нынче в технических вузах перестали преподавать экономику и заставлять обсчитывать экономическую эффективность своей работы? |
|||||||
138
kyvv
22.12.17
✎
13:03
|
||||||||
139
ildary
22.12.17
✎
13:26
|
(134) мне интересно, когда-нибудь разработчики БСП почувствуют, что ушли немного не туда и займутся наведением порядка?
|
|||||||
140
ADirks
22.12.17
✎
13:33
|
(139) с чего вдруг? у них стандарты такие, всё абсолютно нормально.
|
|||||||
141
echo77
22.12.17
✎
13:41
|
(97) Пишу перед функцией комментарий:
// Сперто из общего модуля... |
|||||||
142
33554432
22.12.17
✎
13:42
|
С красивым кодом все непросто. Заказчик просит сделать быстро и еще вчера, как обычно. Ты либо делаешь как быстрее, либо получаешь под зад. Как быстрее, это как привычнее, даже если не красиво. Кто заморачивается на красоту под зад получает чаще при равноценной конкуренции. А кто пишет некрасиво получает под зад, если наталкивается на любителя красоты со стороны заказчика, но это реже.
|
|||||||
143
ildary
22.12.17
✎
13:44
|
(141) Хорошо, но немного грубовато. Я плохой, на быструю руку накаляканный код помечаю как //Костыль и молюсь, чтобы это место никто не увидел. Пока красивую замену слову "Костыль" не нашёл.
|
|||||||
144
echo77
22.12.17
✎
13:48
|
(143) Можно писать :
// Взять из Документ.СчетФактураВыданный.МодульМенеджера |
|||||||
145
Nyoko
22.12.17
✎
13:55
|
Читать ИТС. По быдлокоду просто конкретно спросить где сделал ошибку, и дальше много кода писать.
Читать \"чужой\" код |
|||||||
146
DomovoiAtakue
22.12.17
✎
13:55
|
(0)А можно примеры?
Обычно быстрее написать сразу нормально. |
|||||||
147
_Дайвер_
22.12.17
✎
13:59
|
Возврат;
КонецПроцедуры |
|||||||
148
nordbox
22.12.17
✎
14:09
|
Первая мысль от бога(как бы быстро), вторая лукавого(быдлкод) ))
|
|||||||
149
Nyarlathotep
22.12.17
✎
14:17
|
(134) "код сократился в 10 (десять) раз, и наконец-то стало всё понятно. Заодно работать стало быстрее раза в три."
Вот бы с типовыми также. |
|||||||
150
ADirks
22.12.17
✎
14:26
|
(149) ну кагбе это и была типовая конфа :))
И там всегда будет так, как завещал гражданин в (142). Причём чем дальше, тем хуже, ибо г. имеет свойство накапливаться. |
|||||||
151
Hans
26.12.17
✎
09:14
|
подпишусь
|
|||||||
152
hhhh
26.12.17
✎
09:45
|
(128) такой коммент возможен, только если одна вставочка. А обычно как бывает
//Nyarlathotep 22.12.2017 мояпочта@почтовыйсервер.ru { //По задаче "Тут название задачи", автор задачи - "Тут автор задачи" //Тут описание функционала добавляемого/изменяемого кода //Закомментировал { Тут закомментированный типовой код без изменений в нем вася Пупкин такой-то год тут же здесь быол Гриша. тут же Nyarlathotep 2013 опять типовой опять Вася Пупкин. и опять продолжение //Nyarlathotep 22.12.2017 мояпочта@почтовыйсервер.ru И в итоге такой бред получается. Особенно если одну строчку комментировали сразу несколько человек. Ну или один человек, но с интервалом в 2 года. |
|||||||
153
Злопчинский
26.12.17
✎
10:01
|
(108) и что, много, например 1сников модифицирует исходный код? Именно модифицирует, а не лепит нашлепки?
|
|||||||
154
DenVaz
26.12.17
✎
10:10
|
Спроси любого "программиста" - адынесники "не программисты". Отсюда следует: пиши любой код - всем пофер.
|
|||||||
155
patria0muerte
26.12.17
✎
10:20
|
У нас для типового кода используется безымянная вставка
//--> PRS Тут изменения //--< PRS Остальная информация по изменениям - в шапке молуля по датам: кто, что, когда, зачем (по какой задаче). Ну и плюс - хранилище, в котором более подробно все в комментариях расписано Для пиления старой УПП - хватает за глаза |
|||||||
156
D_E_S_131
26.12.17
✎
11:14
|
В (15) собственно все написано, но подобного варианта в голосовашке нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |