Нестандартный стиль быдлокодера
От: Khimik  
Дата: 16.01.15 20:01
Оценка: -1 :))) :))) :))) :))
Я никогда не работал на работодателя, и у меня в ходе написания моей программы сформировался собственный стиль кода. Вот два фрагмента Delphi-кода моей программы:

case lowercase(curstrings[0])[1] of
'v': begin//Вектор
et:=vetOneArrow;
if curstrings.Count>7 then if lowercase(curstrings[7])='n' then et:=vetNoArrows;
if curstrings.Count>8 then begin
AddCustomVector(vector(strtofloat(curstrings[1]),strtofloat(curstrings[2]),strtofloat(curstrings[3])),vector(strtofloat(curstrings[4]),strtofloat(curstrings[5]),strtofloat(curstrings[6])),false,et,strtofloat(curstrings[8]),strtofloat(curstrings[9]),floatcolor(strtofloat(curstrings[10]),strtofloat(curstrings[11]),strtofloat(curstrings[12])),strtofloat(curstrings[13]));
end
else AddCustomVector(vector(strtofloat(curstrings[1]),strtofloat(curstrings[2]),strtofloat(curstrings[3])),vector(strtofloat(curstrings[4]),strtofloat(curstrings[5]),strtofloat(curstrings[6])),true,et,0,0,floatcolor(0,0,0),0);
end;//v
'p': begin//Плоскость
pltransp:=true;
if curstrings.Count>13 then if lowercase(curstrings[13])='n' then pltransp:=false;
if curstrings.Count>14 then begin
AddCustomPlane(vector(strtofloat(curstrings[1]),strtofloat(curstrings[2]),strtofloat(curstrings[3])),vector(strtofloat(curstrings[4]),strtofloat(curstrings[5]),strtofloat(curstrings[6])),vector(strtofloat(curstrings[7]),strtofloat(curstrings[8]),strtofloat(curstrings[9])),vector(strtofloat(curstrings[10]),strtofloat(curstrings[11]),strtofloat(curstrings[12])),false,floatcolor(strtofloat(curstrings[14]),strtofloat(curstrings[15]),strtofloat(curstrings[16])),strtofloat(curstrings[17]),pltransp);
end
else AddPlane(vector(strtofloat(curstrings[1]),strtofloat(curstrings[2]),strtofloat(curstrings[3])),vector(strtofloat(curstrings[4]),strtofloat(curstrings[5]),strtofloat(curstrings[6])),vector(strtofloat(curstrings[7]),strtofloat(curstrings[8]),strtofloat(curstrings[9])),vector(strtofloat(curstrings[10]),strtofloat(curstrings[11]),strtofloat(curstrings[12])),0,false);
end;//p
end;//case



for q:=0 to groups.Count-2 do begin
if not hasnums[q] then continue;
for w:=q+1 to groups.Count-1 do begin
if not hasnums[w] then continue;
if tpointgroup(groups[q]).Name<>tpointgroup(groups[w]).Name then continue;
if tpointgroup(groups[q]).GeneratorsCount<>tpointgroup(groups[w]).GeneratorsCount then continue;
curequal:=tpointgroup(groups[q]).MainOperationsEqual(tpointgroup(groups[w]));
if curequal then begin
//У двух групп одинаковые номера соответствия. Значит, одну из этих групп, у которой больше расхождение, следует удалить
if displvals[q]>displvals[w] then begin hasnums[q]:=false; break; end
else begin hasnums[w]:=false; continue; end;
end;//if
end;//next w
end;//next q


Здесь в браузере обрезаются строки, а так у меня в коде могут быть строки больше 500 символов.

Мои особенности стиля:
1) Нет стандартных пробелов в начале каждой строки.
2) Во многих местах стоят мелкие комментарии, например часто после end; — это может быть конец цикла, конец условного оператора и т.д., соответственно после end-а пишу //next x и т.п.
3) Довольно часто несколько операторов помещаются в одну строку, например какое-то действие и exit; или break;

Я одно время пытался перейти на стандартный стиль, но пришёл к выводу что мой собственный удобнее, по крайней мере для меня. Например, мне лень расставлять правильные пробелы в каждой строке; без этих пробелов возникает проблема, что иногда трудно различить, какому begin-у соответствует каждый end, и для решения этой проблемы после end-ов часто ставятся комментарии (next I, end if, end case и т.п.). Код, на мой взгляд, выглядит компактнее и удобнее для чтения, если во многих случаях в одну строку помещается много операторов (обычно вся такая строка выглядит как обособленный участок кода).


Пожалуйста не пинайте меня, профессиональные офисные программеры, лучше скажите – где-нибудь ещё может использоваться похожий стиль?

Убедительная просьба использовать специальные теги для оформления кода
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Отредактировано 18.01.2015 20:25 Mamut [ищите в других сетях] . Предыдущая версия .
Re: Нестандартный стиль быдлокодера
От: VladFein США  
Дата: 16.01.15 20:13
Оценка: +14 :))) :))) :))) :))
Здравствуйте, Khimik, Вы писали:

K>Пожалуйста не пинайте меня, профессиональные офисные программеры, лучше скажите – где-нибудь ещё может использоваться похожий стиль?


Надеюсь что нет.
Re: Нестандартный стиль быдлокодера
От: _NN_ www.nemerleweb.com
Дата: 16.01.15 20:13
Оценка: +2
Здравствуйте, Khimik, Вы писали:

Мое мнение, лучше длинные строки разбивать.
Неудобно бегать туда-сюда.
Обычно открываю два файла параллельно, тогда совсем трудно становится такой код читать.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Нестандартный стиль быдлокодера
От: Sinix  
Дата: 16.01.15 20:20
Оценка: +2 -1 :)))
Здравствуйте, Khimik, Вы писали:

K>Пожалуйста не пинайте меня, профессиональные офисные программеры, лучше скажите – где-нибудь ещё может использоваться похожий стиль?

Используется конечно. Обфускаторы примерно по тому же принципу работают


Если серьёзно, то коммерческий код должен покрывать ровно две цели:
1. Решать проблему заказчика.
2. После того, как выяснится, что код решает не ту проблему и не так, код правится без обращения к автору кода любым из разработчиков в команде. Даже если он видит этот код в первый раз.

Что-то я не уверен, что со вторым пунктом у вас всё ок.
Re[2]: Нестандартный стиль быдлокодера
От: elmal  
Дата: 16.01.15 20:56
Оценка: :))) :)
Здравствуйте, VladFein, Вы писали:

VF>Надеюсь что нет.

Зря надеешься. Код после обработки обфускаторами конечно читается получше чем этот, но все таки стиль очень похож. Топикстартеру просто браво, я думал я все в этой жизни видел, меня ничем не удивить, по в плане метрик WTF в коде этот шедевр переплюнуть просто нереально. Первое место просто — такой стиль перебил класс с двумя методами на 10000 строк со сплошными копипастами и мешаниной табов из пробелов и сбившимися отсупами, а это нужно умудриться. И это еще тривиальный код, я полагаю автор на средней задаче в состоянии развернуться гораздо круче, чем здесь показал.
Re[2]: Нестандартный стиль быдлокодера
От: Khimik  
Дата: 16.01.15 20:57
Оценка:
S>Если серьёзно, то коммерческий код должен покрывать ровно две цели:
S>1. Решать проблему заказчика.
S>2. После того, как выяснится, что код решает не ту проблему и не так, код правится без обращения к автору кода любым из разработчиков в команде. Даже если он видит этот код в первый раз.

S>Что-то я не уверен, что со вторым пунктом у вас всё ок.


А если код нужен только одному человеку (шароварщику)?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[3]: Нестандартный стиль быдлокодера
От: LaptevVV Россия  
Дата: 16.01.15 21:00
Оценка: +1
Здравствуйте, Khimik, Вы писали:

S>>Если серьёзно, то коммерческий код должен покрывать ровно две цели:

S>>1. Решать проблему заказчика.
S>>2. После того, как выяснится, что код решает не ту проблему и не так, код правится без обращения к автору кода любым из разработчиков в команде. Даже если он видит этот код в первый раз.

S>>Что-то я не уверен, что со вторым пунктом у вас всё ок.


K>А если код нужен только одному человеку (шароварщику)?

Тогда никаких проблем нет.
Пока ты пишешь только для себя — можно писать как угодно, лишь бы тебе самому было удобно.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Нестандартный стиль быдлокодера
От: elmal  
Дата: 16.01.15 21:02
Оценка: +5 :)))
Здравствуйте, Khimik, Вы писали:

K>Мои особенности стиля:

K>1) Нет стандартных пробелов в начале каждой строки.
K>2) Во многих местах стоят мелкие комментарии, например часто после end; — это может быть конец цикла, конец условного оператора и т.д., соответственно после end-а пишу //next x и т.п.
K>3) Довольно часто несколько операторов помещаются в одну строку, например какое-то действие и exit; или break;
Здесь конечно сложно что то усовершенствовать, но я попробую. Советую имена переменных называть из смеси катайских, финских, иврита слов. Можно еще какие нидь языки всяких исчезнувших цивилизаций подключить. Не намного конечно, но будет еще круче. А, дельфя вроде юникод не поддерживает? Эххх, плохо. Ну, тогда эту смесь языков можно транслитом попробовать писать.
Re: Нестандартный стиль быдлокодера
От: vsb Казахстан  
Дата: 16.01.15 21:13
Оценка:
Такой стиль вряд ли где-то используется в "групповом" программировании.

Раньше был принят стандарт в ширину 80 символов практически во всех языках. Сейчас чуть побольше, но с другой стороны сейчас на всех языках код выглядит примерно одинаково в плане форматирования (отступы, пробелы между операторами и тд). И сейчас максимальная ширина кода всё равно ограничивается (самый популярный стиль, наверное, 120 символов).

Поэтому все профессиональные разработчики сейчас пишут примерно одинаково, в том числе и чтобы понимать друг друга. Необычные стили вроде приведённого могут встречаться либо у одиночек, либо в каких-то очень изолированных непрофессиональных коллективах.
Re[4]: Нестандартный стиль быдлокодера
От: VladFein США  
Дата: 16.01.15 21:14
Оценка: +9
Здравствуйте, LaptevVV, Вы писали:

LVV>Пока ты пишешь только для себя — можно писать как угодно, лишь бы тебе самому было удобно.


Есть мнение, что "ты сам" через пару лет — уже другой
Re: Нестандартный стиль быдлокодера
От: andy1618 Россия  
Дата: 16.01.15 21:14
Оценка: +1
Здравствуйте, Khimik, Вы писали:

Для начала: на RSDN есть средства подсветки кода:

case lowercase(curstrings[0])[1] of
'v': begin//Вектор
et:=vetOneArrow;
if curstrings.Count>7 then if lowercase(curstrings[7])='n' then et:=vetNoArrows;
if curstrings.Count>8 then begin
AddCustomVector(vector(strtofloat(curstrings[1]),strtofloat(curstrings[2]),strtofloat(curstrings[3])),vector(strtofloat(curstrings[4]),strtofloat(curstrings[5]),strtofloat(curstrings[6])),false,et,strtofloat(curstrings[8]),strtofloat(curstrings[9]),floatcolor(strtofloat(curstrings[10]),strtofloat(curstrings[11]),strtofloat(curstrings[12])),strtofloat(curstrings[13]));
end
else AddCustomVector(vector(strtofloat(curstrings[1]),strtofloat(curstrings[2]),strtofloat(curstrings[3])),vector(strtofloat(curstrings[4]),strtofloat(curstrings[5]),strtofloat(curstrings[6])),true,et,0,0,floatcolor(0,0,0),0);
end;//v
'p': begin//Плоскость
pltransp:=true;
if curstrings.Count>13 then if lowercase(curstrings[13])='n' then pltransp:=false;
if curstrings.Count>14 then begin
AddCustomPlane(vector(strtofloat(curstrings[1]),strtofloat(curstrings[2]),strtofloat(curstrings[3])),vector(strtofloat(curstrings[4]),strtofloat(curstrings[5]),strtofloat(curstrings[6])),vector(strtofloat(curstrings[7]),strtofloat(curstrings[8]),strtofloat(curstrings[9])),vector(strtofloat(curstrings[10]),strtofloat(curstrings[11]),strtofloat(curstrings[12])),false,floatcolor(strtofloat(curstrings[14]),strtofloat(curstrings[15]),strtofloat(curstrings[16])),strtofloat(curstrings[17]),pltransp);
end
else AddPlane(vector(strtofloat(curstrings[1]),strtofloat(curstrings[2]),strtofloat(curstrings[3])),vector(strtofloat(curstrings[4]),strtofloat(curstrings[5]),strtofloat(curstrings[6])),vector(strtofloat(curstrings[7]),strtofloat(curstrings[8]),strtofloat(curstrings[9])),vector(strtofloat(curstrings[10]),strtofloat(curstrings[11]),strtofloat(curstrings[12])),0,false);
end;//p
end;//case


for q:=0 to groups.Count-2 do begin
if not hasnums[q] then continue;
for w:=q+1 to groups.Count-1 do begin
if not hasnums[w] then continue;
if tpointgroup(groups[q]).Name<>tpointgroup(groups[w]).Name then continue;
if tpointgroup(groups[q]).GeneratorsCount<>tpointgroup(groups[w]).GeneratorsCount then continue;
curequal:=tpointgroup(groups[q]).MainOperationsEqual(tpointgroup(groups[w]));
if curequal then begin
//У двух групп одинаковые номера соответствия. Значит, одну из этих групп, у которой больше расхождение, следует удалить
if displvals[q]>displvals[w] then begin hasnums[q]:=false; break; end
else begin hasnums[w]:=false; continue; end;
end;//if
end;//next w
end;//next q
Re[2]: Нестандартный стиль быдлокодера
От: andy1618 Россия  
Дата: 16.01.15 21:26
Оценка:
Здравствуйте, andy1618, Вы писали:

A>Для начала: на RSDN есть средства подсветки кода...



Про длину строк: в крайнем проекте, который мы делали (Python, C++), пришли к ограничению в 120 символов из
соображений, что при мерджинге изменений в VCS строка должна два раза целиком умещаться на экран,
иначе просмотр диффа резко становится утомительным.

Про несколько операторов в одной строке: это плохо, т.к. невозможно ставить брейкпойнты (окно дизассемблера не в счёт).

Про комментарии в закрывающих end: вполне полезны, независимо от наличия/отсутствия отступов.

Ну и, в завершение, банальщина от М.Фаулера:
"Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку."
Re: Нестандартный стиль быдлокодера
От: jhfrek Россия  
Дата: 16.01.15 21:46
Оценка:
Здравствуйте, Khimik, Вы писали:

K>3) Довольно часто несколько операторов помещаются в одну строку, например какое-то действие и exit; или break;

K>Я одно время пытался перейти на стандартный стиль, но пришёл к выводу что мой собственный удобнее, по крайней мере для меня. Например, мне лень расставлять правильные пробелы в каждой строке; без этих пробелов возникает проблема, что иногда трудно различить, какому begin-у соответствует каждый end, и для решения этой проблемы после end-ов часто ставятся комментарии (next I, end if, end case и т.п.). Код, на мой взгляд, выглядит компактнее и удобнее для чтения, если во многих случаях в одну строку помещается много операторов (обычно вся такая строка выглядит как обособленный участок кода).

когда напишите проект из хотя бы тысячи строк такого кода, вернитесь к нему через пару-тройку лет и попробуйте изменить и потом отладить. А еще лучше найдите единомышленника с проектом на тысячу строк и попробуйте внести в его код изменения и их отладить. Причем в отсутствии единомышленника(считайте что он уволился несколько лет назад)

Мне всегда хочется убить подобных "экономистов", потому что ни брекпоинт не поставить, ни посмотреть как переменные меняются — каждая строчка как "черный ящик". Туда же идут любители процедур на несколько экранов. И любители if и циклов десятерной вложенности (отсутствие подобного г. заодно решит проблему с next I, end if, end case в комментариях)

ЗЫ. И почитайте что-нибудь современнее книжек прошлого века, когда обособляли макросами и цветными разделителями в стопке перфокарт. Обособленный участок кода — это отдельный метод, носящий понятное имя и принадлежащий правильному объекту.
Re[5]: Нестандартный стиль быдлокодера
От: LaptevVV Россия  
Дата: 16.01.15 21:48
Оценка: +1 :)
Здравствуйте, VladFein, Вы писали:

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


LVV>>Пока ты пишешь только для себя — можно писать как угодно, лишь бы тебе самому было удобно.


VF>Есть мнение, что "ты сам" через пару лет — уже другой

Шароварщик — это вряд ли.
ТС пишет же, что он НИКОГДА не работал программистом в конторе...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Нестандартный стиль быдлокодера
От: jhfrek Россия  
Дата: 16.01.15 22:02
Оценка: :)
Здравствуйте, elmal, Вы писали:

E>Зря надеешься. Код после обработки обфускаторами конечно читается получше чем этот, но все таки стиль очень похож. Топикстартеру просто браво, я думал я все в этой жизни видел, меня ничем не удивить, по в плане метрик WTF в коде этот шедевр переплюнуть просто нереально.


а вот хрен — func1(func2(func3(x), func4(x)*func5(y)), func6(z)?func7(x):func8(func2(x, y), z).... дальше мне лень писать, причем все это с осмысленными именами типа CalcSumIfFirstParmInRangeAndCoefIsGreaterThenSecondParam, в одну строчку при автоматическом переносе порождающее с десяток строк.

Или набор классов с конструкторами с несколькими десятками(!!!!!) параметров причем десяток последних — умолчальные
Re[3]: Нестандартный стиль быдлокодера
От: Vaako Украина  
Дата: 17.01.15 08:34
Оценка: +3
Здравствуйте, Khimik, Вы писали:

S>>Что-то я не уверен, что со вторым пунктом у вас всё ок.

K>А если код нужен только одному человеку (шароварщику)?

Поверь, через пару лет ты не захочешь лезть разбираться где ошибка в коде
Вот захочешь тут ковыряться, хотя и выглядит набмого читабельнее, но никакого желания и удовольствия искать ошибку не вызывает.
procedure TSeed2.Steim2;
var
  flag:boolean;
  i,j,X,Y,count,p:integer;
  ii:integer;
begin
  ClrD0;
  if NN>$19C9 then begin SeedInfo:='File garbled';exit;end;//Number of samples (6601max)
  beg:=(DI(44)shl 8)+DI(45); //Beginning of data
  j:=beg;//IN Byte count
  p:=0;    //OUT Byte count
  repeat
    i:=0;
    while i<16 do
    begin
      NIBBLE[i]:=  (DI(i div 4+j) and $C0) shr 6;
      NIBBLE[i+1]:=(DI(i div 4+j) and $30) shr 4;
      NIBBLE[i+2]:=(DI(i div 4+j) and $0C) shr 2;
      NIBBLE[i+3]:=(DI(i div 4+j) and $03);
      //form1.memo1.Lines.Add('Nibble['+inttostr(i)+']= '+inttostr(NIBBLE[i]));
      //form1.memo1.Lines.Add('Nibble['+inttostr(i+1)+']= '+inttostr(NIBBLE[i+1]));
      //form1.memo1.Lines.Add('Nibble['+inttostr(i+2)+']= '+inttostr(NIBBLE[i+2]));
      //form1.memo1.Lines.Add('Nibble['+inttostr(i+3)+']= '+inttostr(NIBBLE[i+3]));
      i:=i+4;//printf("%X ",j);getch();
    end;
    if(NIBBLE[0]=0)and(NIBBLE[1]=0)and(NIBBLE[2]=0)then
    begin
      flag:=true;//cout<<"+\n";
      DD[0]:=DI(j+4);DD[1]:=DI(j+5);DD[2]:=DI(j+6);DD[3]:=DI(j+7);
      D0[p]:=(DD[0] shl 24)+(DD[1] shl 16)+(DD[2] shl 8)+DD[3];//first  (real)
      p:=p+1;
    end else flag:=false;

    for i:=0 to 15 do
    begin
      case NIBBLE[i] of
      0: j:=j+4;
      1:begin
          DD[0]:=DI(j);  if(DI(j)  and $80)<>0 then DD[0]:=integer($FFFFFF00 or DI(j));
          DD[1]:=DI(j+1);if(DI(j+1)and $80)<>0 then DD[1]:=integer($FFFFFF00 or DI(j+1));
          DD[2]:=DI(j+2);if(DI(j+2)and $80)<>0 then DD[2]:=integer($FFFFFF00 or DI(j+2));
          DD[3]:=DI(j+3);if(DI(j+3)and $80)<>0 then DD[3]:=integer($FFFFFF00 or DI(j+3));
          D0[p]:=D0[p-1]+DD[0];
          if not(flag and(i=3))then p:=p+1  //skip first diff
          else if(p>1)and(p<=MAX_D0)then if ((D0[p-2]+DD[0])<>D0[p-1])
          then begin //info(2,'Error630 '+inttostr(D0[p-2]+DD[0])+' '+inttostr(D0[p-1]));X:=X+1;
          end;
          D0[p]:=D0[p-1]+DD[1];p:=p+1;
          D0[p]:=D0[p-1]+DD[2];p:=p+1;
          D0[p]:=D0[p-1]+DD[3];p:=p+1;
          j:=j+4;
        end;
      2:begin
          DD[0]:=DI(j);DD[1]:=DI(j+1);DD[2]:=DI(j+2);DD[3]:=DI(j+3);
          DD[0]:=(DD[0] shl 24)or(DD[1] shl 16)or(DD[2] shl 8)or DD[3];
          if((DI(j)and $C0)=$40)then
          begin    //dnib=01  (30)
            DD[1]:=DD[0]and $3fffffff;
            //if(DD[1] and $20000000)<>0 then DD[1] :=DD[1] or $C0000000;
            if(DD[1] and $20000000)<>0 then
              DD[1] := DD[1] or $C0000000;
            D0[p]:=D0[p-1]+DD[1];// printf("%x %X  ",DI[j-27],NIBBLE[6]);
            if(not(flag and (i=3)))then p:=p+1  //skip first diff
            else if p>1 then if((D0[p-2]+DD[1])<>D0[p-1])then
            begin
              //info(2,'Error646 '+inttostr(D0[p-2]+DD[1])+' '+inttostr(D0[p-1]));
              X:=X+1;
            end;
            j:=j+4;
          end else
          if((DI(j)and $C0)=$80)then    //dnib=10  (2*15)
          begin
            DD[1]:=(DD[0]shr 15)and $00007fff;if(DD[1]and $00004000)<>0 then DD[1]:=DD[1] or integer($ffff8000);
            D0[p]:=D0[p-1]+DD[1];
            if(not(flag and(i=3)))then p:= p+1  //skip first diff
            else if p>1 then if((D0[p-2]+DD[1])<>D0[p-1]) then
            begin
              //info(2,'Error657 '+inttostr(D0[p-2]+DD[1])+' '+inttostr(D0[p-1]));
              X:=X+1;
            end;
            DD[1]:=DD[0]and $00007fff;if(DD[1]and $00004000)<>0 then DD[1]:=DD[1]or integer($ffff8000);
            D0[p]:=D0[p-1]+DD[1];
            p:=p+1;
            j:=j+4;
          end else
          if((DI(j) and $C0)=$C0)then    //dnib=11  (3*10)
          begin
            DD[1]:=(DD[0]shr 20)and $000003ff;if(DD[1]and $00000200)<>0 then DD[1]:=DD[1] or integer($fffffC00);
            D0[p]:=D0[p-1]+DD[1];
            if(not(flag and(i=3)))then p:=p+1  //skip first diff
            else if(p>1) then if((D0[p-2]+DD[1])<>D0[p-1]) then
            begin
              //info(2,'Error671 '+inttostr(D0[p-2]+DD[1])+' '+inttostr(D0[p-1]));
              X:=X+1;
            end;
            DD[1]:=(DD[0]shr 10)and $000003ff;if(DD[1]and $00000200)<>0 then DD[1]:=DD[1]or integer($fffffC00);
            D0[p]:=D0[p-1]+DD[1];p:=p+1;
            DD[1]:=DD[0]and $000003ff;if(DD[1]and $00000200)<>0 then DD[1]:=DD[1]or integer($fffffC00);
            D0[p]:=D0[p-1]+DD[1];p:=p+1;
            j:=j+4;
          end;
    end;
      3:begin
          DD[0]:=DI(j);DD[1]:=DI(j+1);DD[2]:=DI(j+2);DD[3]:=DI(j+3);
          DD[0]:=(DD[0]shl 24)or(DD[1]shl 16)or(DD[2]shl 8)or DD[3];
          //printf(" ^%lx^ ",DD[0]);
          if((DI(j)and $C0)=$00)then    //dnib=00  (5*6)
          begin
            DD[1]:=(DD[0]shr 24)and $0000003f;if(DD[1]and $00000020)<>0
              then DD[1]:=DD[1]or integer($ffffffC0);
            D0[p]:=D0[p-1]+DD[1];
            if(not(flag and(i=3)))then p:=p+1  //skip first diff
            else if p>1 then if((D0[p-2]+DD[1])<>D0[p-1])then
              begin
                //info(2,'Error691 '+inttostr(D0[p-2]+DD[1])+' '+inttostr(D0[p-1]));
                X:=X+1;
              end;
            DD[1]:=(DD[0]shr 18)and $0000003f;if(DD[1]and $00000020)<>0
              then DD[1]:=DD[1]or integer($ffffffC0);
            D0[p]:=D0[p-1]+DD[1];p:=p+1;
            DD[1]:=(DD[0]shr 12)and $0000003f;if(DD[1]and $00000020)<>0
              then DD[1]:=DD[1]or integer($ffffffC0);
            D0[p]:=D0[p-1]+DD[1];p:=p+1;
            DD[1]:=(DD[0]shr 6)and $0000003f;if(DD[1]and $00000020)<>0
              then DD[1]:=DD[1]or integer($ffffffC0);
            D0[p]:=D0[p-1]+DD[1];p:=p+1;
            DD[1]:=(DD[0])and $0000003f;if(DD[1]and $00000020)<>0
              then DD[1]:=DD[1]or integer($ffffffC0);
            D0[p]:=D0[p-1]+DD[1];p:=p+1; //printf(" ^%lx^ ",DD[0]);
            j:=j+4;
          end else
          if((DI(j)and $C0)=$40)then    //dnib=01  (6*5)
          begin
            DD[1]:=(DD[0]shr 25)and $0000001f;if(DD[1]and $00000010)<>0
              then DD[1]:=DD[1]or integer($ffffffE0);
            D0[p]:=D0[p-1]+DD[1];
            if(not(flag and(i=3)))then p:=p+1  //skip first diff
            else if(p>1)then if((D0[p-2]+DD[1])<>D0[p-1]) then
            begin
              //info(2,'Error710 '+inttostr(D0[p-2]+DD[1])+' '+inttostr(D0[p-1]));
              X:=X+1;
            end;
            DD[1]:=(DD[0]shr 20)and $0000001f;if(DD[1]and $00000010)<>0
              then DD[1]:=DD[1]or integer($ffffffE0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]shr 15)and $0000001f;if(DD[1]and $00000010)<>0
              then DD[1]:=DD[1]or integer($ffffffE0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]shr 10)and $0000001f;if(DD[1]and $00000010)<>0
              then DD[1]:=DD[1]or integer($ffffffE0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]shr 5)and $0000001f;if(DD[1]and $00000010)<>0
              then DD[1]:=DD[1]or integer($ffffffE0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]    )and $0000001f;if(DD[1]and $00000010)<>0
              then DD[1]:=DD[1]or integer($ffffffE0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            j:=j+4;
          end else
          if((DI(j)and $C0)=$80)then    //dnib=10  (7*4) 0xC0 11***************
          begin
            DD[1]:=(DD[0]shr 24)and $0000000f;if(DD[1]and $00000008)<>0
              then DD[1]:=DD[1]or integer($fffffff0);
            D0[p]:=D0[p-1]+DD[1];
            if(not(flag and(i=3)))then p:=p+1  //skip first diff
            else if(p>1)then if((D0[p-2]+DD[1])<>D0[p-1])then
            begin
              //info(2,'Error731 '+inttostr(D0[p-2]+DD[1])+' '+inttostr(D0[p-1]));
              X:=X+1;
            end;
            DD[1]:=(DD[0]shr 20)and $0000000f;if(DD[1]and $00000008)<>0
              then DD[1]:=DD[1]or integer($fffffff0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]shr 16)and $0000000f;if(DD[1]and $00000008)<>0
              then DD[1]:=DD[1]or integer($fffffff0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]shr 12)and $0000000f;if(DD[1]and $00000008)<>0
              then DD[1]:=DD[1]or integer($fffffff0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]shr 8)and $0000000f;if(DD[1]and $00000008)<>0 then
              DD[1]:=DD[1]or integer($fffffff0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]shr 4)and $0000000f;if(DD[1]and $00000008)<>0
              then DD[1]:=DD[1]or integer($fffffff0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            DD[1]:=(DD[0]    )and $0000000f;if(DD[1]and $00000008)<>0
              then DD[1]:=DD[1]or integer($fffffff0);
            D0[p]:=D0[p-1]+DD[1]; p:=p+1;
            j:=j+4;
          end;
      end;
      else begin
            //ERROR
            j:=j-(j-beg) mod 64;
            repeat
              for ii:=0 to 63 do //;i<64;i++,j++){ //skip bloks to find sinc
              begin
                if(ii mod 8)=0 then begin D0[p]:=0;p:=p+1;end;     //write Zeros
                j:=j+1;
              end;
              X:=X+1; //Add ERROR
                //printf("^%x^\n",j);
            until ((DI(j)and $FC)<>0) and (j<4032);   //nibble 0,1,2==0
            //i:=16;
            break;
          end;
      end;
    end;
  until not((j< SeedMax )and(p<NN));
  DD[0]:=DI(beg+8);DD[1]:=DI(beg+9);DD[2]:=DI(beg+10);DD[3]:=DI(beg+11);
  D0[p]:=(DD[0]shl 24)+(DD[1]shl 16)+(DD[2]shl 8)+DD[3];//last  (real)
  if(D0[p]=D0[p-1])then {info('OK '+inttostr(D0[p])+' '+inttostr(NN))}
  else
  begin
    //info(2,'Error771 '+inttostr(D0[p-1])+' <> '+inttostr(D0[p])+' ['+inttostr(X)+']');
    X:=X+1;
  end;
  Errors:=X;
end;
Re[2]: Нестандартный стиль быдлокодера
От: Sharowarsheg  
Дата: 17.01.15 19:33
Оценка:
Здравствуйте, jhfrek, Вы писали:

J>когда напишите проект из хотя бы тысячи строк такого кода, вернитесь к нему через пару-тройку лет и попробуйте изменить и потом отладить.


Нафига? Пишите сразу хорошо.

J>А еще лучше найдите единомышленника с проектом на тысячу строк и попробуйте внести в его код изменения и их отладить.


Он же в шароваре — там только конкуренты, единомышленников нет.

J>Мне всегда хочется убить подобных "экономистов", потому что ни брекпоинт не поставить, ни посмотреть как переменные меняются — каждая строчка как "черный ящик". Туда же идут любители процедур на несколько экранов. И любители if и циклов десятерной вложенности (отсутствие подобного г. заодно решит проблему с next I, end if, end case в комментариях)


проблемы такого рода, с вложенными циклами и ветвлениями, решаются разбиением на мелкие процедуры, после чего возникает проблема слишком большого количества мелких процедур. Как раз не так давно занимались тут склеиванием кучи модулей в один.
Re[3]: Нестандартный стиль быдлокодера
От: jhfrek Россия  
Дата: 17.01.15 21:05
Оценка: +2
Здравствуйте, Sharowarsheg, Вы писали:

J>>когда напишите проект из хотя бы тысячи строк такого кода, вернитесь к нему через пару-тройку лет и попробуйте изменить и потом отладить.

S>Нафига? Пишите сразу хорошо.

человек написал сюда пост в защиту своего стиля, он не будет хорошо писать пока не прочувствует что писать плохо — это плохо

J>>А еще лучше найдите единомышленника с проектом на тысячу строк и попробуйте внести в его код изменения и их отладить.

S>Он же в шароваре — там только конкуренты, единомышленников нет.

зато есть компаньоны. Я на себя матерился даже из-за одного скрипта в сотню строк который я написал plain текстом без выделения констант и параметров, потому что скрипт должен был быть одноразовым. Через пару лет оказалось что нет. И, вместо 10 минут на корректировку, пришлось потратить несколько часов на вспоминание и внесение изменений.

S>проблемы такого рода, с вложенными циклами и ветвлениями, решаются разбиением на мелкие процедуры, после чего возникает проблема слишком большого количества мелких процедур. Как раз не так давно занимались тут склеиванием кучи модулей в один.


это только если они объединены в класс "TUtils" по принципу нам лень думать и рефакторить, а не разнесены по объектам которым они должны принадлежать. Ну или программист понял рефакторинг с выносом в метод буквально и каждую строчку обернул в метод, такое тоже видел
Re[4]: Нестандартный стиль быдлокодера
От: Sharowarsheg  
Дата: 17.01.15 21:31
Оценка:
Здравствуйте, jhfrek, Вы писали:

J>>>когда напишите проект из хотя бы тысячи строк такого кода, вернитесь к нему через пару-тройку лет и попробуйте изменить и потом отладить.

S>>Нафига? Пишите сразу хорошо.

J>человек написал сюда пост в защиту своего стиля, он не будет хорошо писать пока не прочувствует что писать плохо — это плохо


Ну у него не самый плохой стиль. Бывают, например, фабрики фабрик сервисов.

J>>>А еще лучше найдите единомышленника с проектом на тысячу строк и попробуйте внести в его код изменения и их отладить.

S>>Он же в шароваре — там только конкуренты, единомышленников нет.

J>зато есть компаньоны.


Не всегда. Я б даже сказал, что компаньоны скорее исключение, чем правило.

J>Я на себя матерился даже из-за одного скрипта в сотню строк который я написал plain текстом без выделения констант и параметров, потому что скрипт должен был быть одноразовым. Через пару лет оказалось что нет. И, вместо 10 минут на корректировку, пришлось потратить несколько часов на вспоминание и внесение изменений.


Не дешевле ли было придерживаться исходного предположения, что скрипт-таки одноразовый, и переписать?

S>>проблемы такого рода, с вложенными циклами и ветвлениями, решаются разбиением на мелкие процедуры, после чего возникает проблема слишком большого количества мелких процедур. Как раз не так давно занимались тут склеиванием кучи модулей в один.


J>это только если они объединены в класс "TUtils" по принципу нам лень думать и рефакторить, а не разнесены по объектам которым они должны принадлежать.


Ну или нет объектов вообще. Так тоже делают.
Re[5]: Нестандартный стиль быдлокодера
От: jhfrek Россия  
Дата: 17.01.15 21:44
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>Ну у него не самый плохой стиль. Бывают, например, фабрики фабрик сервисов.


для таких заскоков его стиль, конечно, лучше — можно быстро причесать редактором и отрефакторить. Рефакторить фабрику фабрик сервисов, да если еще без тестов — ну его в ж.

J>>Я на себя матерился даже из-за одного скрипта в сотню строк который я написал plain текстом без выделения констант и параметров, потому что скрипт должен был быть одноразовым. Через пару лет оказалось что нет. И, вместо 10 минут на корректировку, пришлось потратить несколько часов на вспоминание и внесение изменений.

S>Не дешевле ли было придерживаться исходного предположения, что скрипт-таки одноразовый, и переписать?

дешевле было бы сразу написать нормально. А так что я на доделку пару часов потратил, что на написание заново потратил бы. С такими простыми случаями проблема скорее психологическая, когда думаешь что у тебя все есть, а оказывается что нефига.

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

Вообще, за свою программистскую практику, я понял что красота, оптимальность кода и прочее — это фигня, главное — поддерживаемость

S>>>проблемы такого рода, с вложенными циклами и ветвлениями, решаются разбиением на мелкие процедуры, после чего возникает проблема слишком большого количества мелких процедур. Как раз не так давно занимались тут склеиванием кучи модулей в один.

J>>это только если они объединены в класс "TUtils" по принципу нам лень думать и рефакторить, а не разнесены по объектам которым они должны принадлежать.
S>Ну или нет объектов вообще. Так тоже делают.

кто-то еще пишет в процедурном стиле? Вроде уже даже в школах процедурным языкам не учат
Re: Нестандартный стиль быдлокодера
От: __kot2  
Дата: 17.01.15 22:14
Оценка: +3 :)))
Здравствуйте, Khimik, Вы писали:
K>Я никогда не работал на работодателя, и у меня в ходе написания моей программы сформировался собственный стиль кода. Вот два фрагмента Delphi-кода моей программы:
почему вы думаете что это ваш собственный стиль? так пишут все школьники после первого года обучения паскалю
Re[2]: Нестандартный стиль быдлокодера
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 17.01.15 23:19
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Такой стиль вряд ли где-то используется в "групповом" программировании.


