Имя: Пароль:
JOB
Работа
Псевдокод при разработке в 1С
0 Конструктор1С
 
21.12.18
12:33
1. Псевдокод must die 36% (5)
2. Свой вариант 36% (5)
3. Псевдокод must have 29% (4)
Всего мнений: 14

"Псевдокодом называют неформальную нотацию на естественном языке, описывающую работу алгоритма, метода, класса или программы. «Процесс программирования с псевдокодом» относится к конкретной методике применения псевдокода для эффективного создания кода методов.
Написав псевдокод, вы окружаете его кодом, а псевдокод превращаете в комментарии программы. Если вы руководствуетесь перечисленными правилами создания псевдокода, комментарии в вашей программе будут полными и ясными.
Написание хорошего псевдокода предполагает употребление понятного естественного языка без специфических особенностей конкретного языка программирования, а также формулировок на уровне намерений (описания сути конструкции, а не способов ее работы).
Процесс Программирования с Псевдокодом — полезный инструмент детального проектирования, упрощающий кодирование. Псевдокод транслируется непосредственно в комментарии, гарантируя их адекватность и полезность."

(с) С.Макконел, "Совершенный код"

Что думаете по поводу применения псевдокода при разработке на 1С и не только? Мне использование псевдокода очень понравилось. Недостатков в нем не нашел
1 Волшебник
 
21.12.18
12:34
Тут с обычным кодом не разберёшься, вы ещё псевдокод предлагаете...
2 palsergeich
 
21.12.18
12:35
(0) Макконел писал свою книгу для Java.
3 palsergeich
 
21.12.18
12:36
Далеко не все можно транслировать в 1С.
4 Вафель
 
21.12.18
12:37
можно пример?
5 Конструктор1С
 
21.12.18
12:37
(1) псевдокод как раз делает простой код более понятным
6 Конструктор1С
 
21.12.18
12:37
(3) большинство его рекомендаций не имеют привязки к конкретному ЯП
7 1CIlya
 
21.12.18
12:38
(0) Вроде как делаю комментарии псевдокодом, давно уже делаю. А теперь узнал, что это даже мировая практика. ИМХО помогает.

Псевдокод must have
8 1CIlya
 
21.12.18
12:41
(4)

// Для работы необходима средневзвешенная-хронологическая.

Запрос = Новый Запрос;
/// ... Далее могучий запрос по ее получению
9 Натуральный Йог
 
21.12.18
12:43
(8) Это просто камент, а не псевдокод
10 Fragster
 
гуру
21.12.18
12:43
https://habr.com/post/418303/

Сценарий: Согласованный пересчет суммы
  Когда я в поле "Количество" ввожу  10
  И я в поле "Цена" ввожу 300
  Тогда поле "Сумма" имеет значение 3000
11 Вафель
 
21.12.18
12:45
(10) такой "псевдокод" писать дольше чем обычный
12 Fragster
 
гуру
21.12.18
12:46
(11) зато он потом генерит тесты и инструкции для пользюков
13 Fragster
 
гуру
21.12.18
12:47
хотя в этом плане тестер мне нравится чуть больше
14 1CIlya
 
21.12.18
12:47
(10) ой не, жесть. Тогда нужно переголосовать.

Псевдокод must die
15 Fragster
 
гуру
21.12.18
12:48
16 Fragster
 
гуру
21.12.18
12:50
но ванесса в новом СППР/КИП вроде будет, так что надо привыкать к ней
17 Конструктор1С
 
21.12.18
12:51
Пример псевдокода

Установить статус по умолчанию в “сбой”. Найти сообщение, соответствующее коду ошибки.
  Если код ошибки корректен  
  Если работа в интерактивном режиме, вывести сообщение   и указать успешный статус.
  Если работа в режиме командной строки, запротоколировать   сообщение об ошибке и указать успешный статус.
  Если код ошибки некорректен, информировать пользователя об обнаружении внутренней ошибки.
  Вернуть статус
18 Конструктор1С
 
