Комментарии 105
НЛО прилетело и опубликовало эту надпись здесь
Для этого есть умные форматтеры. Жаль что очень немногие форматтеры это умеют. Вот, например, в astyle я этой рюшки не нашёл :(
+2
НЛО прилетело и опубликовало эту надпись здесь
И не только ОС, если для саблайма есть, тоже было бы здорово узнать.
+2
Google => Elastic Tab Stops
P.S. Сорри, прямой линк дать не могу — мерзкая прокся на работе.
P.S. Сорри, прямой линк дать не могу — мерзкая прокся на работе.
0
Сейчас немного покапался и оказалось, что в VS выравнивание присваиваний делается нативно комбинацией Ctrl+Alt+]
0
А еще есть такое расширение.
0
В Vim есть расширение Tabular.vim
+1
Проблема еще в том что после выравнивания вы затрете аннотейты у выровненных строк. В большом проекте где много народу это серьезная проблема, ибо самая лучшая документация это дата имя и коммент человека сделавшего правку.
+14
Полностью согласен. Поэтому в разработке и не использую.
0
git blame -w
В эклипсе также можно настроить игнор аннотаций с изменениями только white-space`ов.
Аргумент не принимается :)
В эклипсе также можно настроить игнор аннотаций с изменениями только white-space`ов.
Аргумент не принимается :)
+16
А как эта фича будет работать с изменением пробелов в строковых ресурсах/переменных? Есть ли аналог у ртути?
0
hg blame -w -b -B
или
hg annotate -w -b -B
Т.е. ровно то же самое. www.selenic.com/mercurial/hg.1.html
или
hg annotate -w -b -B
Т.е. ровно то же самое. www.selenic.com/mercurial/hg.1.html
+3
вы контроль версий что ли не используете? Blame никто не отменял
-1
Не только бессмысленно но и плохо. При поддержке, рефакторинге, фиксинге, вместо одной измененной строки, получается много. Это касается любого выравнивания по длине чеголибо.
0
Выравниваю, если разница не более 4 пробелов.
+27
Если такого кода больше половины экрана подряд, то выравниваю, иначе можно долго всматриваться чтобы найти значение переменной:)
+21
PhpStorm это умеет автоматом делать,
но я ровняю только в случаях с большими массивами (например описывающими меню)
но я ровняю только в случаях с большими массивами (например описывающими меню)
+8
Выбрал «Не выравниваю код» и нажал «Воздержаться». Facepalm.jpg
-11
стараюсь выравнивать, а вот эклипсовый автоформатер порет все мои старания
0
разве эклипсовый автоформатер нельзя настроить чтобы он не порол старания?
+7
не осилил. гугл тоже не помогает. с благодарностью отнесусь к подсказкам благородных донов
+1
В Netbeans, использую автоформатирование (ALT+SHIFT+F).
+1
Не выравниваю. К тому же, учитывая, что код приведенный в опросе написан на Python, то согласно PEP 8 его не нужно выравнивать — www.python.org/dev/peps/pep-0008/#whitespace-in-expressions-and-statements
+11
НЛО прилетело и опубликовало эту надпись здесь
1) Если таких данных 2-3 и они в коде — не выравниваю
2) Если это заполняемая структура ( хэш, массив или что либо еще ) — обязательно выравниваю — читается все это потом гораздо легче.
2) Если это заполняемая структура ( хэш, массив или что либо еще ) — обязательно выравниваю — читается все это потом гораздо легче.
+2
Такое выравнивание уже давно бессмысленно. То ли в Чистом Коде, то ли в Совершенном Коде про это тоже написано.
0
«уже давно бессмысленно» подразумевает, что раньше у этого был какой-то конкретный смысл, а потом по каким-то объективным причинам он исчез.
+1
Нажал «Мне по барабану», имея в виду «зависит от ситуации».
+5
Раньше вы равнивал, но потом получил замечание, которое застравило переосмыслить. После изменения/добавления строки кода приходится изменять все близлежащие строки, что негативно отражается на размер дифа после коммита. Это делает запутанным определение авторов изменений тех или иных строк и делает бесмысленным
Так же в сложных js проектах придерживаюсь npm code style
git blame
Так же в сложных js проектах придерживаюсь npm code style
+4
deleted.
+1
Выравниваю группу связанных переменных, например коды ошибок, причем подобное выравнивание как раз и указывает на взаимосвязанность выравниваемых данных.
+3
Для SublimeText есть плагин Alignment, отлично выравнивает. Выделяем (CTRL+ALT+A) и готово. Он кстати не только по столбцам выравнивает…
-1
Когда как:
// большой блок переменных близких по смыслу, выравниваю
date = controller->getDate();
period = controller->getPeriod();
object = controller->getObject();
property = controller->getProperty();
id = controller->getId();
// далее выравнивать нет смысла, так как переменные разные по смыслу, да и замучаешься равнять
model = new Model(object, period);
result = model->getResult(id, date);
propertyValue = result->getPropertyValue(property);
+40
Именно! Без вашего варианта опрос не полноценен.
+3
Собственно сам открыл комментарии, чтобы написать такой же вариант. Ответил «Выравниваю», но это все-таки не совсем верно.
+3
И весь код солянка, половина так половина так, и смыслы потеряются или поменяются при рефакторинге.
+1
Не половина так, половина так, а везде по уму, чтоб читабельность была нормальная, рефакторинг этому не помешает.
0
«По уму» половина так, «по уму» половина так, ничего не меняется. Я написал, что в процессе рефакторинга, «по уму» может менятся. Рефакторингу мешает любые сортировки «по уму». Сортировать нужно не по уму а по использованию. Чтобы дистанция между связанными объектами была минимальна. Есть такие метрики, не помню как они называются. Статистически чем меньше расстояние тем меньше вероятность ошибок.
Рефакторил огромные проекты, написаные и студентами и очень умными людьми. И у всех «по уму» сильно разнится. И то что «по уму» для архитектора не всегда очевидно «по уму» для среднего имплементатора.
Любые «по уму» в топку, никаких вырвниваний, никогда.
Рефакторил огромные проекты, написаные и студентами и очень умными людьми. И у всех «по уму» сильно разнится. И то что «по уму» для архитектора не всегда очевидно «по уму» для среднего имплементатора.
Любые «по уму» в топку, никаких вырвниваний, никогда.
0
Еще добавлю, что «выравниватели кода» это особый подвид программистов, которые не понимают, что не у всех шрифт mono. И взглянув на список переменных которые в развалку разбросанны по коду, отпадает желание ревьювить этот огород.
0
Наоборот: foo, habrahabr = 'bar', 'Hello, world!'
Но это, если в приемлемую длину строки укладывается. Предпочитаю инициализацию в одну строчку, чем размазанную на пол экрана.
Но это, если в приемлемую длину строки укладывается. Предпочитаю инициализацию в одну строчку, чем размазанную на пол экрана.
-4
<моя любимая среда разработки> сама при реформатировании кода делает выравнивание согласно моим пожеланиям. соответственно, пока пишу выравнивания нет, но достаточно нажать Ctrl+Shift+F, как всё сразу выстраивается в колоночки — что переменные с объявлениями, что массивы, что параметры у вызываемых функций/методов
0
Стараюсь выравнивать, т.к. 90% времени код читается. Если код пишется на раз-два и выкинуть, то тогда конечно не надо равнять.
При необходимости обновить выравнивание, анноации (blame) нифига не теряются. Но это только в рассово-верных а-ля git, eclipse. Возможно и в других.
В эклипсе:
![](https://habrastorage.org/r/w1560/storage2/fa0/125/53b/fa012553b1afc96de234f16663d7e3c1.png)
При необходимости обновить выравнивание, анноации (blame) нифига не теряются. Но это только в рассово-верных а-ля git, eclipse. Возможно и в других.
git-blame -w
В эклипсе:
![](https://habrastorage.org/storage2/fa0/125/53b/fa012553b1afc96de234f16663d7e3c1.png)
+1
Если идёт большой блок инциализации / объявления — могу и выровнять (когда писал на делфях — всегда выравнивал), а вот в Java такая потребность почти всегда отсутствует — грамотная подсветка синтаксиса + не линейная инициализация переменных (чаще всего переменные рассыпаны по коду).
0
грамотная подсветка синтаксиса
а представьте, что кто-то будет читать ваш код в блокноте, и он будет знать ваш адрес… :)
0
«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.» © Стив Макконнелл
+1
Очень часто смотрю код в блокноте. Никаких проблем нет.
0
Ну в таком случае — это проблема «смотрящего код в блокноте».
Адекватный проект на Java — это десятки, сотни и больше классов, в таком случае или знаешь проект и действительно можешь «глянуть в блокноте» (но при этом не потеряешься — ведь ты его знаешь) или смотреть в блокноте бесполезно — зачастую надо открыть куда больше одного класса и заранее нужные файлы ты не знаешь.
Хотя с теми же константами (которые очень часто сидят в одном месте) я поступаю именно выравнивая в столбец. А вот с инлайн-переменными это почти всегда неразумно.
Адекватный проект на Java — это десятки, сотни и больше классов, в таком случае или знаешь проект и действительно можешь «глянуть в блокноте» (но при этом не потеряешься — ведь ты его знаешь) или смотреть в блокноте бесполезно — зачастую надо открыть куда больше одного класса и заранее нужные файлы ты не знаешь.
Хотя с теми же константами (которые очень часто сидят в одном месте) я поступаю именно выравнивая в столбец. А вот с инлайн-переменными это почти всегда неразумно.
0
gofmt и радуюсь жизни. Он автоматически выравнивает, но не во всех местах, только там, где это действительно уместно.
0
Не выравниваю и не люблю. Мне в вашем примере кажется, что bar больше логически относится к hello world, чем к foo. Попробуйте почитать оглавление у книг, если в них убрать "...", они тоже выровнены красивенько.
0
В питоне не выравниваю, ибо PEP8. (аналогично и с большинством других языках) В случае же если пишу на Go, то выравниваю.
+3
Хорошо, что есть PEP8
+10
выравниваю только наборы почти однотипных и близких по длине строкового представления данных
+1
Лично я, когда как. А точнее в разных ЯП по разному. Например, на Python не выравниваю, придерживаюсь PEP8
+1
По мне, надо смотреть по самому коду и что вокруг, не понравилось — под равнял, на вкус и цвет фломастеры разные…
+1
Макконелл, кстати, не советует выравнивать. Мотивирует тем, что такое определение переменных сложнее в сопровождении, а значит на него вскоре забьют.
0
Иногда выравниваю даже числа в массиве. Или фрагменты формулы, разбитой на несколько строк. Но это если действительно важно соответствие между символами кода в разных строчках. В приведённом примере выравнивал бы, если бы весь блок (конструктор, задание структуры, enum) состоял бы только из строчек вида a = b. Если же это фрагмент функции — скорее всего, нет.
0
Выравниваю, хоть и без особого фанатизма. Например, нет смысла выравнивать такое:
Две-три переменные, с настолько разной длиной имён… Ерунда вобщем.
А вот в групповых присвоениях: массивы, группа свойств, блок переменных — тут уже для удобочитаемости выравниваю. Тем самым облегчаю дальнейшее сопровождение кода: читается выровненный блок намного проще.
// some code here
...
$short = 'some value of short variable';
$someLongVariableNameHere = 'value of long variable name';
// and code here
...
Две-три переменные, с настолько разной длиной имён… Ерунда вобщем.
А вот в групповых присвоениях: массивы, группа свойств, блок переменных — тут уже для удобочитаемости выравниваю. Тем самым облегчаю дальнейшее сопровождение кода: читается выровненный блок намного проще.
+2
Не выравниваем. Читаемости не добавляет, а поддерживать сложнее.
+1
Использую возможности IDE по автоформатированию, а она не выравнивает.
0
Мне не нравится такое выравнивание: если идет несколько строк с большим расстоянием между = и значением — то приходится целиться пользоваться глазомером, чтобы проследить от знака = направление к значению. Это лишнее напряжение и есть возможность запутаться.
+1
Когда копал исходники Qt заметил, что выравнивание у них есть (например для дефайнов), но табуляция сделана с большим допуском, отчего возможные будущие добавленные строки будут хорошо вписываться в стиль.
Сам же стараюсь выравнивать только в случаях однотипных или связанных по смыслу данных.
Сам же стараюсь выравнивать только в случаях однотипных или связанных по смыслу данных.
+1
Выравниваю переменные без фанатизма и sql-запросы, тоже без фанатизма:
0
НЛО прилетело и опубликовало эту надпись здесь
А как? Попробовал на .rb и .coffee файлах, сам RubyMine ничего не выравнивает за меня.
0
НЛО прилетело и опубликовало эту надпись здесь
Так оно само не равняет по ходу печати, все равно нужно строки выделить и Code — Reformat сделать (alt+cmd+L)
0
НЛО прилетело и опубликовало эту надпись здесь
Хорошо конечно, просто я думал оно само, нажал переход на новую строку, а оно бац и все выше строки поравняло. А так в общем-то удобная фишка, которой мне с перехода SublimeText2 (плагин Align) не хватало.
0
НЛО прилетело и опубликовало эту надпись здесь
А я выравниваю только объявления в хедерах — те, что идут в публичное API.
А в реализации — как получится. Обычно это только тратит время и создаёт «дырки» в тексте, а практической пользы нет.
А в реализации — как получится. Обычно это только тратит время и создаёт «дырки» в тексте, а практической пользы нет.
0
Выравниваю (и именно так ответил в опросе).
Но выравниваю только тогда, когда переменные близки и по длине имён их, и по смыслу их употребления в коде.
Но выравниваю только тогда, когда переменные близки и по длине имён их, и по смыслу их употребления в коде.
+1
по настроению :)
0
За меня выравнивает PHP Storm
0
Ответил выравниваю, но не везде…
выравниваю при описании структур, констант и пр…
не выравниваю просто в коде
на вкус и цвет — товарищей нет
выравниваю при описании структур, констант и пр…
static pthread_mutex_t stats_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t accept_lock = PTHREAD_MUTEX_INITIALIZER; extern int max_clients; extern fd_ctx *clients; extern int is_finish; extern int is_trace; static const int const_RN_len = 2; static const int const_END_len = 5; static const int const_END2_len = 7; static const int const_OK_len = 4; static const int const_ERROR_len = 7; typedef struct { ev_io io; /**< io descriptor */ int cmd_len; /**< bytes in line buffer */ struct obuffer response; /**< response data */ char* value; /**< key value from last set command */ int value_len; /**< number of bytes in value buffer */ int value_size; /**< capacity of value buffer */ int data_size; /**< value size into cmd */ } mc_ctx;
не выравниваю просто в коде
int i = 0; char* state = STORED;
на вкус и цвет — товарищей нет
0
Выравниваю, но без фанатизма. Вышеприведенный пример я оформил бы так:
extern int max_clients;
extern fd_ctx *clients;
extern int is_finish;
extern int is_trace;
static const int const_RN_len = 2;
static const int const_END_len = 5;
static const int const_END2_len = 7;
static const int const_OK_len = 4;
static const int const_ERROR_len = 7;
0
Почти невозможно понять SQL-запрос на 4-5 экранов без правильного форматирования.
Так что выравниваю, свои скрипты — в момент написания, чужие — форматтером (аддоном для MS SQL Management Studio).
Так что выравниваю, свои скрипты — в момент написания, чужие — форматтером (аддоном для MS SQL Management Studio).
0
НЛО прилетело и опубликовало эту надпись здесь
www.ssmsboost.com/
Форматтер не лучший и возможности настроить его я не нашел, но по сравнению с неотформатированным код смотрится гораздо лучше.
Плюс там есть еще другие полезные фишки, которые иногда использую.
Форматтер не лучший и возможности настроить его я не нашел, но по сравнению с неотформатированным код смотрится гораздо лучше.
Плюс там есть еще другие полезные фишки, которые иногда использую.
0
Онанизм
-7
Нет варианта — использую автоформат в IDE. Мне по барабану, главное чтобы было единообразно.
0
При объявлении переменных не выравниваю, а во всех остальных случаях выравниваю, особенно когда создаю массив с кучей табличных/статичных данных.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Опрос. Выравниваете ли код по столбцам?