Coding style...

Кто какой вариант кода предпочитает

Вариант 1
15
13%
Вариант 1
15
13%
Вариант 2
34
30%
Вариант 2
34
30%
Вариант 3
3
3%
Вариант 3
3
3%
Свой вариант
5
4%
Свой вариант
5
4%
 
Total votes: 114

User avatar
OBender
Уже с Приветом
Posts: 1564
Joined: 27 Nov 2001 10:01
Location: Live free or die

Coding style...

Post by OBender »

Вот захотелось выяснить расстановку сил по такому очень простому вопросу. И так для упрощения пула приведу примеры кода:

Вариант 1.

Code: Select all

function f(){
        while(...){
          //line 1
        }

        if(...){
          //line 1
          //line 2
          ...
          //line N
        }
}


Вариант 2.

Code: Select all

function f()
{
        while(...)
        {
          //line 1
        }

        if(...)
        {
          //line 1
          //line 2
          ...
          //line N
        }
}


Вариант 3.

Code: Select all

function f()
{
        while(...){
          //line 1
        }

        if(...)
        {
          //line 1
          //line 2
          ...
          //line N
        }
}


Кто что предпочитает и по чему? Коментарии welcome
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
User avatar
Mic
Уже с Приветом
Posts: 6906
Joined: 20 Apr 1999 09:01
Location: Seattle

Post by Mic »

Предпочитаю вариант 2. Почему? Читать удобнее, меньше напрягаешься - выше работособность, ниже раздражительность.
А вообще про стили можно много спорить. У кого-как, для меня главное, чтобы когда я открою свой код через год, мне было необходимо минимум времени чтобы вспомнить что к чему. Для других - уложить всю логику в три строки. Я не против трех строк, но почему потом я в этом дерьме должен разбираться, чтобы исправить ошибки "великоумных"?
Olegus
Уже с Приветом
Posts: 4642
Joined: 18 Jan 2001 10:01
Location: Kharkov,UA->MA->WA->CT

Post by Olegus »

2-й, только вместо {..} - begin .. end ;)
Надо радоваться, не надо напрягаться..
User avatar
Veselchak U
Уже с Приветом
Posts: 1787
Joined: 27 Nov 2002 05:24
Location: Sevastopol --> Ft. Lauderdale-->Boston-->Chicago

Post by Veselchak U »

Я применяю вариант 2. Привык я так... А прагматичный ответ на вопрос по стилю обычно таков: Выберите один стиль и пусть все пользуются им на проекте.
User avatar
Veselchak U
Уже с Приветом
Posts: 1787
Joined: 27 Nov 2002 05:24
Location: Sevastopol --> Ft. Lauderdale-->Boston-->Chicago

Post by Veselchak U »

Кстати, еще одно преимущество 2-го варианта: если контора -- мрак, и вашу производительность меряют килолоками (1000 uncommented lines of code), то в каждом блоке пару строчек кода добавляется за так. :wink:
User avatar
OBender
Уже с Приветом
Posts: 1564
Joined: 27 Nov 2001 10:01
Location: Live free or die

Post by OBender »

Кстати те кто голосуют за свой вариант приводите примеры плиз.
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
User avatar
CTAC_P
Уже с Приветом
Posts: 6789
Joined: 01 Jun 2001 09:01

Post by CTAC_P »

Code: Select all

function f(){ 
        while(...)
          //line 1;

        if(...)
        {
          //line 1
          //line 2
          ...
          //line N
        }
}
[/quote]
Hamster
Уже с Приветом
Posts: 11475
Joined: 20 Nov 2000 10:01
Location: Escondido, CA

Post by Hamster »

Вариант 2, как самый читабельный.
Особый случай: если внутри оператора if/while/for только один оператор ( одна строчка ), фигурные скобки не ставятся.
То есть,

Code: Select all

for(x=0; x<100; x++)
    fun(x);

но

Code: Select all

for(x=0; x<100; x++)
{
    if(x & 1)
         fun(x);
    else
         fun2(x);
}
User avatar
Veselchak U
Уже с Приветом
Posts: 1787
Joined: 27 Nov 2002 05:24
Location: Sevastopol --> Ft. Lauderdale-->Boston-->Chicago

Post by Veselchak U »

Я привык ставить фигурные скобки всегда, даже если они для одного statement-а. Автоматом избегается ошибка, когда добавляется statement, а скобки ставить забываются...
yocto
Уже с Приветом
Posts: 3640
Joined: 13 Sep 1999 09:01
Location: Canada

Post by yocto »

Veselchak U wrote:Кстати, еще одно преимущество 2-го варианта: если контора -- мрак, и вашу производительность меряют килолоками (1000 uncommented lines of code), то в каждом блоке пару строчек кода добавляется за так. :wink:


Тггда лучше так