21.12.18
12:51
Пример кода на C++, с этим псевдокодом (форматирование упало, сорри)
/* Этот метод выводит сообщение об ошибке на основании кода ошибки, получаемого от вызывающей программы.
Способ вывода сообщения зависит от режима работы, который он определяет сам.
Он возвращает значение, указывающее на успешное завершение или сбой. */
Status ReportErrorMessage(   ErrorCode errorToReport   )
{  
    // Установить статус по умолчанию в “сбой”.  
    Status errorMessageStatus = Status_Failure;
  
   // Найти сообщение, соответствующее коду ошибки.  
   Message errorMessage = LookupErrorMessage( errorToReport );
   // Если код ошибки корректен.
if ( errorMessage.ValidCode() )
{      // Определяем метод обработки.    
    ProcessingMethod errorProcessingMethod = CurrentProcessingMethod();
     // Если работа в интерактивном режиме, вывести сообщение      
     // и указать успешный статус.      
     if ( errorProcessingMethod == ProcessingMethod_Interactive )
     {        
         DisplayInteractiveMessage( errorMessage.Text() );        
         errorMessageStatus = Status_Success;      
    }
      // Если работа в режиме командной строки, запротоколировать      
      // сообщение об ошибке и указать успешный статус.
else if ( errorProcessingMethod == ProcessingMethod_CommandLine )
{         CommandLine messageLog;        
if ( messageLog.Status() == CommandLineStatus_Ok )
{            
    messageLog.AddToMessageQueue( errorMessage.Text() );            
    messageLog.FlushMessageQueue();            
    errorMessageStatus = Status_Success;          
}
  else
  {            
      // Не можем ничего делать, так как процедура            
      // сама занимается обработкой ошибки.        
    }
else {        
    // Не можем ничего делать, так как процедура        
    // сама занимается обработкой ошибки.      
    }  
    }
   // Если код ошибки некорректен, извещаем пользователя  
   // об обнаружении внутренней ошибки.  
   else {      
       DisplayInteractiveMessage(         “Internal Error: Invalid error code in ReportErrorMessage()”      );  
       }
   // Вернуть статус.  
    return errorMessageStatus; }
19 jsmith82
 
21.12.18
12:52
чтобы kill псевдокод, нужно, чтобы он где-то был и мозолил глаза
где же он?

Свой вариант
20 jsmith82
 
21.12.18
12:52
(18) я так родственнику задачки по программированию делал
21 Конструктор1С
 
21.12.18
12:55
(10) это не псевдокод. Скорее псевдоговнокод. Нормальный псевдокод это уже готовый набор комментариев, которые осталось только завернуть в процедуры и обернуть кодом.
22 Конструктор1С
 
21.12.18
13:00
(7) как по мне, так даже упрощает разработку. Особенно когда задача сложная

Псевдокод must have
23 Nyoko
 
21.12.18
13:17
обхожусь без комментариев в основном, только в сложных местах.
При разработке использую простой принцип, каждая функция выполняет 1 действие. В процедурах все действия делаются через функции, используются модули менеджера и модули ..
Код не дублируется. Для разграничений смысловых областей кода использую #область. //тоже действует как комментарий порой

Свой вариант
24 Вафель
 
21.12.18
13:19
кстати пока в (17) псевдокод был в 1 месте - было нормально. Но как в (18) его разнесли по комментариям, то стало нечитаемо
25 mastodont
 
21.12.18
13:33
По мне так псевдокод избыточен. Как инструмент можно его иметь ввиду для сложных задач.
Лучше уж ментальное программирование. Что бы код был легкочитаемым.
26 mastodont
 
21.12.18
13:34
(24) +1 программу из (18) очень сложно читать.
27 Fish
 
21.12.18
13:41
(1) +100. Баловство это, имхо.
28 Конструктор1С
 
21.12.18
13:50
(26) там форматирование убито (из книги скопировано), плюс нет подсветки синтаксиса
29 Конструктор1С
 
21.12.18
14:00
Тот же код, только отформатированный и с подсветкой синтаксиса
http://imglink.ru/show-image.php?id=d0f790e7411c0f0d4f20161e7bc3ee9d
30 Numerus Mikhail
 
21.12.18
14:03
В 99% случаев

Псевдокод must die
31 d4rkmesa
 
21.12.18
14:08
Ох уж эта гадость, купил как то книгу "Графы в программировании" когда писал диплом, за 50$ в свое время, чуть мозг не сломал, плюнул и воспользовался либами. Ибо перевести это в C++ оказалось далеко нетривиальным делом. Дело не только в опечатках, кое-какие фрагменты в интерпретации авторского псевдокода оказалось трудно переложить в код напрямую, в итоге все оказалось долго и зря.

Псевдокод must die
32 Fragster
 
гуру
21.12.18
14:10
(29) для этого есть pastebin.com или gist.github.com
33 Конструктор1С
 
21.12.18
14:38
(30) а чем плох псевдокод?
34 Вафель
 
21.12.18
14:42
можешь реальный пример из своей практики привести?
35 ДенисЧ
 
21.12.18
14:46
ВАм что, построчно платят?

Свой вариант
36 Tonik992
 
21.12.18
14:47
(18) Не нашел псевдокода. Типа у вас сначала были комментарии и потом под ними вы строчили код?

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

Писать весь код сначала на псевдокоде не вижу смысла в 1Ске.
37 Asmody
 
21.12.18
14:50
В 1С чаще применяется говнокод
38 Tonik992
 
21.12.18
14:57
(29) Вы же читали Макконела: ваши комментариии создают шум, нагружают и не дают сосредоточиться на чтении кода.
Код очень понятно написан и так. Уберите лишнее.

Сама идея псевдокода хороша. Но не во всех случаях.
Легкие алгоритмы быстрее строятся и запоминают в голове.

Я применяю псевдокод лишь в сложных алгоритмах, когда реализую большие подсистемы. Вот там бывает в разных участках полезно выписывать порядок действий на естественном язык,  чтобы в голове картинка складывалась яснее.
39 Fish
 
21.12.18
14:58
(37) А говонокод может быть при этом псевдо- ? :)
40 shuhard
 
