Re[3]: У кого какой стандарт кодирования на предприятие?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.05.09 22:20
Оценка: 11 (1) +7
Здравствуйте, _FRED_, Вы писали:

_FR>Как я посмотрю, это достаточно распространённый стиль. А почему?


Проще код читать, ИМХО
... << RSDN@Home 1.2.0 alpha 4 rev. 1212 on Windows Vista 6.1.7100.0>>
AVK Blog
Re: У кого какой стандарт кодирования на предприятие?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.05.09 06:20
Оценка: 6 (2) +2
Здравствуйте, The_Thing, Вы писали:

T_T>имхо...?

T_T>Хотелось бы до обеда по мск получить ответ так как собираются выслушать наши пожелания. А так как, чел который нас собирает не особо валакёт в этом деле(у нас всё так в России), не хотелось бы потом позориться за свой код прийдя в другую контору!

T_T>пишите, что от вас требуют, и какие недоработки вы видите в требованиях от вас.

T_T>спасибо.

Это зависит от языка.

Когда передо мной встал вопрос стандартов кодирования в команде я поставил fxcop и stylecop в стандартной конфигурации.
Re[7]: У кого какой стандарт кодирования на предприятие?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.05.09 12:33
Оценка: 1 (1) +2
Здравствуйте, _FRED_, Вы писали:

_FR>И в что конкретно здесь смущает?


_FR>А здесь:

_FR>
G>>if(someExpression) {
G>>  someCode();
G>>  for(var i=0; i<N; i++) {
G>>    if(someExpression2) {
G>>      someCodefsdfs();
G>>      someCodefdsfdfds();
G>>    } else {
G>>      someCodefsdsd();
G>>    }//if
G>>    someCodegfgxgvcx();
G>>  }//for
G>>} else {
G>>  someCodevxcvxcv();
G>>}//if
_FR>

_FR>?

Если честно — не видно нифига. Допускаю, что это вопрос привычки. Но без привычки таки не видно. И этот пример с комментариями не лучше, чем тот что без.


if(someExpression) 
{
  someCode();

  for(var i=0; i<N; i++) 
  {
    if(someExpression2) 
    {
      someCodefsdfs();
      someCodefdsfdfds();
    }
    else
    {
      someCodefsdsd();
    }

    someCodegfgxgvcx();
  }
} 
else 
{
  someCodevxcvxcv();
}

Так виднее.
Re[3]: У кого какой стандарт кодирования на предприятие?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 11.05.09 04:55
Оценка: +3
Здравствуйте, _FRED_, Вы писали:

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


D>>1)открывающая фигурная скобка всегда на новой строке (платят НЕ за строки, если что ).


_FR>Как я посмотрю, это достаточно распространённый стиль. А почему?


Это еще МакКоннелл объяснял. Когда скобки на одном уровне проще визуально проверить их парность.
Re[11]: У кого какой стандарт кодирования на предприятие?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 12.05.09 06:14
Оценка: 23 (2)
Здравствуйте, _FRED_, Вы писали:

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


_FR>>>Или, например, в T-SQL как надо писать (где тоже BEGIN-END язык)?


S>>Мы не договоримся. Речь идет о субъективном качестве восприятия, которое еще и зависит от принятых в команде стандартов.


_FR>Пожалуйста ответь на конкретный вопрос: среди тебя или среди твоей команды как принято писать T-SQL? Переносите BEGIN-END или нет? Или не пишите и такой вопрос попросту не стоит?

Мы фактически не пишем T-SQL. BEGIN-END у нас встречаются только в deploy или update скриптах и попадают туда сгенеренные в Sql Мanagement Studio без переформатирования, т.е. фактически как SqlMS положит, так и есть. Команду это фактически не напрягает, т.к. соотношение объемов кода cs против всего SQL в проекте примерно 15Мб против 150Кб. Такой вопрос с BEGIN-END просто не вставал.

_FR>Договариваться о том, как лучше или о том, как должно быть я не буду Но мне инетерсно, наблюдается ли какая-нибудь последовательность в стандартах.

Вообще о последовательности в стандартах для разных языков (в нашей команде) речи не идет. А в рамках C# самая значительная последовательность — это то, что уже налабано слишком много кода чтобы что-то менять. Переформатировать код технически не так сложно. А вот причина изменения стандарта должна быть достаточно серьезной. Т.е. последовательность такая: приняли — пользуемся.

_FR>Вот в данном вопросе о скобочках я вижу противоречие: в языках со скобочками "Проще код читать" тогда, когда открывающая скобка на отдельной строке. Примеры такого подхода, как я и говорил и что подтверждают оценки (здесь
Автор: AndrewVK
Дата: 11.05.09
) встречаются часто. Однако, тот же подход в ни в T-SQL, ни тем более в бэйсике, почти не увидеть. Кто-нибудь может мне сказать, почему? Потому что, когда вместо скобочки текст, то "Проще код читать" по-другому? И только-то?

Не скажу, какая причина основная, но эта со скобочками — одна из причин.
Скобочки друг под другом — хорошо. Текст друг под другом — тоже хорошо. С текстом уже не так важно, расположены ли друг под другом скобки
BEGIN
END
либо какой другой текст, типа
FOR ...
END
Главное чтобы он одинаково подсвечивался средой и был бы одного регистра, тогда глаз проглотит.
А
for
}
— это для глаза тяжело увязать в пару.

S>>Вот до последней команды, в которой я работал, привык писать так:


_FR>Привыкну-не привыкну не интересно, это уже другой вопрос. Меня же интересует, как делаете и есть ли какие мысли по этому поводу кроме того, что "делаем так потому что такие правила". Ведь, наверное, "такие правила" не потому "что простакие такие и всё", а потому что "что-то ещё".

Такие правила существуют чтобы каждый член команды не форматировал код согласно своим субъективным ощущениям прекрасного. Какие они в деталях — уже не так важно, как то, что набор правил должен нравиться большинству команды. Демократия здесь уместна до тех пор пока не будет принят _единый_ стандарт.

_FR>P.S. Переубеждать кого-то в чём-то или что-то пропагандировать у меня возможности нет, флейм затеял только в качестве очередной попытки отыскать ответ на вопрос, выделенный жирным. Вернее, один вариант ответа можно найти в CodeComplete, но он, вот парадокс, расходится с видимой мне практикой

На вопрос почему со скобками я попытался ответить. По поводу обобщенного "почему" в случае принятия командных стандартов (отступы, переносы и т.п.) — ответ можно искать долго, потому как перед принятием командных стандартов как правило не производятся какие-нибудь серьезные исследования. В лучшем случае за основу берется чей-то стандарт и бегом кусочно изменяется под себя.
Re[5]: У кого какой стандарт кодирования на предприятие?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 11.05.09 06:22
Оценка: 1 (1) +1
Здравствуйте, _FRED_, Вы писали:

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


D>>>>1)открывающая фигурная скобка всегда на новой строке (платят НЕ за строки, если что ).


_FR>>>Как я посмотрю, это достаточно распространённый стиль. А почему?

G>>Это еще МакКоннелл объяснял.
_FR>МакКонелл как раз объяснял про открывающую кавыку на одной строке с ключевым словом.
А какая разница?


G>>Когда скобки на одном уровне проще визуально проверить их парность.

_FR>Вот в это не могу поверить. К тому же, мне непарность скобок показывает ИДЕ.
Это она показыват гораздо позже и зачастю гораздо менее понятно.

Пример

if(someExpression) {
  someCode();
  for(var i=0; i<N; i++) {
    if(someExpression2) {
      someCodefsdfs();
      someCodefdsfdfds();
    } else {
      someCodefsdsd();
    }
    someCodegfgxgvcx();
  }
} else {
  someCodevxcvxcv();
}
Re: У кого какой стандарт кодирования на предприятие?
От: fmiracle  
Дата: 07.05.09 07:59
Оценка: 1 (1)
Здравствуйте, The_Thing, Вы писали:

T_T>спасибо.


Мы взяли RSDN-овский текст, по мелочи изменив некоторые пункты, и выложили на внутреннем сайте

Туда же создали соответственно настроенные схемы для студии и решарпера.
Re[9]: У кого какой стандарт кодирования на предприятие?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.05.09 13:01
Оценка: +1
Здравствуйте, _FRED_, Вы писали:

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


_FR>Если нет желания флеймить, просто пошли меня нафик и я пойму: темка-то та ещё :о))


Нет, желания нет, но и посылать не стану

_FR>Но всё же: а если данный код написан на паскале или бэйсике, то как он должен выглядеть, что бы "было видно"?


_FR>Ы?

_FR>
_FR>(* сорри, не помню уже как закрываются блоки и как писать коментарий до конца строки *)
_FR>if(someExpression) begin
_FR>  someCode();
_FR>  for(var i=0; i<N; i++) begin
_FR>    if(someExpression2) begin
_FR>      someCodefsdfs();
_FR>      someCodefdsfdfds();
_FR>    end else begin
_FR>      someCodefsdsd();
_FR>    end; (* if *)
_FR>    someCodegfgxgvcx();
_FR>  end; (* for *)
_FR>end else begin
_FR>  someCodevxcvxcv();
_FR>end; (* if *)
_FR>

_FR>или

S>>Так виднее.

_FR>
_FR>if(someExpression)
_FR>begin
_FR>  someCode();
_FR>  for(var i=0; i<N; i++)
_FR>  begin
_FR>    if(someExpression2)
_FR>    begin
_FR>      someCodefsdfs();
_FR>      someCodefdsfdfds();
_FR>    end
_FR>    else
_FR>    begin
_FR>      someCodefsdsd();
_FR>    end;
_FR>    someCodegfgxgvcx();
_FR>  end;
_FR>end
_FR>else
_FR>begin
_FR>  someCodevxcvxcv();
_FR>end;
_FR>


_FR>? Оверхеда синтаксического не видно?

Нет. И кода тоже не видно. Лет 10 назад — прочитал бы второй вариант легко.

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

_FR>Или, например, в T-SQL как надо писать (где тоже BEGIN-END язык)?


Мы не договоримся. Речь идет о субъективном качестве восприятия, которое еще и зависит от принятых в команде стандартов.
Вот до последней команды, в которой я работал, привык писать так:

if(someExpression2)
    someCodefsdsd();

В последней команде стандарт такой:
if(someExpression2)
{
    someCodefsdsd();
}

Я дико возмущался такому стандарту. Но спустя 3 года привых и не нахожу здесь ничего лишнего. Даже пишу так для себя. Если поработаю 3 года в команде, где будет так
if(someExpression2) {
    someCodefsdsd();
}

То и к этому привыкну. Но не сразу. Думаю, что месяцев 3-6 уйдет.
Re[2]: У кого какой стандарт кодирования на предприятие?
От: Gaperton http://gaperton.livejournal.com
Дата: 11.05.09 13:59
Оценка: +1
Здравствуйте, Donz, Вы писали:

D>Для Java приняли Sun'овскую рекомендацию, с некоторыми оговорками:

D>1)открывающая фигурная скобка всегда на новой строке (платят НЕ за строки, если что ).

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

D>Крайней рекомендую сразу же поставить какую-нибудь приблуду, которая мониторит VCS на предмет изменений, а измененный код мониторит на соответствие соглашению по оформлению кода. Иначе получается зоопарк.


Тул — хорошо. А еще лучше — код-ревью проводить. В принципе, тогда можно и без тула, хотя тул — хорошо.
У кого какой стандарт кодирования на предприятие?
От: The_Thing Россия
Дата: 06.05.09 06:14
Оценка:
имхо...?
Хотелось бы до обеда по мск получить ответ так как собираются выслушать наши пожелания. А так как, чел который нас собирает не особо валакёт в этом деле(у нас всё так в России), не хотелось бы потом позориться за свой код прийдя в другую контору!

пишите, что от вас требуют, и какие недоработки вы видите в требованиях от вас.
спасибо.
Re: У кого какой стандарт кодирования на предприятие?
От: yumi  
Дата: 06.05.09 06:49
Оценка:
Здравствуйте, The_Thing, Вы писали:

T_T>пишите, что от вас требуют, и какие недоработки вы видите в требованиях от вас.

T_T>спасибо.

Если это С++, то у нас было основано на C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (C++ In-Depth Series) by Herb Sutter & Andrei Alexandrescu. То есть как база, бралось это, плюс наши свои дополнения.
Lisp is not dead. It’s just the URL that has changed:
http://clojure.org
Re: У кого какой стандарт кодирования на предприятие?
От: Donz Россия http://donz-ru.livejournal.com
Дата: 06.05.09 08:32
Оценка:
Здравствуйте, The_Thing, Вы писали:

T_T>имхо...?

T_T>Хотелось бы до обеда по мск получить ответ так как собираются выслушать наши пожелания. А так как, чел который нас собирает не особо валакёт в этом деле(у нас всё так в России), не хотелось бы потом позориться за свой код прийдя в другую контору!

T_T>пишите, что от вас требуют, и какие недоработки вы видите в требованиях от вас.

T_T>спасибо.

Для Java приняли Sun'овскую рекомендацию, с некоторыми оговорками:
1)открывающая фигурная скобка всегда на новой строке (платят НЕ за строки, если что ).
2)Длина строки 120-140 символов. 80 символов на строку — это законченный архаизм
3)Используем табы, один таб — два пробела, а не восемь.

Крайней рекомендую сразу же поставить какую-нибудь приблуду, которая мониторит VCS на предмет изменений, а измененный код мониторит на соответствие соглашению по оформлению кода. Иначе получается зоопарк.
Re: У кого какой стандарт кодирования на предприятие?
От: Muxa  
Дата: 06.05.09 08:42
Оценка:
решарпер (за исключением Naming Сonvention ивентов)
Re: У кого какой стандарт кодирования на предприятие?
От: The_Thing Россия
Дата: 06.05.09 09:40
Оценка:
Спасибо, всем за ответ! Если будут еще какие ответы, заранее благодарен.

Сам решил пока почитать книженцию 101 совет и посмотреть на утилитки.
Re: У кого какой стандарт кодирования на предприятие?
От: abibok  
Дата: 06.05.09 17:11
Оценка:
StyleCop + FxCop, которые ломают билд при любой ошибке. Правила без энфорсмента не имеют смысла.
Re[2]: У кого какой стандарт кодирования на предприятие?
От: Sinix  
Дата: 07.05.09 01:46
Оценка:
Здравствуйте, abibok, Вы писали:

A>StyleCop + FxCop, которые ломают билд при любой ошибке. Правила без энфорсмента не имеют смысла.


Поддерживаю.

Кстати, если кому надо — настройки для студии 2008sp1 и styleCop 4.3. Т.к. стоит куча аддинов, экспортировал только настройки текстового редактора + подсветку. Как оно выглядит — на скриншотах в архиве. Settings.StyleCop кинуть в корень папок с исходниками (например в Documents\Visual Studio 2008). Правится через контекстное меню проекта (в солюшн эксплорере)-> StyleCop settings -> вкладка "Settings Files" -> Merge with parent|Edit

На ваш страх и риск естественно
Re[2]: У кого какой стандарт кодирования на предприятие?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.05.09 20:12
Оценка:
Здравствуйте, Muxa, Вы писали:

M>решарпер (за исключением Naming Сonvention ивентов)


Кхм. Разве в решарпере есть какой то определенный рекомендованный стиль кодирования? Или речь о дефолтных настройках?
... << RSDN@Home 1.2.0 alpha 4 rev. 1212 on Windows Vista 6.1.7100.0>>
AVK Blog
Re[3]: У кого какой стандарт кодирования на предприятие?
От: Muxa  
Дата: 08.05.09 21:18
Оценка:
именно о них.
единственное что меняем это прификс филда ("_") и название переменной исключения ("ex").
Re[2]: У кого какой стандарт кодирования на предприятие?
От: _FRED_ Черногория
Дата: 10.05.09 14:14
Оценка:
Здравствуйте, Donz, Вы писали:

D>1)открывающая фигурная скобка всегда на новой строке (платят НЕ за строки, если что ).


Как я посмотрю, это достаточно распространённый стиль. А почему?
Help will always be given at Hogwarts to those who ask for it.
Re[4]: У кого какой стандарт кодирования на предприятие?
От: _FRED_ Черногория
Дата: 11.05.09 05:58
Оценка:
Здравствуйте, gandjustas, Вы писали:

D>>>1)открывающая фигурная скобка всегда на новой строке (платят НЕ за строки, если что ).


_FR>>Как я посмотрю, это достаточно распространённый стиль. А почему?


G>Это еще МакКоннелл объяснял.


МакКонелл как раз объяснял про открывающую кавыку на одной строке с ключевым словом.

G>Когда скобки на одном уровне проще визуально проверить их парность.


Вот в это не могу поверить. К тому же, мне непарность скобок показывает ИДЕ.
Help will always be given at Hogwarts to those who ask for it.
Re[6]: У кого какой стандарт кодирования на предприятие?
От: _FRED_ Черногория
Дата: 11.05.09 11:39
Оценка:
Здравствуйте, gandjustas, Вы писали:

D>>>>>1)открывающая фигурная скобка всегда на новой строке (платят НЕ за строки, если что ).

_FR>>>>Как я посмотрю, это достаточно распространённый стиль. А почему?
G>>>Это еще МакКоннелл объяснял.
_FR>>МакКонелл как раз объяснял про открывающую кавыку на одной строке с ключевым словом.
G>А какая разница?

Такая, что он _объяснял_, _почему_ другой способ является более предподчтительным.

G>>>Когда скобки на одном уровне проще визуально проверить их парность.

_FR>>Вот в это не могу поверить. К тому же, мне непарность скобок показывает ИДЕ.
G>Это она показыват гораздо позже и зачастю гораздо менее понятно.

G>Пример