vsb>Раньше был принят стандарт в ширину 80 символов практически во всех языках.


Я и сейчас стараюсь так писать. Иногда бывает удобно распечатать код и помедитировать над распечаткой, а больше 80(+-) на A4 не влазит.
Вызов функции с кучей параметров, например, удобно оформить с переносом каждого параметра на отдельную строку — и читать удобнее, и если что-то поменяется, diff покажет, какой параметр изменен. Ну и тп.

vsb>Поэтому все профессиональные разработчики сейчас пишут примерно одинаково, в том числе и чтобы понимать друг друга. Необычные стили вроде приведённого могут встречаться либо у одиночек, либо в каких-то очень изолированных непрофессиональных коллективах.


насколько я профессиональный разработчик, и в командах мало работал, но все равно у меня читабельность кода — один из важных критериев.
Маньяк Робокряк колесит по городу
Re: Нестандартный стиль быдлокодера
От: BrainSlug Израиль  
Дата: 17.01.15 23:44
Оценка:
Стало любопытно. А у вас монитор сколько дюймов? Поясню, — на мой монитор (телевизор точнее ) в 35'' не помещается этот код.
.
Отредактировано 17.01.2015 23:52 BrainSlug . Предыдущая версия . Еще …
Отредактировано 17.01.2015 23:46 BrainSlug . Предыдущая версия .
Отредактировано 17.01.2015 23:45 BrainSlug . Предыдущая версия .
Re[3]: Нестандартный стиль быдлокодера
От: BrainSlug Израиль  
Дата: 18.01.15 00:02
Оценка:
K>А если код нужен только одному человеку (шароварщику)?
Второй пункт все равно в силе. Только в качестве другого разработчика вы. Что на самом деле еще хуже, поскольку мучиться и страдать будете вы.
.
Re[2]: Нестандартный стиль быдлокодера
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 18.01.15 00:04
Оценка: +2 :))
Здравствуйте, BrainSlug, Вы писали:

BS>Стало любопытно. А у вас монитор сколько дюймов? Поясню, — на мой монитор (телевизор точнее ) в 35'' не помещается этот код.


Что завидно, да? А у ТС такой монитор, похоже, был изначально
Маньяк Робокряк колесит по городу
Re[2]: Нестандартный стиль быдлокодера
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 18.01.15 01:15
Оценка: 1 (1) +1 :)
Здравствуйте, BrainSlug, Вы писали:

BS>Стало любопытно. А у вас монитор сколько дюймов? Поясню, — на мой монитор (телевизор точнее ) в 35'' не помещается этот код.


Глянул тут твою первую правку, ты там вспоминал про игру на gamedev'е, похожую по стилю кода — это же ЩИ!!!Симулятор жестокости
Такие вещи не забываются, имхо

Макароны, спакетти-код — эти термины уже отживают свое. ЩИ!!!-код — за этим названием будещее
Маньяк Робокряк колесит по городу
Отредактировано 18.01.2015 1:18 Marty . Предыдущая версия . Еще …
Отредактировано 18.01.2015 1:18 Marty . Предыдущая версия .
Re[3]: Нестандартный стиль быдлокодера
От: BrainSlug Израиль  
Дата: 18.01.15 01:24
Оценка: +1 :)))
M>Глянул тут твою первую правку, ты там вспоминал про игру на gamedev'е, похожую по стилю кода — это же ЩИ!!!Симулятор жестокости
M>Такие вещи не забываются, имхо
да это оно щи-код (потом появится щи++)
.
Отредактировано 18.01.2015 1:26 BrainSlug . Предыдущая версия .
Re[4]: Нестандартный стиль быдлокодера
От: DreamMaker  
Дата: 18.01.15 03:38
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

K>>А если код нужен только одному человеку (шароварщику)?

LVV>Тогда никаких проблем нет.

не сказал бы что нет, скорее просто меньше.

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

2. а вдруг дела пойдут хорошо, надо развиваться, нанимать помощников.. они ж утонут в этом.

3. а вдруг предложат купить проект, за очень хорошие деньги? заглянут внутрь и резко передумают.
In P=NP we trust.
Re[5]: Нестандартный стиль быдлокодера
От: _ABC_  
Дата: 18.01.15 06:23
Оценка: :))) :))
Здравствуйте, VladFein, Вы писали:

VF>Есть мнение, что "ты сам" через пару лет — уже другой

К Химику это не относится. Он не меняется.
Re[6]: Нестандартный стиль быдлокодера
От: Sharowarsheg  
Дата: 18.01.15 09:14
Оценка:
Здравствуйте, jhfrek, Вы писали:

S>>Ну или нет объектов вообще. Так тоже делают.


J>кто-то еще пишет в процедурном стиле? Вроде уже даже в школах процедурным языкам не учат


Я пишу, особенно если задача меньше 10 тыс строк.

Когда меня в школе учили, объектных языков особо не было, а с тех пор, надо признаться, я не слишком заморачивался прогрессивными молодежными течениями.
Re[7]: Нестандартный стиль быдлокодера
От: jhfrek Россия  
Дата: 18.01.15 11:44
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

J>>кто-то еще пишет в процедурном стиле? Вроде уже даже в школах процедурным языкам не учат