21.12.18
14:59
(0) регулярно использую для сложных копоративных отчетов

Псевдокод must have
41 Tonik992
 
21.12.18
15:05
У Макконела очень много интересных мыслей.. И, кажется, чтобы их все применять в коде, надо иметь не восьми-часовой рабочий день, а больше. Тут всё ситуативно.
42 Tonik992
 
21.12.18
15:13
Почему тема в ветке "Биржа труда"? Вы ищите кадров, использующих псевдокод?
43 badboychik
 
21.12.18
15:20
я использую, вещь хорошая. Когда с нуля пишешь большой блок, сначала удобно набросать обычными словами шаги или логику по пунктам, крупными мазками. Потом некоторые пункты разбиваешь на подшаги, пишешь уже с названиями процедур. Потом начинаешь каждую реализовывать.
Я думал это обычный подход нормального разработчика. А оказывается это лайфхак от самого Макконела

Псевдокод must have
44 ptiz
 
21.12.18
15:21
Код на русском языке уже достаточно понятен.

Псевдокод must die
45 Конструктор1С
 
21.12.18
15:21
(38) так это пример Макконела и есть
46 Конструктор1С
 
21.12.18
15:22
(42) не знаю. Вроде создавал в секции 1С
47 Вафель
 
21.12.18
15:25
обычно редко бывает, что знаешь как оно должно все быть, но времени нет и поэтоу просто пишешь пояснения - псевдокод.
А если и бывает, то скорее всего есть тз и переводить из тз в псевдокод нет смысла
48 Вафель
 
21.12.18
15:26
Вот например задача нарисовать форму и прописать обработчики по реквизитам.
что быстрее реально прописать их или написать необходимость их прописать?
49 ice777
 
21.12.18
15:29
(0) все не читал, но скорее всего это ТЗ и каменты.
И то, разные они бывают.
Бывает ТЗ- "чтобы всё!", а бывает что скулы сводит при чтении.
50 1CIlya
 
21.12.18
15:51
Визуальное программирование. Мышкой клац-клац и готово.
https://habr.com/post/341690/

Ждем пока 1С осознают.

Свой вариант
51 Конструктор1С
 
21.12.18
15:58
(48) псевдокод не для скорости, а скорее для удобства
52 Вафель
 
