The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Атака Trojan Source для внедрения изменений в код, незаметных для разработчика, opennews (ok), 01-Ноя-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


15. "Атака Trojan Source для внедрения изменений в код, незаметны..."  –9 +/
Сообщение от Аноним (15), 01-Ноя-21, 22:26 
рили? за такой код нужно нещадно бить по рукам!

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

Ответить | Правка | Наверх | Cообщить модератору

44. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +7 +/
Сообщение от myhand (ok), 02-Ноя-21, 04:22 
> во-первых, код должен быть самодокументируемым.

Мамкин погромист писал что-то сложнее хеллоуворлда?

> только многострочные, только с новой строки

Это не поможет, если я правильно понимаю метод.

Ответить | Правка | Наверх | Cообщить модератору

48. "Атака Trojan Source для внедрения изменений в код, незаметны..."  –6 +/
Сообщение от Аноним (48), 02-Ноя-21, 05:46 
>> во-первых, код должен быть самодокументируемым.
>Мамкин погромист писал что-то сложнее хеллоуворлда?

Понять содержимое метода обычно нетрудно. Все ведь умеют читать! Но это только при условии, что документация на каждую функцию и структуру есть в .html/info. Комментарии внутри функций как правило бесполезны, если там какой-нибудь WARNING/TODO/HACK не написан. Право на жизнь имеют только псевдокомментарии для автоматического генератора документации, но если она локализирванна и требует юникода, то этот код будут хейтить все программисты мира.

Ответить | Правка | Наверх | Cообщить модератору

52. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +1 +/
Сообщение от myhand (ok), 02-Ноя-21, 07:46 
>>> во-первых, код должен быть самодокументируемым.
>>Мамкин погромист писал что-то сложнее хеллоуворлда?
> Понять содержимое метода обычно нетрудно. Все ведь умеют читать!

На, читай:
https://www.researchgate.net/publication/221564800_On_factor...

Буржуинский-то хоть знаешь, гуру? :)

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

Такое впечатление, будто все "программисты мира" (тм) (r) сидят в каких-то допотопных
консолях с шириной экрана в 80 символов и ASCII.  Вот только прокрутку в Linux-консоли
поддерживать почему-то было некому...

Ответить | Правка | Наверх | Cообщить модератору

63. "Атака Trojan Source для внедрения изменений в код, незаметны..."  –2 +/
Сообщение от Аноним (61), 02-Ноя-21, 08:15 
А тебе не приходило в голову что это не из-за консоли, а из-за того что так просто удобнее читать код. Нет? ну подумай об этом на досуге. Заодно о своём стайлгайде как ты думаешь почему твой разорви экранный код удобно читать только тебе?
Ответить | Правка | Наверх | Cообщить модератору

74. "Атака Trojan Source для внедрения изменений в код, незаметны..."  –1 +/
Сообщение от myhand (ok), 02-Ноя-21, 08:49 
> А тебе не приходило в голову что это не из-за консоли, а
> из-за того что так просто удобнее читать код. Нет?

Тебе вот что удобнее было бы читать?  alpha или α?  А если
формула с однобуквенными обозначениями
один-в-один совпадет с тем, что написано в статье, а всякие
alpha, beta, гаммы - сделают ее на пяток строк, вместо одной?

> Заодно о своём стайлгайде как ты думаешь
> почему твой разорви экранный код удобно читать только тебе?

На основании чего ты так подумал?

Ответить | Правка | Наверх | Cообщить модератору

100. "Атака Trojan Source для внедрения изменений в код, незаметны..."  –2 +/
Сообщение от Аноним (61), 02-Ноя-21, 09:40 
> На основании чего ты так подумал?

Есть такая штука она называется "Логика" погугли на досуге, но до тебя она точно не дойдет.

Ответить | Правка | Наверх | Cообщить модератору

102. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +1 +/
Сообщение от myhand (ok), 02-Ноя-21, 10:01 
Логика, мой дорогой юный друг, не может работать без некоторой базы фактов и правил.  Какова она в твоем случае?
Ответить | Правка | Наверх | Cообщить модератору

151. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +/
Сообщение от Тот_Самый_Анонимус (?), 02-Ноя-21, 14:17 
>Тебе вот что удобнее было бы читать?  alpha или α?

Мне удобнее «альфа», а не латинизированное алпха. И?

Ответить | Правка | К родителю #74 | Наверх | Cообщить модератору

155. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +/
Сообщение от myhand (ok), 02-Ноя-21, 15:03 
"альфа" - в ASCII не влазит, тоже харам.  И размер формулы вряд-ли сильно скукожит.

> И?

Да ничего.  Главное, чтоб ндравилось.

Ответить | Правка | Наверх | Cообщить модератору

160. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +/
Сообщение от Тот_Самый_Анонимус (?), 02-Ноя-21, 16:37 
>"альфа" - в ASCII не влазит

И чо? Значит аски — не нужен.

Ответить | Правка | Наверх | Cообщить модератору

123. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +3 +/
Сообщение от Ordu (ok), 02-Ноя-21, 12:09 
> А тебе не приходило в голову что это не из-за консоли, а из-за того что так просто удобнее читать код.

Приходило. Но как показывают исследования, программисты читают комментарии. eye-tracker'ом следили за программистом, изучающим код, и чётко показали, что программисты читают комментарии. Если бы комментарии только мешали, они бы не читали их.

Тут я могу встречный вопрос задать: а тебе не приходило в голову, что комментарии могут быть полезны? И если приходило, то какие действия ты предпринимал, чтобы найти ответ на этот вопрос?

