Здравствуйте, netch80, Вы писали:
M>>>>.ua не открывается N>>>Поставил на другую локацию, M>>Я ж говорю, .ua не открывается, а ты опять на .ua выложил
N>У вас всё по DNS ещё и зафильтровано? Я такой глупости не ожидал.
У нас? Я подозреваю, что это как раз на UA стороне запросы из РФ зафильтрованы. Потому что UA сайты у меня почти все не открываются вне зависимости от провайдера. И да, не по DNS, имя то оно находит, а потом полчаса висит в режиме загрузки страницы, а потом обычно "сайт сбросил соединение"
Да, это довольно уродски. Это как раз газетный стиль. Для компактного представления выбран мелкий шрифт, но делать строки на всю ширину этим шрифтом — было бы таки хуже
Здравствуйте, swame, Вы писали:
S>И всякие мерджи гита на таком плохо будут работать.
Встроенный merge в гите очень примитивен, и этом намеренно.
А вот если сконфигурировать внешний мержер — он сможет и такие вещи отрабатывать, и вообще сколь угодно сложную логику. Интерфейс для подключения стандартизован (точнее, есть несколько поддерживаемых интерфейсов).
S>Я при дежживаюсь второго стиля и на своем коде форматтером не пользуюсь, он не нужен просто .
При коллективной разработке это таки долго не сработает...
Здравствуйте, netch80, Вы писали:
vsb>>В современном инструментарии всё чаще используют автоматический форматтер. В последние годы во всех своих проектах я использую именно такой подход. Чем меньше свободы в форматировании кода, тем лучше. gofmt, prettier, python black, clang-format, ну и в принципе почти в любой IDE есть подобный функционал.
vsb>>И вот если принять за аксиому, что код программистом никак не оформляется, а представляет из себя "жидкую" структуру, которую форматтер может на лету форматировать как душе угодно, тогда вопрос с шириной кода можно вообще отдать на откуп предпочтениям программиста. Открыл код на широком мониторе — форматтер его автоматически отформатировал хоть на 300 колонок. Открыл его в интерфейсе слияния файлов — код переформатировало в 100 символов. При этом на диске он лежит в некоем каноничном виде, и все эти переформатирования никак на это не влияют, это исключительно функционал для отображения.
N>Это можно сделать самому. При приёме кода в своё редактирование исправляешь на свои параметры, перед коммитом — загоняешь обратно в местный стандарт. N>Вопрос в том, что нет гарантии, что при этом не получится изменения тех частей, которые ты не трогал. С современными форматтерами нет такой гарантии. N>Вот если подберёшь заведомо беспроблемный вариант — тогда можешь считать, что всё окончательно OK...
Да, согласен, принципиальной проблемы нет, вопрос только в нюансах и инструментарии.
Вообще я когда-то читал про среду программирования, где код хранился в AST, в бинарном виде вроде. А при редактировании уже было примерно как я написал. Эти мои мысли примерно оттуда и пошли. Просто я считаю, что хранить код в AST это уже излишество, вполне можно его форматировать в читабельный текстовый вид, но тем не менее относиться к этому нужно, как к AST. Типа у нас есть JSON, мы его можем красиво напечатать с отступами, но суть того, что это структура данных, это не изменит.
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, Marty, Вы писали:
A>>>Часто приходится писать очень структурированный код. Вложенность на пять-шесть уровней, и отступ четыре символа.
M>>Прямо таки просится на рефакторинг по нескольким функциям
bnk>А если камаз под водой это YAML или HTML?
YAML на 6 уровней писать руками- время отлетать кукухой.
Значит надо редизайнить, разбивать на части с уменьщением вложенности, склеивать динамически.
Если это сгенерировано автоматом и надо посмотреть, внеси мелкое исправление — нет проблем.
Здравствуйте, swame, Вы писали:
vsb>>Ещё хочу предложить мысль для обдумывания.
vsb>>В современном инструментарии всё чаще используют автоматический форматтер. В последние годы во всех своих проектах я использую именно такой подход. Чем меньше свободы в форматировании кода, тем лучше. gofmt, prettier, python black, clang-format, ну и в принципе почти в любой IDE есть подобный функционал.
S>Нет. одно и тоже можно написать длиной цепочкой, или несколькими последовательными операторами. S>Это делает программист. Не форматтер. S>Если что-то сдизайнено под длинную цепочку и потом автоматом форматируется, оно становится уже совсем нечитаемым. S>И всякие мерджи гита на таком плохо будут работать. S>Я при дежживаюсь второго стиля и на своем коде форматтером не пользуюсь, он не нужен просто . S>Если только откуда-то достался какой-нибудь неряшливо отформатированный код и надо разобраться, тогда можно форматнуть.
Этот подход понятен, но повторюсь, в современных проектах всё чаще используется автоматическое форматирование. Это не я придумал, это можно считать уже общепринятым подходом. В том же go этот форматтер прям в поставку компилятора встроен. Если в таком проекте запушить самостоятельно отформатированный код, он просто не пройдёт валидацию и автора попросят настроить своё окружение, чтобы этого больше не повторялось.
vsb>>И вот если принять за аксиому, что код программистом никак не оформляется, а представляет из себя "жидкую" структуру, которую форматтер может на лету форматировать как душе угодно, тогда вопрос с шириной кода можно вообще отдать на откуп предпочтениям программиста. Открыл код на широком мониторе — форматтер его автоматически отформатировал хоть на 300 колонок. Открыл его в интерфейсе слияния файлов — код переформатировало в 100 символов. При этом на диске он лежит в некоем каноничном виде, и все эти переформатирования никак на это не влияют, это исключительно функционал для отображения.
S>И как я узнаю при редактировании, мои изменения будут помечены как 1 измененная строчка, или весь метод окажется помеченным как измененный?
Опять же в современных стилях стараются избегать этого самого табличного форматирования, если я правильно понял, о чём речь. В том числе и потому, что изменение одной строки может потребовать изменение ещё и 100 строк вокруг, если нужно подправить вертикальное выравнивание. Это к слову.
Но вопрос мне не совсем понятен. На уровне файлов это тот же git, можно посмотреть `git diff --cached` или как там его, увидишь, что там будет помечено, как изменённое в git-е. На уровне IDE это уже как авторы IDE сделают. Сделают — и метод пометят, и statement, и что угодно.
Здравствуйте, Marty, Вы писали:
M>>>>>.ua не открывается N>>>>Поставил на другую локацию, M>>>Я ж говорю, .ua не открывается, а ты опять на .ua выложил N>>У вас всё по DNS ещё и зафильтровано? Я такой глупости не ожидал.
M>У нас? Я подозреваю, что это как раз на UA стороне запросы из РФ зафильтрованы.
Для первого ещё могло быть, а для второго — нет.
Сервера зоны ua все за пределами ua сейчас.
DNS моего тазика на ua, но сам тазик в США. Поэтому если не получается открыть, то у вас таки кто-то DNS режет.
M>Потому что UA сайты у меня почти все не открываются вне зависимости от провайдера. И да, не по DNS, имя то оно находит, а потом полчаса висит в режиме загрузки страницы, а потом обычно "сайт сбросил соединение"
Так у вас полмира уже в фильтрах.
N>>Я своим складам больше верю. Ну ладно, хотите на подстольной свалке — пожалуйста. M>Это у тебя как раз подстольная свалка, и ты нам оттуда пытаешься что-то показать
Эк ты назвал одного из крупнейших облачных провайдеров
Здравствуйте, Marty, Вы писали:
A>>Часто приходится писать очень структурированный код. Вложенность на пять-шесть уровней, и отступ четыре символа.
M>Прямо таки просится на рефакторинг по нескольким функциям
Здравствуйте, vsb, Вы писали:
vsb>>>И вот если принять за аксиому, что код программистом никак не оформляется
A>>А таблицы? Форматтер же не научить, когда привычную структуру есть смысл заменить на табличную.
vsb>Не понимаю вопроса. Я код в табличном виде не пишу. Вопрос про комментарии?
Например, объявление переменной типа "матрица 3 x 3" с инициализацией элементов переменными.
Или ряд вызовов одной функции с разными параметрами.
Здравствуйте, netch80, Вы писали:
M>>>>Я ж говорю, .ua не открывается, а ты опять на .ua выложил N>>>У вас всё по DNS ещё и зафильтровано? Я такой глупости не ожидал.
M>>У нас? Я подозреваю, что это как раз на UA стороне запросы из РФ зафильтрованы.
N>Для первого ещё могло быть, а для второго — нет.
И как это мешает фильтровать запросы из РФ?
N>Сервера зоны ua все за пределами ua сейчас. N>DNS моего тазика на ua, но сам тазик в США. Поэтому если не получается открыть, то у вас таки кто-то DNS режет.
>telnet isam.nn.kiev.ua 80
GET /~netch/2column-page-example1.png HTTP/1.1
host: isam.nn.kiev.ua
HTTP/1.1 400 Bad Request
Date: Sun, 12 Jan 2025 17:14:35 GMT
Server: Apache/2.4.52 (Ubuntu)
Content-Length: 306
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at vpb.nn.kiev.ua Port 80</address>
</body></html>
Подключение к узлу утеряно.
Никто у нас DNS не режет, ещё раз говорю, это уашные помойки от РФ отгородились
M>>Да, это довольно уродски. Это как раз газетный стиль. Для компактного представления выбран мелкий шрифт, но делать строки на всю ширину этим шрифтом — было бы таки хуже
N>Ну вот я и удивляюсь, зачем в научных журналах и в технической документации этот газетный стиль.
Бумагу экономят, жлобы
M>>Оно мне надо — по UA-шным помойкам шарится?
N>Так у вас полмира уже в фильтрах.
Может и так, но пока не особо заметно, и дискомфорта не вызывает. А боли от недоступности UA сайтов я не испытываю
N>>>Я своим складам больше верю. Ну ладно, хотите на подстольной свалке — пожалуйста. M>>Это у тебя как раз подстольная свалка, и ты нам оттуда пытаешься что-то показать
N>Эк ты назвал одного из крупнейших облачных провайдеров
Здравствуйте, vsb, Вы писали:
vsb>Здравствуйте, swame, Вы писали:
vsb>>>Ещё хочу предложить мысль для обдумывания.
vsb>>>В современном инструментарии всё чаще используют автоматический форматтер. В последние годы во всех своих проектах я использую именно такой подход. Чем меньше свободы в форматировании кода, тем лучше. gofmt, prettier, python black, clang-format, ну и в принципе почти в любой IDE есть подобный функционал.
S>>Нет. одно и тоже можно написать длиной цепочкой, или несколькими последовательными операторами. S>>Это делает программист. Не форматтер. S>>Если что-то сдизайнено под длинную цепочку и потом автоматом форматируется, оно становится уже совсем нечитаемым. S>>И всякие мерджи гита на таком плохо будут работать. S>>Я при дежживаюсь второго стиля и на своем коде форматтером не пользуюсь, он не нужен просто . S>>Если только откуда-то достался какой-нибудь неряшливо отформатированный код и надо разобраться, тогда можно форматнуть.
vsb>Этот подход понятен, но повторюсь, в современных проектах всё чаще используется автоматическое форматирование. Это не я придумал, это можно считать уже общепринятым подходом. В том же go этот форматтер прям в поставку компилятора встроен. Если в таком проекте запушить самостоятельно отформатированный код, он просто не пройдёт валидацию и автора попросят настроить своё окружение, чтобы этого больше не повторялось.
Еще раз. То что я не юзаю автоформатирование это частный вопрос. А то что программит может написать длинный неоправданно замудренный оператор на несколько строк никакой форматтер не исправит.
Можно написать так.
if (terminal.id < 0) or ((params.IslandIndex >= 0) and (terminalInfo.Island <> params.IslandIndex)) or
(if island.TmStUpdate < params.StartTime) then continue;
И автоформаттер сделает так
if (terminal.id < 0) or ((params.IslandIndex >= 0) and (terminalInfo.Island <>
params.IslandIndex)) or (if island.TmStUpdate < params.StartTime) then
continue;
И не узнаешь на каком условии вышли из цикла.
А можно написать так
if terminal.id < 0 then
continue;
if params.IslandIndex >= 0 then
if terminalInfo.Island <> params.IslandIndex then
continue;
if island.TmStUpdate < params.StartTime then
continue;
Разница понятна?
В моем стеке к счастью автоформатирование сделано отдельно по запросу. И настраивается.
vsb>>>И вот если принять за аксиому, что код программистом никак не оформляется, а представляет из себя "жидкую" структуру, которую форматтер может на лету форматировать как душе угодно, тогда вопрос с шириной кода можно вообще отдать на откуп предпочтениям программиста. Открыл код на широком мониторе — форматтер его автоматически отформатировал хоть на 300 колонок. Открыл его в интерфейсе слияния файлов — код переформатировало в 100 символов. При этом на диске он лежит в некоем каноничном виде, и все эти переформатирования никак на это не влияют, это исключительно функционал для отображения.
S>>И как я узнаю при редактировании, мои изменения будут помечены как 1 измененная строчка, или весь метод окажется помеченным как измененный?
vsb>Опять же в современных стилях стараются избегать этого самого табличного форматирования, если я правильно понял, о чём речь. В том числе и потому, что изменение одной строки может потребовать изменение ещё и 100 строк вокруг, если нужно подправить вертикальное выравнивание. Это к слову.
Если не упарываться, чтобы все было ровно всегда одинаково и для особо длинных строчек сделать исключение, то нет такой проблемы и все красиво.
А вот автоформаттер может не додуматься сделать такое исключение.
vsb>Но вопрос мне не совсем понятен. На уровне файлов это тот же git, можно посмотреть `git diff --cached` или как там его, увидишь, что там будет помечено, как изменённое в git-е. На уровне IDE это уже как авторы IDE сделают. Сделают — и метод пометят, и statement, и что угодно.
Например, я вставляю условие в начало большого метода и выход из условия в конце.
При автоформатировании, естественной во все вложенные строчки естественно, вставятся пробелы. Все будут изменены.
И нужно проследить несколько таких изменений, естественно будет каша. А такие изменения бывают часто.
Если я забью в это в случае на форматирование, которой тут может быть и не показатльны, покажет четко изменение 2 строчек.
При поддержке старых исходников, где изменения делаются редко, это критично.
Здравствуйте, swame, Вы писали:
A>>140
A>>Часто приходится писать очень структурированный код. Вложенность на пять-шесть уровней, и отступ четыре символа.
S>Спасибо за потраченное время, вы нам не подходите.
Ну вот, блин. Кем, кстати, мне теперь не судьба трудиться? Delphi-разработчиком?
Как бы так объяснить. Бывают языки, где вложенность обязательна синтаксически. И даже там, где не обязательна, я иногда предпочитаю вкладывать блоки. В разметке, например. Не нравится вложенность пяти-семи элементов (html > body > main > section > div > p > span)? Покажи, как раскидать.
Здравствуйте, vsb, Вы писали:
vsb>Опять же в современных стилях стараются избегать этого самого табличного форматирования, если я правильно понял, о чём речь. В том числе и потому, что изменение одной строки может потребовать изменение ещё и 100 строк вокруг, если нужно подправить вертикальное выравнивание. Это к слову.
А в чем проблема? Мержилка умеет игнорировать пробелы, и покажет тебе только то, что реально изменилось
Здравствуйте, Alekzander, Вы писали:
A>>>Часто приходится писать очень структурированный код. Вложенность на пять-шесть уровней, и отступ четыре символа.
M>>Прямо таки просится на рефакторинг по нескольким функциям
A>*ML? LESS?
Сделай отступ 2 пробела, и никогда, никогда не пиши такое руками
Здравствуйте, Marty, Вы писали:
M>Здравствуйте, vsb, Вы писали:
vsb>>Опять же в современных стилях стараются избегать этого самого табличного форматирования, если я правильно понял, о чём речь. В том числе и потому, что изменение одной строки может потребовать изменение ещё и 100 строк вокруг, если нужно подправить вертикальное выравнивание. Это к слову.
M>А в чем проблема? Мержилка умеет игнорировать пробелы, и покажет тебе только то, что реально изменилось
В простом случае покажет, а при Merge / Resolve бывает печально.
Здравствуйте, Marty, Вы писали:
A>>>>Часто приходится писать очень структурированный код. Вложенность на пять-шесть уровней, и отступ четыре символа.
M>>>Прямо таки просится на рефакторинг по нескольким функциям
A>>*ML? LESS?
M>Сделай отступ 2 пробела, и никогда, никогда не пиши такое руками
Зачем тогда широкий монитор, если лепить всё в кучу с двумя символами? И чем мне писать разметку, ногами, что ли?
A>Как бы так объяснить. Бывают языки, где вложенность обязательна синтаксически. И даже там, где не обязательна, я иногда предпочитаю вкладывать блоки. В разметке, например. Не нравится вложенность пяти-семи элементов (html > body > main > section > div > p > span)? Покажи, как раскидать.
M>Глобальные разделы html, html/head, html/body — не выделяем отступом, а помечаем горизонтальным разделителем
Ну и зачем это так утрамбовывать? Когда наша мониторная промышленность производит отличные экраны, где всё можно без проблем записать вширь, выставив ограничитель на 140 символов?
Здравствуйте, Alekzander, Вы писали:
A>Здравствуйте, swame, Вы писали:
A>>>140
A>>>Часто приходится писать очень структурированный код. Вложенность на пять-шесть уровней, и отступ четыре символа.
S>>Спасибо за потраченное время, вы нам не подходите.
A>Ну вот, блин. Кем, кстати, мне теперь не судьба трудиться? Delphi-разработчиком?
A>Как бы так объяснить. Бывают языки, где вложенность обязательна синтаксически. И даже там, где не обязательна, я иногда предпочитаю вкладывать блоки. В разметке, например. Не нравится вложенность пяти-семи элементов (html > body > main > section > div > p > span)? Покажи, как раскидать.
Я не знаю что бы там форматируешь, но первые уровня 3 можно положить без отступа, а например ячейки таблицы класть в одну строчку.
если высота секции больше видимой страницы, то отступ ничего не дает.
Остается 1-3 уровня реально. Так сделано наверное во всех HTML которые смотрел. В HTML и без отступов структура хорошо видна.
Здравствуйте, Alekzander, Вы писали:
M>>Сделай отступ 2 пробела, и никогда, никогда не пиши такое руками
A>Зачем тогда широкий монитор, если лепить всё в кучу с двумя символами?
Чтобы видеть на экране код, доку, и отлаживаемое приложение одновременно
M>>Глобальные разделы html, html/head, html/body — не выделяем отступом, а помечаем горизонтальным разделителем
A>Ну и зачем это так утрамбовывать? Когда наша мониторная промышленность производит отличные экраны, где всё можно без проблем записать вширь, выставив ограничитель на 140 символов?