G>if(someExpression) {
G>  someCode();
G>  for(var i=0; i<N; i++) {
G>    if(someExpression2) {
G>      someCodefsdfs();
G>      someCodefdsfdfds();
G>    } else {
G>      someCodefsdsd();
G>    }
G>    someCodegfgxgvcx();
G>  }
G>} else {
G>  someCodevxcvxcv();
G>}


И в что конкретно здесь смущает?

А здесь:
G>if(someExpression) {
G>  someCode();
G>  for(var i=0; i<N; i++) {
G>    if(someExpression2) {
G>      someCodefsdfs();
G>      someCodefdsfdfds();
G>    } else {
G>      someCodefsdsd();
G>    }//if
G>    someCodegfgxgvcx();
G>  }//for
G>} else {
G>  someCodevxcvxcv();
G>}//if

?
Help will always be given at Hogwarts to those who ask for it.
Re[8]: У кого какой стандарт кодирования на предприятие?
От: _FRED_ Черногория
Дата: 11.05.09 12:46
Оценка:
Здравствуйте, samius, Вы писали:

Если нет желания флеймить, просто пошли меня нафик и я пойму: темка-то та ещё :о))

S>Если честно — не видно нифига.


Но всё же: а если данный код написан на паскале или бэйсике, то как он должен выглядеть, что бы "было видно"?

Ы?
(* сорри, не помню уже как закрываются блоки и как писать коментарий до конца строки *)
if(someExpression) begin
  someCode();
  for(var i=0; i<N; i++) begin
    if(someExpression2) begin
      someCodefsdfs();
      someCodefdsfdfds();
    end else begin
      someCodefsdsd();
    end; (* if *)
    someCodegfgxgvcx();
  end; (* for *)
end else begin
  someCodevxcvxcv();
end; (* if *)

или

S>Так виднее.

if(someExpression)
begin
  someCode();
  for(var i=0; i<N; i++)
  begin
    if(someExpression2)
    begin
      someCodefsdfs();
      someCodefdsfdfds();
    end
    else
    begin
      someCodefsdsd();
    end;
    someCodegfgxgvcx();
  end;
end
else
begin
  someCodevxcvxcv();
end;


? Оверхеда синтаксического не видно?

Или, например, в T-SQL как надо писать (где тоже BEGIN-END язык)?
Help will always be given at Hogwarts to those who ask for it.
Re[10]: У кого какой стандарт кодирования на предприятие?
От: _FRED_ Черногория
Дата: 12.05.09 05:27
Оценка:
Здравствуйте, samius, Вы писали:

_FR>>Или, например, в T-SQL как надо писать (где тоже BEGIN-END язык)?


S>Мы не договоримся. Речь идет о субъективном качестве восприятия, которое еще и зависит от принятых в команде стандартов.


Пожалуйста ответь на конкретный вопрос: среди тебя или среди твоей команды как принято писать T-SQL? Переносите BEGIN-END или нет? Или не пишите и такой вопрос попросту не стоит?

Договариваться о том, как лучше или о том, как должно быть я не буду Но мне инетерсно, наблюдается ли какая-нибудь последовательность в стандартах.

Вот в данном вопросе о скобочках я вижу противоречие: в языках со скобочками "Проще код читать" тогда, когда открывающая скобка на отдельной строке. Примеры такого подхода, как я и говорил и что подтверждают оценки (здесь
Автор: AndrewVK
Дата: 11.05.09
) встречаются часто. Однако, тот же подход в ни в T-SQL, ни тем более в бэйсике, почти не увидеть. Кто-нибудь может мне сказать, почему? Потому что, когда вместо скобочки текст, то "Проще код читать" по-другому? И только-то?

S>Вот до последней команды, в которой я работал, привык писать так:


Привыкну-не привыкну не интересно, это уже другой вопрос. Меня же интересует, как делаете и есть ли какие мысли по этому поводу кроме того, что "делаем так потому что такие правила". Ведь, наверное, "такие правила" не потому "что простакие такие и всё", а потому что "что-то ещё".

P.S. Переубеждать кого-то в чём-то или что-то пропагандировать у меня возможности нет, флейм затеял только в качестве очередной попытки отыскать ответ на вопрос, выделенный жирным. Вернее, один вариант ответа можно найти в CodeComplete, но он, вот парадокс, расходится с видимой мне практикой
Help will always be given at Hogwarts to those who ask for it.
Re[11]: У кого какой стандарт кодирования на предприятие?
От: Sinix  
Дата: 12.05.09 06:17
Оценка:
Здравствуйте, _FRED_

Всё просто — скобочки на новых строках создают пустое пространство, визуально выделяя блоки кода. От begin/end такого выигрыша не будет и тут уже важнее большие отступы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.