Ты сам пишешь выше:
> Комментарии внутри функций как правило бесполезны, если там какой-нибудь WARNING/TODO/HACK не написан
> как правило

Да, как правило. Но это одно из тех правил, которые выполняются в 95% случаев, и всегда остаются неустранимые 5% других случаев, когда комментарии нужны.

> какой-нибудь WARNING/TODO/HACK

Во-во, например в этих случаях. Или, скажем, когда ты используешь какой-нибудь совсем не очевидный алгоритм. Из тех, которые ты вычитал в статье по мотивам диссертации на PhD, и два дня переваривал статью, чтобы понять, как вообще это работает. И после этого, ты реализовал алгоритм оттуда на выбранном языке программирования, добавил в начало кода ссылку на статью, дал краткое, упрощённое объяснение основной идеи алгоритма, а потом ещё в своей реализации расставил комменты вида "тут мы используем адаптированный баблсорт, потому что массив почти отсортирован (максимум два элемента могут быть не на месте), и баблсорт в таком случае порвёт все квиксорты" или "этот цикл соответствует врезке кода 3.2 из статьи".

Код надо писать так, чтобы когда ты через полгода будешь читать этот код, ты бы смог разобраться в нём минимумом усилий. Не гадать почём зря "а не будет ли здесь квиксорт быстрее", или о том "что это за хрень такая, и где об этом в статье написано".

Хочешь ещё примеров, когда комменты внезапно оказываются нужны? Неочевидный edge-case, ради которого тут надо поставить проверку, и совершить пару дополнительных телодвижений, или наоборот прервать работу раньше времени. Иногда проверка на неочевидный edge-case делает edge-case очевидным, но не всегда. В некоторых случаях это выглядит бессмыслицей: "ну и что, что node->depth % 3 == 2"? Чем нам ноды с глубиной равной двум по модулю три не угодили? Тебе не приходилось сталкиваться с таким? Когда одна дурацкая непонятная проверка требовала остановиться, и десять минут сочинять такой случай, когда она сработает, и потом ещё полчаса думать, почему в этом случае надо досрочно завершать работу алгоритма с ошибкой? Гайды по работе с кодом, часто в таком случае рекомендуют, разобравшись в случае, проконсультироваться с другими о том, правильно ли ты понял, и дописать в код комментарий, изложив вкратце свои находки, с тем чтобы следующий, кто будет читать этот код, не тратил бы столько времени на понимание.

Или, скажем, коммент вида "здесь нет нужды проверять всю эту кучу указателей на NULL, а индексы на выход за границы, потому что..." и далее следует какое-то объяснение этому.

Или тебе всё это вышесказанное ни о чём не говорит? Твоё мышление догматично, и ты слепо веришь признанным авторитетам? Ок, давай зайдём с этой стороны. Для тебе Торвальдс авторитет? Открой CodingStyle linux и почитай там, что написано о комментах. И ты увидишь там что-то типа (я по памяти, сорри): комменты нужны на top-level'е, перед функцией, и они должны отвечать на вопрос "что?" -- что функция делает; комменты в теле функции нежелательны, но если они есть, они должны отвечать на вопрос "как?" -- как функция делает то, что она делает; комменты внутри нежелательны, потому что код должен быть самоописательным, но иногда это невозможно -- есть семантический разрыв между кодом и задумкой программиста, и его не всегда можно устранить переписав код иначе, и в таких случаях, комменты нужны. CodingStyle linux не запрещает комменты, более того явно разрешает, оговариваясь при этом, что по-возможности надо писать так, чтобы комменты были бы не нужны.

Но догматизм или нет, CodingStyle linux'а заточен под C и 80x25 окно текстового редактора. Первое просто не обсуждается, а второе -- технические ограничения из 90-х. (Если ты почитаешь внимательно этот CodingStyle, то увидишь прямые отсылки к этим самым техническим ограничениям). Сегодня эти технические ограничения неактульны (глянь на это[1], например), а C используется не во всех проектах. В C++, например, 80 строк -- это дурацкое ограничение которое не работает, потому что строчки длинее, там может быть что-нибудь типа for(auto iter = my_collection.begin(); iter != my_collection.end(); iter ++), и это что-то может оказаться на два-три уровня идентации сдвинуто. Отчасти это забарывают отказом от табов шириной в 8 пробелов, но даже этого часто недостаточно. И ежели ты сегодня начинаешь новый проект, я тебе очень серьёзно рекомендую подумать о том, чтобы ограничить ширину строки значением побольше -- чем-нибудь из диапазона 90..110.

[1] https://blog.immersed.team/working-from-orbit-39bf95a6d385?g... Если лень читать эту стену текста, то поиском по странице поищи "glance" и позырь на скриншот. 80x25? Хаха.

Ответить | Правка | К родителю #63 | Наверх | Cообщить модератору

126. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +/
Сообщение от Урри (ok), 02-Ноя-21, 12:16 
Вы прослушали короткую вырезку из "Стив Макконел. Совершенный код".
Ответить | Правка | Наверх | Cообщить модератору

124. "Атака Trojan Source для внедрения изменений в код, незаметны..."  +/
Сообщение от Урри (ok), 02-Ноя-21, 12:13 
А я использую редактор кода, а не less.
И в нем есть комбинация 'Alt+Z', которая включает автоматический перевод слишком длинных строк.

Удобно! Попробуй.

Ответить | Правка | К родителю #63 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру