Re[3]: Стиль coding'а для группы....
От: prVovik Россия  
Дата: 27.01.05 21:41
Оценка: 1 (1)
Здравствуйте, IT, Вы писали:

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


А может быть проще воспользоваться фичей "Reformat code"?
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[9]: Стиль coding'а для группы....
От: Костя Ещенко Россия  
Дата: 27.01.05 22:51
Оценка: +1
Здравствуйте, McSeem2, Вы писали:

КЕ>>Как правило перенос строки просто отбивают одной табуляций без выравнивания по скобке и в этом случае текст не потеряет структуры при изменении размера табуляции. Заглянул в соглашения rsdn и boost — там делают именно так.


MS>В BOOST я ничего не нашел из поводу рекоммендаций по переносу и выравниванию аргументов/операций для длинных строк.


В явном виде это не описано ни в rsdn, ни в boost, но в примерах (ненормативных?) везде используется выравнивание такое как я сказал.

MS>А по поводу табуляций, вот:

MS>

MS>Tabs are banned because of the practical problems caused by tabs in multi-developer projects like Boost, rather than any dislike in principle. See mailing list archives. Problems include maintenance of a single source file by programmers using tabs and programmers using spaces, and the difficulty of enforcing a consistent tab policy other than just "no tabs". Discussions concluded that Boost files should either all use tabs, or all use spaces, and thus the decision to stick with spaces.


Мне это известно. Я имел ввиду этот документ http://groups.yahoo.com/group/boost/files/coding_guidelines.html Вот что там говорится насчет та насчет табов

5.4. Use spaces, not tabs, for indentation. If everyone always used tabs, it would probably be OK, but since they don't we end up with files full of mixed spaces and tabs. Variable tab width causes alignment problems, so they are banned from source code.

Поскольку мы говорим о стиле принятом для некоторой группы, то можем гарантировать что все будут использовать табы, и соответственно все будет ОК.
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re[5]: Стиль coding'а для группы....
От: Костя Ещенко Россия  
Дата: 27.01.05 22:54
Оценка:
Здравствуйте, prVovik, Вы писали:

КЕ>>Чтобы сдвинуть курсор (или подвинуть всю строку) на один отступ влево при использовании табуляции надо один раз нажать '<-' (или backspace/delete), а при использовании пробелов — 4 раза. Для меня это достаточная причина использовать табы.


V>Не проблема. Я, например, всегда курсор перемещаю влево-вправо только с зажатым контролом. Он тогда удобно перепрыгивает целиком через лексемы, последовательности пробельных символов и пр. В таком режиме символы табуляции вообще незаметны.


В чем-то удобно, но не то. Я не могу в одно касание подвинуть строку влево, и также не могу установить курсор на определенный отступ.
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re[5]: Стиль coding'а для группы....
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.01.05 23:02
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, IT, Вы писали:


MS>>>Чисто из любопытства — чем вызвано требование использовать табуляцию для отступов в начале строки? Есть этому какое-то разумное rationale?


IT>>Разные программисты предпочитают устанавливать разный размер отступа в своих редакторах. Кому-то нравится 4 символа, кому-то 2, кому-то 8. Использование табулиции в качестве отступа позволяет удовлетворить потребности всех.


MS>Дык от этого форматирование неизбежно отъезжает... Например, это противоречит требованию не писать длинных строк. Вообще, это крайне сложно написать текст программы так, чтобы он хорошо выглядел при любом размере табуляции. На практике получается полный бардак, в результате которого, со временем узаконивается вполне определенный размер табуляуции, скажем, 4. Дальнейший шаг, логически вытекающий из предыдущего — полный отказ от табуляций.


Если ты внимательно прочтешь указанные выше правила, то должен будешь заметить, что табуляция там используется только для отбивки отступа от начала строки. Для форматирования текста после первого значащего символа предлагается использовать исключительно проблелы. Более того оговаривается, что кроме случаев табличного форматирования запрещается делать более одного пробела и оговривается где пробелы допустимы, а где нет.