S>Я пишу, особенно если задача меньше 10 тыс строк.

фортран или чистый С?

S>Когда меня в школе учили, объектных языков особо не было, а с тех пор, надо признаться, я не слишком заморачивался прогрессивными молодежными течениями.


тогда лучше и не заморачиватся, потому что переход от процедур к объектам по принципу "лишь бы было" действительно превращается в мегакласс TUtils с кучей методов Я такое видел, нафиг-нафиг.
Re[4]: Нестандартный стиль быдлокодера
От: Privalov  
Дата: 18.01.15 11:47
Оценка:
Здравствуйте, Vaako, Вы писали:

V>Поверь, через пару лет ты не захочешь лезть разбираться где ошибка в коде


Он-то, конечно, не захочет, дак кто ж его спрашивать-то будет? Скажут — вот здесь бага, лог пришлют — и все. И будет копаться. В конторах такое копание обычно сопровождается восклицаниями типа "какой осел это писал".
Re[3]: Нестандартный стиль быдлокодера
От: Privalov  
Дата: 18.01.15 12:01
Оценка:
Здравствуйте, Marty, Вы писали:

M>... ЩИ!!!Симулятор жестокости


M>Макароны, спакетти-код — эти термины уже отживают свое. ЩИ!!!-код — за этим названием будещее


Н-да. Я такого кода не видел даже у математиков и астрономов, писавших на Фортране-4. А они с целью экономии машинного времени практически все в главной программе держали. CALL в их программах встречалось нечасто.
Re[2]: Нестандартный стиль быдлокодера
От: Pavel Dvorkin Россия  
Дата: 18.01.15 12:15
Оценка: +1 :)
Здравствуйте, elmal, Вы писали:

E>Здесь конечно сложно что то усовершенствовать, но я попробую. Советую имена переменных называть из смеси катайских, финских, иврита слов.


Достаточно на Runglish написать, эффект будет — никто за пределами России не поймет, а в пределах — все поймут, но такое скажут...
With best regards
Pavel Dvorkin
Re[4]: Нестандартный стиль быдлокодера
От: se_sss  
Дата: 18.01.15 18:27
Оценка:
P>Н-да. Я такого кода не видел даже у математиков и астрономов, писавших на Фортране-4. А они с целью экономии машинного времени практически все в главной программе держали. CALL в их программах встречалось нечасто.

Автор этого кода, как он пояснял в форуме, выложил древний код, причём, когда он это писал, он программировать не умел совсем, а взял какую-то демку и стал её улучшать и развивать, делая всё по аналогии с кодом, который былв демке.
Re[4]: Нестандартный стиль быдлокодера
От: Mamut Швеция http://dmitriid.com
Дата: 18.01.15 20:29
Оценка: :)))
J>>>когда напишите проект из хотя бы тысячи строк такого кода, вернитесь к нему через пару-тройку лет и попробуйте изменить и потом отладить.
S>>Нафига? Пишите сразу хорошо.

J>человек написал сюда пост в защиту своего стиля, он не будет хорошо писать пока не прочувствует что писать плохо — это плохо



У меня есть (шапочный) знакомый, который в подобном стиле пишет на Эрланге. Аргументы: «У меня художественное образование, стиль кода не имеют право обсуждать люди, не имеющие художественного образования».


dmitriid.comGitHubLinkedIn
Re[2]: Нестандартный стиль быдлокодера
От: Vain Россия google.ru
Дата: 19.01.15 02:00
Оценка:
Здравствуйте, Sinix, Вы писали:

S>2. После того, как выяснится, что код решает не ту проблему и не так, код правится без обращения к автору кода любым из разработчиков в команде. Даже если он видит этот код в первый раз.

с этого места поподробнее пжлста. как программер не знающий предметной области этого кода что-то будет править?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: Нестандартный стиль быдлокодера
От: Sinix  
Дата: 19.01.15 06:11
Оценка:
Здравствуйте, Vain, Вы писали:

S>>2. После того, как выяснится, что код решает не ту проблему и не так, код правится без обращения к автору кода любым из разработчиков в команде. Даже если он видит этот код в первый раз.

V>с этого места поподробнее пжлста. как программер не знающий предметной области этого кода что-то будет править?
Кэп 1: в примере топикстартера знание предметной области никак не поможет
Кэп 2: эта проблема решается не кодом, а наличием ТЗ, соглашениями по стилю кода, историей в таск-трекере, правильным разделением задач в команде и ещё тонной других способов.
Re[4]: Нестандартный стиль быдлокодера
От: Vain Россия google.ru
Дата: 19.01.15 08:13
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Кэп 2: эта проблема решается не кодом, а наличием ТЗ, соглашениями по стилю кода, историей в таск-трекере, правильным разделением задач в команде и ещё тонной других способов.

и каким же образом тз, знание стиля и истории трекера поможет знать предметную область? я что-то пропустил в этой жизни?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[5]: Нестандартный стиль быдлокодера
От: Sinix  
Дата: 19.01.15 08:33
Оценка:
Здравствуйте, Vain, Вы писали:

S>>Кэп 2: эта проблема решается не кодом, а наличием ТЗ, соглашениями по стилю кода, историей в таск-трекере, правильным разделением задач в команде и ещё тонной других способов.

V>и каким же образом тз, знание стиля и истории трекера поможет знать предметную область? я что-то пропустил в этой жизни?

Это вопрос чтоб докопаться или серьёзно? Вопрос странный какой-то. Такое впечатление, что ты увидел у меня в посте какой-то тайный смысл, который я не закладывал, и с ним споришь

Если код читаем и снабжён комментами/тестами, то проблема, которую должен решать код, восстанавливается и без автора.
Ссылка на ТЗ/лог таск-трекера позволяет уточнить детали (в том числе "предметную область кода") + найти человека, который поможет разобраться с непонятными моментами.
Ну и здравый смысл подсказывает, что внутри команды разработчики как минимум в курсе проблем, которые решают соседи.

Этого обычно достаточно.
Re: Нестандартный стиль быдлокодера
От: Artifact  
Дата: 19.01.15 10:20
Оценка: +1
Здравствуйте, Khimik, Вы писали:

K>Пожалуйста не пинайте меня, профессиональные офисные программеры, лучше скажите – где-нибудь ещё может использоваться похожий стиль?


Конечно, это же типичный код на BASIC-e.
__________________________________
Не ври себе.
Re[6]: Нестандартный стиль быдлокодера
От: Vain Россия google.ru
Дата: 19.01.15 22:02
Оценка: 32 (1) +2
Здравствуйте, Sinix, Вы писали:

S>>>Кэп 2: эта проблема решается не кодом, а наличием ТЗ, соглашениями по стилю кода, историей в таск-трекере, правильным разделением задач в команде и ещё тонной других способов.

V>>и каким же образом тз, знание стиля и истории трекера поможет знать предметную область? я что-то пропустил в этой жизни?
S>Это вопрос чтоб докопаться или серьёзно?
Я абсолютно серьёзно и безподколок. Видишь ли, я этот тезис про нового человека не знакомого с кодом вообще, читаемость сего кода и соответственно лёгкость его правки как следствие его "читаемости" слышу уже не в первый раз. Но на практике почему-то выходит, что этого не достаточно, а тезис всё повторяют и повторяют, как испорченную пластинку. Вот мне стало и интересна, сфигали?

S>Вопрос странный какой-то. Такое впечатление, что ты увидел у меня в посте какой-то тайный смысл, который я не закладывал, и с ним споришь

я вроде бы выделил твоё утверждение, но навсякий случай ещё раз:

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


S>Если код читаем и снабжён комментами/тестами, то проблема, которую должен решать код, восстанавливается и без автора.

Это не правда, потому-что читаемость кода не прибавляет знаний в предметной области. Читаемость кода это чисто личностное и только личностное восприятие написанного, с предметной областью не имеющего ничего общего. Наоборот, изначально надо иметь знания в предметной области (и в проекте тоже) чтобы правильно исправить код. А для этого нужно изучить достаточно значительную массу кода, включая код, который собираешься править, т.е. быть подготовленным к исправлению. Я не исключаю что есть простые случаи, которые выбиваются из сказанного, но только лишь потому, что это исключения подтверждающие правила — в исправляемом коде ты уже знаком с предметной областью.

S>Ссылка на ТЗ/лог таск-трекера позволяет уточнить детали (в том числе "предметную область кода") + найти человека, который поможет разобраться с непонятными моментами.

тогда мне не понятно это:

код правится без обращения к автору кода любым из разработчиков в команде