21.12.18
16:00
ну если ты переключаешься между 50 задачами - то да
53 novichok79
 
21.12.18
16:03
если задание сложное, можно в комментах накидать пару строчек.

Свой вариант
54 Конструктор1С
 
21.12.18
16:14
(52) не обязательно переключаться. Задача может быть сложная и громоздкая. В голове всё держать тяжело, да и мешает. А так накидал псевдокод, вот тебе и разбиение задачи на подзадачки, а по-совместительству и готовые комментарии для кода
55 Вафель
 
21.12.18
16:15
(54) в 1с мало СЛОЖНЫХ задач. бывают ОБЪЕМНЫЕ, но ихи описание отнимет тоже много времени
56 Вафель
 
21.12.18
16:20
кстати для обучения такой метод очень даже неплох
57 Конструктор1С
 
21.12.18
16:50
(55) а затраты времени, они относительные. Когда решаешь объемную задачу, если не проведена тщательная декомпозиция (можно сказать не написан псевдокод), то легко пойти по неправильному пути, или запутаться, и потратить время на "распутывание".

Это как подуровень процесса разработки
1. Стратегическое планирование (цели разработки)
2. Тактическое планирование (разработка проектной документации, выбор инструментов, алгоритмов и пр.)
3. Оперативное планирование (распределение задач между программистами)
4. Высокоуровневая разработка (проектирование метаданных, написание псевдокода)
5. Низкоуровневая разработка (написание кода)

так вот, если допустить просчеты на каждом из уровней, то на более низком уровне могут резко возрасти временные затраты.
58 Вафель
 
21.12.18
16:51
(57) а как же эджайл?
59 Конструктор1С
 
21.12.18
16:52
(58) agile на более высоком уровне, чем написание кода или псевдокода
60 Вафель
 
21.12.18
16:55
Раз тебе удобнее писать псевдокод - пиши. У меня. например, не вознкает потребности переложить псевдокод из головы на бумагу
61 Конструктор1С
 
21.12.18
16:57
(60) если речь идет о сложной или объемной задаче, то в голове всего не удержишь

"Дейкстра пишет, что ни один человек не обладает интеллектом, способным вместить все детали современной компьютерной программы (Dijkstra, 1972), поэтому нам — разработчикам ПО — не следует пытаться охватить всю программу сразу. Вместо этого мы должны попытаться организовать программы так, чтобы можно было безопасно работать с их отдельными фрагментами по очереди. Целью этого является минимизация объема программы, о котором нужно думать в конкретный момент времени. Можете считать это своеобразным умственным жонглированием: чем больше умственных шаров программа заставляет поддерживать в воздухе, тем выше вероятность того, что вы уроните один из них и допустите ошибку при проектировании или кодировании." (с) всё тот же Макконел
62 Вафель
 
21.12.18
16:58
(61) это если нейросети разрабатывать или еще что-то такое то вполне согласен.
а в 1с то что?
63 Вафель
 
21.12.18
17:00
(61) по кусочкам можно и так программировать.
Взял закодил, взял следующий.
Или ты взял кусочек описал, взял следуюущий описал  и тд. а потом взял 1 - закодил итд?
64 Конструктор1С
 
21.12.18
17:12
(62) любой алгоритм на несколько тысяч строк чувствителен к проектированию. Подходя к концу, уже пройдёт до нескольких дней, и буквально придется вспоминать, что там было "в начале"
(63) на середине решения задачи настанут выходные, и потом "кусочки" в голове не соберешь
65 Вафель
 
21.12.18
17:18
(64) если ты не можешь, то пиши. никто же не запрещает
66 lodger
 
21.12.18
17:20
Если псевдокод это как в (17) (18) , то

Псевдокод must die
67 Tonik992
 
21.12.18
17:25
(61) Правильно написано!
Но псевдокод - это не панацея. Нужно использовать другие методы: написать на бумажке, зафиксировать в MindJet, в Visio, в MS Project, в СППР и т.д.

Вы же всё склоняете на псевдокод. Не надо так -)
68 Конструктор1С
 
21.12.18
17:58
(67) не... я не призываю заменить псевдокодом всё что можно. Псевдокод, это лишь хорошее дополнение к обычному коду.