Что касается редакторов и автоматических замен, то все известные мне приличные редакторы (в том числе и VS) не заменяют на табуляции пробелы внутри строки (заменяют только начальные проблелы).
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Стиль coding'а для группы....
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.01.05 23:02
Оценка: -1
Здравствуйте, McSeem2, Вы писали:


MS>Имелось в виду — как установить отдельный цвет для этих точек-стрелочек, как это сделал IT — так, чтобы они почти сливались с фоном и не мешались.


Для работы это не нужно. Это нужно только если ты боришся с хлопцами вроде тебя наформатировшивми код пробелами вручную. Тогда Ctrl+Shift+8 + Alt+8 и все ОК.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Стиль coding'а для группы....
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.01.05 23:02
Оценка:
Здравствуйте, Костя Ещенко, Вы писали:

КЕ>Чтобы сдвинуть курсор (или подвинуть всю строку) на один отступ влево при использовании табуляции надо один раз нажать '<-' (или backspace/delete), а при использовании пробелов — 4 раза. Для меня это достаточная причина использовать табы.


Это как раз фигня. Смартабы в современных IDE спасают.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Стиль coding'а для группы....
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.01.05 23:02
Оценка:
Здравствуйте, _orion_, Вы писали:

__>А ссылку на эти рекомендации Microsoft можно узнать ??


Наши сделаны на их базе. Отличия минимальны.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Стиль coding'а для группы....
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.01.05 23:02
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Проще выучить мой стиль будет.


Проще тебя не брть на работу. Или выгнать как только станет ясно, что ты не хочешь подчиняться корпоративным требованиям.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Стиль coding'а для группы....
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.01.05 23:02
Оценка:
Здравствуйте, xvost, Вы писали:

X>В РеШарпере Code Formatter настраивается гибче. И умеет то, чего не умеет студия — оптимизация using директив, вставка private/internal модификаторов, etc.


(*) Может прежде чем говорить нужно было попробывать и 2005-ю студию?

X>1) Рефакторингов у РеШарпера больше. И работают аккуратнее — на наших особо хитрых тестовых примерах 2005я лажает


А на моей практике не одной шибки.

X>2) Навигация по коду в РеШарпере удобнее


Чем?

X>3) Error highlighting, quickfixes, etc.


highlighting и в студии нормальный. А quickfixes возможно. Лично мне он не очень нужен.

X>4) Различные варианты Code completion — с автоматичской вставкой usings, etc. Особая сила — Smart completion


См. (*)

X>5) Подхват практически всех изменений "на лету". Например, чтобы увидеть XML doc в Студии надо сборку сначала собрать. Мы жэе вытаскиваем из исходников напрямую.


Чушь. См. (*)

X>6)-99) ... и еще куча всего


См. (*)

В общем, см. (*).
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: И еще
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.01.05 23:02
Оценка:
Здравствуйте, xvost, Вы писали:

X>http://www.rsdn.ru/Forum/Message.aspx?mid=781459&amp;only=1
Автор: xvost
Дата: 26.08.04


В бэте 2 проблем вроде нет.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Стиль coding'а для группы....
От: Костя Ещенко Россия  
Дата: 27.01.05 23:28
Оценка:
Здравствуйте, VladD2, Вы писали:

КЕ>>Чтобы сдвинуть курсор (или подвинуть всю строку) на один отступ влево при использовании табуляции надо один раз нажать '<-' (или backspace/delete), а при использовании пробелов — 4 раза. Для меня это достаточная причина использовать табы.


VD>Это как раз фигня. Смартабы в современных IDE спасают.


От чего спасают? В IDE VC7.1 смарт индент мне ничем по помог.
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re[6]: Стиль coding'а для группы....
От: McSeem2 США http://www.antigrain.com
Дата: 28.01.05 01:12
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Если ты внимательно прочтешь указанные выше правила, то должен будешь заметить, что табуляция там используется только для отбивки отступа от начала строки. Для форматирования текста после первого значащего символа предлагается использовать исключительно проблелы. Более того оговаривается, что кроме случаев табличного форматирования запрещается делать более одного пробела и оговривается где пробелы допустимы, а где нет.