[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[7]: Нестандартный стиль быдлокодера
От: Sinix  
Дата: 20.01.15 05:56
Оценка:
Здравствуйте, Vain, Вы писали:

V>Я абсолютно серьёзно и безподколок. Видишь ли, я этот тезис про нового человека не знакомого с кодом вообще, читаемость сего кода и соответственно лёгкость его правки как следствие его "читаемости" слышу уже не в первый раз. Но на практике почему-то выходит, что этого не достаточно, а тезис всё повторяют и повторяют, как испорченную пластинку. Вот мне стало и интересна, сфигали?

А блин, я выразился некорректно Сорри

Речь шла про человека в команде, который видит конкретно этот кусок кода в первый раз, а не весь код вообще

Ну и дальше пошли недоразумения. Если натянуть ситуацию на абсолютного новичка — конечно бред получается, ему ещё минимум две недели надо въезжать что и куда.
Re[2]: Нестандартный стиль быдлокодера
От: Aptekar Россия  
Дата: 20.01.15 08:17
Оценка:
Здравствуйте, jhfrek, Вы писали:

J>Мне всегда хочется убить подобных "экономистов", потому что ни брекпоинт не поставить, ни посмотреть как переменные меняются — каждая строчка как "черный ящик"


А как же всякая околофункциональщина с лямбдой и comprehensions?
Re[3]: Нестандартный стиль быдлокодера
От: Mamut Швеция http://dmitriid.com
Дата: 20.01.15 08:43
Оценка: +2
J>>Мне всегда хочется убить подобных "экономистов", потому что ни брекпоинт не поставить, ни посмотреть как переменные меняются — каждая строчка как "черный ящик"

A>А как же всякая околофункциональщина с лямбдой и comprehensions?


В лямбдах брейпойнты можно поставить, а list comprehensions обычно достаточно короткие, чтобы не вызывать проблем


dmitriid.comGitHubLinkedIn
Re[7]: Нестандартный стиль быдлокодера
От: Vlad_SP  
Дата: 20.01.15 08:53
Оценка: +1
Здравствуйте, Vain,

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


Нет, вот тут ты не прав. Знания в предметной области чаще всего вообще не связаны с кодом. И хоть обизучайся "достаточно значительную массу кода", но знаний именно в предметной области — не прибавится.
Re: Нестандартный стиль быдлокодера
От: diez_p  
Дата: 22.01.15 23:20
Оценка:
Здравствуйте, Khimik, Вы писали:
K>Я никогда не работал на работодателя, и у меня в ходе написания моей программы сформировался собственный стиль кода. Вот два фрагмента Delphi-кода моей программы:
Если это троллинг то он удался
Если же нет, то правильно говорят, что не умеешь ничего делать — иди в программисты. Программирование не производство — кривые руки компьютером не вырвет, а как хотелось бы как хотелось.
Re[3]: Нестандартный стиль быдлокодера
От: Khimik  
Дата: 25.01.15 06:54
Оценка:
Здравствуйте, elmal, Вы писали:

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


VF>>Надеюсь что нет.

E>Зря надеешься. Код после обработки обфускаторами конечно читается получше чем этот, но все таки стиль очень похож. Топикстартеру просто браво, я думал я все в этой жизни видел, меня ничем не удивить, по в плане метрик WTF в коде этот шедевр переплюнуть просто нереально. Первое место просто — такой стиль перебил класс с двумя методами на 10000 строк со сплошными копипастами и мешаниной табов из пробелов и сбившимися отсупами, а это нужно умудриться. И это еще тривиальный код, я полагаю автор на средней задаче в состоянии развернуться гораздо круче, чем здесь показал.

Я, между прочии, уже 9 лет зарабатываю на своей программе, и мой опыт говорит что мой стиль лучше стандартного, по крайней мере для меня.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[4]: Нестандартный стиль быдлокодера
От: __kot2  
Дата: 26.01.15 15:50
Оценка:
Здравствуйте, Khimik, Вы писали:
K>Я, между прочии, уже 9 лет зарабатываю на своей программе, и мой опыт говорит что мой стиль лучше стандартного, по крайней мере для меня.
и ты 9 лет остаешься на одном уровне?
Re[5]: Нестандартный стиль быдлокодера
От: Vaako Украина  
Дата: 26.01.15 16:02
Оценка:
Здравствуйте, __kot2, Вы писали:

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

K>>Я, между прочии, уже 9 лет зарабатываю на своей программе, и мой опыт говорит что мой стиль лучше стандартного, по крайней мере для меня.
__>и ты 9 лет остаешься на одном уровне?

Узкий специались, только он может прочитать что он написал.
Re[2]: Нестандартный стиль быдлокодера
От: xy012111  
Дата: 29.01.15 06:53
Оценка:
Здравствуйте, Sinix, Вы писали:

S>2. После того, как выяснится, что код решает не ту проблему и не так, код правится без обращения к автору кода любым из разработчиков в команде. Даже если он видит этот код в первый раз.

S>Что-то я не уверен, что со вторым пунктом у вас всё ок.

Эээээ. Вот давайте проведём мысленный эксперимент — я вам дам ссылку на ишью Розлина, а вы сначала проэстимейтите время, необходимое для фикса ишью, а потом попробуете это сделать? Ишью даже выберем уже закрытое, что бы сравнить ваши оценку/рельтат с тем, что потребовалось, скорее всего, автору кода. Мне кажется, серьёзных упрёков по стилю кодирования к тому проекту не будет.

Конечно, вы не один из команды, но дак ну и что? Во многих проектах _любой_ член команды может понятия не иметь что и как в соседних кусках. И выполнить требование того, что бы "любой" мог где угодно что поправить невозможно. Какую-то простейшую ошибку из разряда опечаток, off-by-one error и т.п. — конечно. Но что-то системное — сильно сомневаюсь. Где-то конечно такое возможно, но далеко не везде. Неоправданно много времени может уйти на изучение подсистемы, в которой необходимо внести правку.

В трёхзвенке, дапустим, тот, кто "клепает формочки" может сильно подпортить много чего, забравшись в веб-сервер или БД без должной квалификации и наоборот ("может", а не "обязательно сделает" :о)). Разве нет? У вас в команде почему таких проблем не возникает? И почему они не могут возникать в других командах?
Re: Нестандартный стиль быдлокодера
От: xy012111  
Дата: 29.01.15 07:00
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Пожалуйста не пинайте меня, профессиональные офисные программеры, лучше скажите – где-нибудь ещё может использоваться похожий стиль?


Если вас заинтересовал стиль программирования – первым делом покурите Code Complete (http://www.cc2e.com/, http://www.combook.ru/product/10015183/ — кстати, редкий момент, когда книгу можно преобрести). Вовсе не обязательно перенимать как догму всё что там написано, но эта книга покажет методику, с которой нужно браться за обсуждение стиля кода.

Сравнив используемый вами стиль с предлагаемым автором и ознакомившись с аргументами автора вы сможете составить представление о том, что (и почему) о вашем коде может подумать другой программист в самом худшем случае :о) Потом приходите и можно будет обсудить более предметно.
Re[3]: Нестандартный стиль быдлокодера
От: Sinix  
Дата: 29.01.15 09:33
Оценка:
Здравствуйте, xy012111, Вы писали:

X>В трёхзвенке, дапустим, тот, кто "клепает формочки" может сильно подпортить много чего, забравшись в веб-сервер или БД без должной квалификации и наоборот ("может", а не "обязательно сделает" :о)). Разве нет? У вас в команде почему таких проблем не возникает? И почему они не могут возникать в других командах?

Это болезнь кывт-а по-моему. В процессе обсуждения "в идеале должно быть как-то так" всегда превращается в "собеседник идиот и он считает, что должно быть так и никак иначе". Дисклаймеры не помогают, проверял

Чтобы не флудить попусту: прочитайте вот это сообщение
Автор: Кодт
Дата: 22.01.15
ув.Кодта. Он тот же вопрос расписал другими словами, я с его точкой зрения полностью согласен. (Ок, поскольку это рсдн, то примерно тот же вопрос и практически полностью.)
Re: Нестандартный стиль быдлокодера
От: Kudriako Украина  
Дата: 29.01.15 09:34
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Я никогда не работал на работодателя, и у меня в ходе написания моей программы сформировался собственный стиль кода. Вот два фрагмента Delphi-кода моей программы:


Извините, а не Вы, случайно, автор вот этой замечательной игры? Там внизу первой страницы примеры кода
http://www.gamedev.ru/projects/forum/?id=160897
Уж очень стиль оформления кода похож.
Re[4]: Нестандартный стиль быдлокодера
От: xy012111  
Дата: 29.01.15 12:24
Оценка:
Здравствуйте, Sinix, Вы писали:

X>>В трёхзвенке, дапустим, тот, кто "клепает формочки" может сильно подпортить много чего, забравшись в веб-сервер или БД без должной квалификации и наоборот ("может", а не "обязательно сделает" :о)). Разве нет? У вас в команде почему таких проблем не возникает? И почему они не могут возникать в других командах?

S>Это болезнь кывт-а по-моему. В процессе обсуждения "в идеале должно быть как-то так" всегда превращается в "собеседник идиот и он считает, что должно быть так и никак иначе". Дисклаймеры не помогают, проверял

S>Чтобы не флудить попусту: прочитайте вот это сообщение
Автор: Кодт
Дата: 22.01.15
ув.Кодта. Он тот же вопрос расписал другими словами, я с его точкой зрения полностью согласен. (Ок, поскольку это рсдн, то примерно тот же вопрос и практически полностью.)


Да ладно расстраиваться :о) просто употребляя слова "любой" и тому подобные нужно быть готовым, что их воспримут не так, как бы вам того хотелось бы. Это закономерно и даже ожидаемо должно быть. Тут многие долго и упорно мучили свой мозг различными науками, отсюда и склонность, согласен порою излишняя, к строгости формулировок.

Если в "код правится без обращения к автору кода любым из разработчиков в команде" под "любым" понимается "любой из разработчиков", работающих над этим же кодом плюс-минус, а "комнда" — это некая макрокоманда, что ли в узком смысле этого слова, то полностью с утверждением согласен
Re[5]: Нестандартный стиль быдлокодера
От: Sinix  
Дата: 29.01.15 13:18
Оценка:
Здравствуйте, xy012111, Вы писали:

X>Если в "код правится без обращения к автору кода любым из разработчиков в команде" под "любым" понимается "любой из разработчиков", работающих над этим же кодом плюс-минус, а "комнда" — это некая макрокоманда, что ли в узком смысле этого слова, то полностью с утверждением согласен

А, ну ок тогда

Как-то так сложилось, что везде, где я работал, под командой понималась собственно команда из 5-7 человек (девелоперы,аналитик,qa), которая собственно работала над определённым куском проекта (ну, или над отдельным проектом, если он мелкий). Если хоцца чётких определений, то что-то в стиле хирургической бригады по Бруксу.

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

Не, при желании можно собрать коллектив и побольше, но из практики — или всё фейлится, или люди сами собираются в небольшие команды. Других вариантов не встречал, если видели и оно работало на практике — делитесь, как вы так умудрились?
Re[6]: Нестандартный стиль быдлокодера
От: xy012111  
Дата: 29.01.15 15:58
Оценка: 14 (1)
Здравствуйте, Sinix, Вы писали:

S>Как-то так сложилось, что везде, где я работал, под командой понималась собственно команда из 5-7 человек (девелоперы,аналитик,qa), которая собственно работала над определённым куском проекта (ну, или над отдельным проектом, если он мелкий). Если хоцца чётких определений, то что-то в стиле хирургической бригады по Бруксу.


Да, вот как-то и "команда" в широком понимании (например, командs MSVS, Windows или SAP, даже "команда разработчиков Майкрософт") и команда в более узком понимании (команда language services нарпимер) обозначаются одним словом. А законы Мёрфи пока никто отменить не осмелился…

S>Не, при желании можно собрать коллектив и побольше, но из практики — или всё фейлится, или люди сами собираются в небольшие команды. Других вариантов не встречал, если видели и оно работало на практике — делитесь, как вы так умудрились?


Было другое — в проекте несколько ведущих программистов, пишущих раличные слабосвязанные куски (с остальными кусками общаются посредством интерфейсов/протоколов), и между собой регулярных ревью не проводящих, разве что по очень важным поводам. Они не взаимозаменяемы. И, опционально, некоторое количество "студентов", коммиты которых проходят ревью от соответствующего "ментора" и других "студентов". Понятно, что "студенты" получаются заменяемыми другими студентами и ментором. И это отлично работает (дай Бог здоровья ведущим).

Вот про такие небольшие команды, где все равноценно плюс-минус заменяемы — видеть не приходилось.
Re[2]: Нестандартный стиль быдлокодера
От: Khimik  
Дата: 29.01.15 20:30
Оценка:
Здравствуйте, Kudriako, Вы писали:

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


K>>Я никогда не работал на работодателя, и у меня в ходе написания моей программы сформировался собственный стиль кода. Вот два фрагмента Delphi-кода моей программы:


K>Извините, а не Вы, случайно, автор вот этой замечательной игры? Там внизу первой страницы примеры кода

K>http://www.gamedev.ru/projects/forum/?id=160897
K>Уж очень стиль оформления кода похож.

Нет, у меня программа Chemcraft.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re: Нестандартный стиль быдлокодера
От: B0FEE664  
Дата: 03.02.15 13:51
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Я никогда не работал на работодателя, и у меня в ходе написания моей программы сформировался собственный стиль кода. Вот два фрагмента Delphi-кода моей программы:

K>Здесь в браузере обрезаются строки, а так у меня в коде могут быть строки больше 500 символов.

Я не знаю, чем он вам удобен, но если записать с отступами, то сразу виден простор для оптимизации весь ужас этого кода, состоящий в том, что вызовы AddCustomVector производятся по совершенно магическим правилам завязанным на длину curstrings.

'v': 
    begin//Вектор
      et:=vetOneArrow;
      if curstrings.Count>7 then
        if lowercase(curstrings[7])='n' then
          et:=vetNoArrows;

      if curstrings.Count>8 then
        begin
          AddCustomVector(
                           vector(
                                  strtofloat(curstrings[1]),
                                  strtofloat(curstrings[2]),
                                  strtofloat(curstrings[3])
                                 ),
                           vector(
                                  strtofloat(curstrings[4]),
                                  strtofloat(curstrings[5]),
                                  strtofloat(curstrings[6])
                                 ),
                           false,
                           et,
                           strtofloat(curstrings[8]),
                           strtofloat(curstrings[9]),
                           floatcolor(
                                      strtofloat(curstrings[10]),
                                      strtofloat(curstrings[11]),
                                      strtofloat(curstrings[12])
                                     ),
                           strtofloat(curstrings[13])
                         );
        end
      else
        AddCustomVector(
                         vector(
                                strtofloat(curstrings[1]),
                                strtofloat(curstrings[2]),
                                strtofloat(curstrings[3])
                               ),
                         vector(
                                strtofloat(curstrings[4]),
                                strtofloat(curstrings[5]),
                                strtofloat(curstrings[6])
                               ),
                         true,
                         et,
                         0,
                         0,
                         floatcolor(0,0,0),
                         0
                       );
    end;//v
'p':
    begin//Плоскость
      pltransp:=true;
      if curstrings.Count>13 then
        if lowercase(curstrings[13])='n' then
          pltransp:=false;

      if curstrings.Count>14 then
        begin
          AddCustomPlane(
                          vector(
                                 strtofloat(curstrings[1]),
                                 strtofloat(curstrings[2]),
                                 strtofloat(curstrings[3])
                                ),
                          vector(
                                 strtofloat(curstrings[4]),
                                 strtofloat(curstrings[5]),
                                 strtofloat(curstrings[6])
                                ),
                          vector(
                                 strtofloat(curstrings[7]),
                                 strtofloat(curstrings[8]),
                                 strtofloat(curstrings[9])
                                ),
                          vector(
                                 strtofloat(curstrings[10]),
                                 strtofloat(curstrings[11]),
                                 strtofloat(curstrings[12])
                                ),
                          false,
                          floatcolor(
                                     strtofloat(curstrings[14]),
                                     strtofloat(curstrings[15]),
                                     strtofloat(curstrings[16])
                                    ),
                          strtofloat(curstrings[17]),
                          pltransp
                        );
        end
      else
        AddPlane(
                  vector(
                          strtofloat(curstrings[1]),
                          strtofloat(curstrings[2]),
                          strtofloat(curstrings[3])
                        ),
                  vector(
                          strtofloat(curstrings[4]),
                          strtofloat(curstrings[5]),
                          strtofloat(curstrings[6])
                        ),
                  vector(
                          strtofloat(curstrings[7]),
                          strtofloat(curstrings[8]),
                          strtofloat(curstrings[9])
                        ),
                  vector(
                          strtofloat(curstrings[10]),
                          strtofloat(curstrings[11]),
                          strtofloat(curstrings[12])
                        ),
                  0,
                  false
                );
    end;//p
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.