Code: Select all

   while
   (
   1
   ==
   1
   {
   };
User avatar
DenisM
Уже с Приветом
Posts: 1976
Joined: 08 Jun 1999 09:01
Location: SPb -> SFBA -> Beaverton, OR

Post by DenisM »

Veselchak U wrote:Я привык ставить фигурные скобки всегда, даже если они для одного statement-а. Автоматом избегается ошибка, когда добавляется statement, а скобки ставить забываются...


Аналогично, коллега :)

У меня есть пара исключений из стиля 2):

Code: Select all

// 1. цепочка if'ов
if( condtion1 )
{
  // ...
}
else if( condition2 )
{
  // ...
}
else
{
  // ...
}

// 2. switch с большим количеством простых case
switch( expression )
{
  case case1: { X = 1; break; }
  case case2: { X = 2; break; }
  // a lot of cases here
  case caseN: { X = N; break; }
}


Еще несколько вопросов по стилю:
1) А кто какой tab/ident size использует? Я - 2 символа.
2) Ваше отношение к Hungarian Notation ( strMessage, nStep, chDelimiter ) ?
3) 'm_' или '_' или вообще без префикса перед class data members?
4) nVariableName vs variable_name
User avatar
Veselchak U
Уже с Приветом
Posts: 1787
Joined: 27 Nov 2002 05:24
Location: Sevastopol --> Ft. Lauderdale-->Boston-->Chicago

Post by Veselchak U »

yocto wrote:
Veselchak U wrote:Кстати, еще одно преимущество 2-го варианта: если контора -- мрак, и вашу производительность меряют килолоками (1000 uncommented lines of code), то в каждом блоке пару строчек кода добавляется за так. :wink:


Тггда лучше так

Code: Select all

   while
   (
   1
   ==
   1
   {
   };

yocto, мне платят деньги за код, который можно откомпилировать... :umnik1: Вот вам и главный недостаток Вашего (пусть шутейного) варианта -- Вы допустили элементарную ошибку, которую не сделали бы, если бы выбрали Вариант 2. А ведь Вы -- стреляный воробей, yocto. :wink: Мой (вариант 2) стиль -- принимается другими программерами как нормальный. Добавление пары линий кода -- это не главная его цель, а побочный эффект. Впрочем, я уверен, что Вы пошутили. :gen1:
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

DenisM wrote:У меня есть пара исключений из стиля 2):

Аналогично.
Еще несколько вопросов по стилю:
1) А кто какой tab/ident size использует? Я - 2 символа.

4 символа
2) Ваше отношение к Hungarian Notation ( strMessage, nStep, chDelimiter ) ?

В большинстве случаев отрицательное. Затрудняют восприятие текста.
3) 'm_' или '_' или вообще без префикса перед class data members?

_ : но это личное прдпочтение. Ничем не обоснованое
4) nVariableName vs variable_name

variabaleName - пора забывать про ДОС :mrgreen:
User avatar
CTAC_P
Уже с Приветом
Posts: 6789
Joined: 01 Jun 2001 09:01

Post by CTAC_P »

DenisM wrote:1) А кто какой tab/ident size использует?

:х
Tab = Tab! :umnik1:
В редакторе поставьте, насколько вам двигать.
User avatar
Veselchak U
Уже с Приветом
Posts: 1787
Joined: 27 Nov 2002 05:24
Location: Sevastopol --> Ft. Lauderdale-->Boston-->Chicago

Post by Veselchak U »

DenisM wrote:
Veselchak U wrote:Я привык ставить фигурные скобки всегда, даже если они для одного statement-а. Автоматом избегается ошибка, когда добавляется statement, а скобки ставить забываются...


Аналогично, коллега :)

У меня есть пара исключений из стиля 2):

Code: Select all

// 1. цепочка if'ов
if( condtion1 )
{
  // ...
}
else if( condition2 )
{
  // ...
}
else
{
  // ...
}

// 2. switch с большим количеством простых case
switch( expression )
{
  case case1: { X = 1; break; }
  case case2: { X = 2; break; }
  // a lot of cases here
  case caseN: { X = N; break; }
}


Еще несколько вопросов по стилю:
1) А кто какой tab/ident size использует? Я - 2 символа.
2) Ваше отношение к Hungarian Notation ( strMessage, nStep, chDelimiter ) ?
3) 'm_' или '_' или вообще без префикса перед class data members?
4) nVariableName vs variable_name


Спасибо за поддержку, Денис! В общем, многие конторы имеют стандарты написания кода, и тогда подобными вопросами обычно не задаешься. Например, на нынешнем проекте я вынужден использовать индент в 4 символа, хотя предпочитаю 3. Венгерскую нотацию -- не люблю!!! Я использую так называемую Верблюжью нотацию (nVariableName) в C++, а variable_name - в C. Префиксы совсем не ставлю, хотя это может и неплохая идея.

В книге <a href = "http://www.amazon.com/exec/obidos/ASIN/1556154844/qid=1064524411/sr=2-1/ref=sr_2_1/002-2264148-6406412">Code Complete</a> много внимания уделено вопросу стиля. Если есть время и желание, прочтите, не пожалеете.

Return to “Вопросы и новости IT”