OK, еще раз. Это некий абстрактный кусок на C++, это не суть. C# предполагает еще более длинные имена и конструкции.
    if(app->m_ctrls.on_mouse_button_down(app->m_specific->m_cur_x, 
                                         app->m_specific->m_cur_y))
    {
        app->on_ctrl_change();
        app->force_redraw();
    }
    else
    {
        if(app->m_ctrls.in_rect(app->m_specific->m_cur_x, 
                                app->m_specific->m_cur_y))
        {
            if(app->m_ctrls.set_cur(app->m_specific->m_cur_x, 
                                    app->m_specific->m_cur_y))
            {
                app->on_ctrl_change();
                app->force_redraw();
            }
        }
        else
        {
            app->on_mouse_button_down(app->m_specific->m_cur_x, 
                                      app->m_specific->m_cur_y, 
                                      app->m_specific->m_input_flags);
        }
    }



Из требований RSDN, вытекает, что надо делать так и только так (длинные строки использовать нельзя и это правильно):
    if(app->m_ctrls.on_mouse_button_down(
        app->m_specific->m_cur_x, 
        app->m_specific->m_cur_y))
    {
        app->on_ctrl_change();
        app->force_redraw();
    }
    else
    {
        if(app->m_ctrls.in_rect(
            app->m_specific->m_cur_x, 
            app->m_specific->m_cur_y))
        {
            if(app->m_ctrls.set_cur(
                app->m_specific->m_cur_x, 
                app->m_specific->m_cur_y))
            {
                app->on_ctrl_change();
                app->force_redraw();
            }
        }
        else
        {
            app->on_mouse_button_down(
                app->m_specific->m_cur_x, 
                app->m_specific->m_cur_y, 
                app->m_specific->m_input_flags);
        }
    }


В этом случае, с табуляциями действительно нет проблем. Но не читается это — тяжело визуально различать, где имя функции, где аргументы, где — внутренность блока.

Но, как я уже сказал, спорить не буду — табуляции вполне оправданы при данном подходе (C# + VS2003+). Я лишь хотел узнать и разобраться в причинах таких требований. Теперь узнал и разобрался. Спасибо.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re: Стиль coding'а для группы....
От: tiberius ICQ:1870700
Дата: 28.01.05 04:43
Оценка: :)
Здравствуйте, Prokher, Вы писали:

P>Очевидно при работе в коллективе необходимо придерживаться какого-то соглашения по оформлению кода.




Вот кусок моей старой программы. Кто разберётся, что это — тому пирожок с полки. Уж извините больше ничего нет.
Тут данные структурированны, уж не подумайте, что я все '/n' стёр.
function F(M){
I=Math.floor(M[0])
QWE[NUM++]=M[1]
d.write(
(!I     ?(L>0?"</table>":"")+(L+1?"<td>||":
        "<TABLE cellPadding=0 cellSpacing=0 width=100% height=100%><td>"+
        "<TABLE cellPadding=0 bgColor=bfa9d4 style='border-bottom:#8664a6 1px solid' onmouseout='V--;setTimeout(\"h(P)\",60);' onmouseover=V++>")+"<TD nowrap>":
I>1     ?L==1?"<A class=M>»<div class=menu id=TS"+(G++)+">":"<BR>"
        :(L?'':"<div class=menu id=TS"+(G++)+"><TABLE cellPadding=0 ")+"<tr><TD nowrap>"
)
+"<A class=M"
+(I<2?" onmouseover='drop("+G+","+I+");'":"")
+" href=#>"+M[1]+"</A>"
)
L=I
}


ЗЫ. В предпросмотре заметил, что вся табуляция порушилась к чертям собачим. Пришлось на пробелы всё заменять. Так, что табуляция в программах MD.
ЭлектроБарахолка
Re[4]: Стиль coding'а для группы....
От: _orion_  
Дата: 28.01.05 09:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _orion_, Вы писали:


__>>А ссылку на эти рекомендации Microsoft можно узнать ??


VD>Наши сделаны на их базе. Отличия минимальны.


Да, спасибо.
И все-таки хотелось бы узнать ссылку на оригинальные.
Re[5]: Стиль coding'а для группы....
От: Юнусов Булат Россия  
Дата: 28.01.05 09:58
Оценка: 2 (1)
Здравствуйте, _orion_, Вы писали:

__>И все-таки хотелось бы узнать ссылку на оригинальные.


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnetframeworkdesignguidelines.asp
Re[6]: Стиль coding'а для группы....
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.01.05 11:57
Оценка: 12 (1)
Здравствуйте, Костя Ещенко, Вы писали:

КЕ>От чего спасают? В IDE VC7.1 смарт индент мне ничем по помог.


Попробуй нажать Shift+Tab. Помогло?
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Стиль coding'а для группы....
От: degor Россия  
Дата: 28.01.05 12:41
Оценка: +1 -1
MS>>>Дык от этого форматирование неизбежно отъезжает... Например, это противоречит требованию не писать длинных строк.

IT>>Почему? Какая разница ставишь ты 4 пробела или делаешь табуляцию в размером в 4 символа?


MS>Разница огромная. Вот текст, в том виде, в котором он задумывался (отступ==табуляция==4):


Не о том думаете. Я вот пропорциональные шрифты использую, и куда идет все это сложное форматирование?
Re[4]: Стиль coding'а для группы....
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 28.01.05 16:28
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, McSeem2, Вы писали:


MS>>Чисто из любопытства — чем вызвано требование использовать табуляцию для отступов в начале строки? Есть этому какое-то разумное rationale?


IT>Разные программисты предпочитают устанавливать разный размер отступа в своих редакторах. Кому-то нравится 4 символа, кому-то 2, кому-то 8. Использование табулиции в качестве отступа позволяет удовлетворить потребности всех.


Это работает торлько если все например на Visual Studio пишете. У нас наоборот только пробелы. Потому как если ты пишешь кроссплатформенный код то твои 4 табуляции становятся 8 например в unix — там иногда бывает нужно без IDE код править — и получается полный капец. А еще хуже код из пробелов и табуляций в перемешку.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[7]: Стиль coding'а для группы....
От: IT Россия linq2db.com
Дата: 28.01.05 16:47
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>C# предполагает еще более длинные имена и конструкции.


Неправда ваша. Сравни.

    if(app->m_ctrls.on_mouse_button_down(app->m_specific->m_cur_x, 
                                         app->m_specific->m_cur_y))
    {
        app->on_ctrl_change();
        app->force_redraw();
    }

    if (app.Controls.OnMouseButtonDown(app.Specific.CurrrentX, 
                                       app.Specific.CurrrentY))
    {
        app.OnControlChange();
        app.ForceRedraw();
    }


На шарпе даже с более длинными идентификоторами короче получается А насчёт читабельности я лучше умолчу.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Стиль coding'а для группы....
От: McSeem2 США http://www.antigrain.com
Дата: 28.01.05 18:06
Оценка:
Здравствуйте, IT, Вы писали:

IT>    if (app.Controls.OnMouseButtonDown(app.Specific.CurrrentX, 
IT>                                       app.Specific.CurrrentY))
IT>    {
IT>        app.OnControlChange();
IT>        app.ForceRedraw();
IT>    }


IT>На шарпе даже с более длинными идентификоторами короче получается А насчёт читабельности я лучше умолчу.


Речь не об этом. Речь о том, что ты все равно не имеешь права так писать — выравнивать аргументы пробелами нельзя, а с табуляйцами неизбежно возникает покривение. Надо так:

    if (app.Controls.OnMouseButtonDown(app.Specific.CurrrentX, app.Specific.CurrrentY)) // Длинная строка - маздай
    {
        app.OnControlChange();
        app.ForceRedraw();
    }


Лтбо так:
    if (app.Controls.OnMouseButtonDown(
        app.Specific.CurrrentX, 
        app.Specific.CurrrentY))
    {
        app.OnControlChange();
        app.ForceRedraw();
    }
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.