Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Оцените код 2   Найти похожие ветки 

 
@!!ex ©   (2007-11-23 13:48) [0]

Собственно по моему коду все уже опнятно, занимаюсь исправлением идиотских мест.
Интересно было бы услышать комменты по этому коду:
procedure delet (var l:spisok; m: string);
var a,b : spisok;
begin  bl:=false;
if l<>nil then begin
 if l^.info=m then begin
   a:=l;
   l:=l^.next; bl:=true;
   dispose(a);
    end
   else begin
   b:=l;
   while (bl=false) and (b^.next<>nil) do begin
     if b^.next^.info=m then begin
     a:=b^.next;
     b^.next:=a^.next; bl:=true;
     dispose(a);
     end
     else
     b:=b^.next;
   end;
 end;
end;
end;


 
turbouser ©   (2007-11-23 13:56) [1]

1) a,b,l,m,bl - дать адекватные имена
2) begin  bl:=false; разнести на 2 строчки
3) if l<>nil then begin  if l^.info=m then begin можно и в одну строку сделать


 
Котик Б   (2007-11-23 14:04) [2]

Я так понимаю в лице Мастеров Delphi Вы нашли бесплатный рефакторинг ?


 
homm ©   (2007-11-23 14:04) [3]

> [1] turbouser ©   (23.11.07 13:56)
> if l<>nil then begin  if l^.info=m then begin можно и в
> одну строку сделать

А лучше не делать


> if l<>nil then begin
> if l^.info=m then begin

Не желей пробелов
if l <> nil then begin
if l^.info = m then begin


Что такое spisok? Это указатель? Плохое имя для указателя. PSpisok.
Зачем var l, если это и так указтель? Если хочеш вернуть значение, сделай функцию. А то хорошо плучается, передал список, указал удалить  и он невалидный стал.


 
Zeqfreed ©   (2007-11-23 14:08) [4]

procedure Delete(var list : PMyList; m : String);
var
   tmp, node : PMyList;
begin
   bl := false;  //Глобальная переменная с таким говорящим названием?
   if not Assigned(list) then Exit;
                               
   node := list;
   while Assigned(node^.next) and (node^.next^.info <> m) do
       node := node^.next;
                           
   if Assigned(node^.next) and (node^.next^.info = m) then begin
       tmp := node^.next^;
       node^.next := tmp^.next;
       Dispose(tmp);
       bl := true;
   end;
end;


Примерно так я бы написал.


 
homm ©   (2007-11-23 14:11) [5]

> [4] Zeqfreed ©   (23.11.07 14:08)
> var list

Вар можно убрать теперь :)


 
Zeqfreed ©   (2007-11-23 14:11) [6]

> homm ©   (23.11.07 14:11) [5]

Даже нужно :)


 
@!!ex ©   (2007-11-23 14:12) [7]

> [2] Котик Б   (23.11.07 14:04)

1) Это не мой код.
2) Мне код не рефакторили, а указывали на неправильные места, если вы внимания не обратили.
3) Вы тут никакого участия не принимаете, чего возмущаетесь?


 
Zeqfreed ©   (2007-11-23 14:15) [8]

И вообще, bl надо убрать и возвращать булев результат из функции.


 
Anatoly Podgoretsky ©   (2007-11-23 14:32) [9]

> @!!ex  (23.11.2007 13:48:00)  [0]

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


 
DrPass ©   (2007-11-23 15:20) [10]

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


 
@!!ex ©   (2007-11-23 15:56) [11]

> [10] DrPass ©   (23.11.07 15:20)

Разве это плохо?
Я наоборот всю жизнб писал на следующей строчке, а в ВУЗе переучили ставить на туже строчку...


 
Anatoly Podgoretsky ©   (2007-11-23 16:02) [12]

> @!!ex  (23.11.2007 15:56:11)  [11]

Не знаю, никогда не видел рекомендаций писать два оператора на одной строке, странный какой то ВУЗ - беги ты оттуда, плохому научат.

>    l:=l^.next; bl:=true;


 
homm ©   (2007-11-23 16:07) [13]

> [10] DrPass ©   (23.11.07 15:20)
> ...и еще пора избавляться от дурацкой студенческой привычки
> писать begin в той же строке, что и предыдущий оператор

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


 
@!!ex ©   (2007-11-23 16:16) [14]

> >    l:=l^.next; bl:=true;

Я так не пишу никогда. Это ИМХО очень не читабельно.
А вот против begin на той же строчке не вижу ничего плохого...
Буду благодарен, если расскажите, почему плохо это плохо...


 
DVM ©   (2007-11-23 16:28) [15]


> Не надо. Незачем раздувать код во вертикали, вставая бессмысленные
> элементы.

В VCL везде с новой строки ставят.


 
@!!ex ©   (2007-11-23 16:31) [16]

> [15] DVM ©   (23.11.07 16:28)

И что это значит?


 
J_f_S   (2007-11-23 16:33) [17]


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

Вот экономить на символах перевода строк и пробелах не надо точно. Читаемость текста повышается в разы.


 
clickmaker ©   (2007-11-23 16:35) [18]

C vs Delphi

if (true)
{

}

if true then
begin

end

или

if (true) {

}

if true then begin

end


 
DVM ©   (2007-11-23 16:37) [19]


> @!!ex ©   (23.11.07 16:31) [16]


> И что это значит?

Это значит, что begin ставят с новой строки. Лучше придерживаться традиций.


 
J_f_S   (2007-11-23 16:39) [20]

Не в обиду, но код из 0 действительно напоминает "код" студента из среднестатистического ВУЗа...
Граммитические ошибки в английских словах, транслит (это жесть), экономия на пробелах и переодах строк, несколько опереаторов в одной строке, отсутствие комментариев, имена вспомогательных переменных типа a,b,c...


 
Anatoly Podgoretsky ©   (2007-11-23 16:40) [21]

> @!!ex  (23.11.2007 16:16:14)  [14]

Чего рассказывать то?
Я пишу на одной строке с if что бы получить структуру


if ... then begin
  ..
else begin
  ..
end"

Но могу написать и


if ... then
begin
  ..
end;

Если будут требования, то буду писать по требованиям.


 
@!!ex ©   (2007-11-23 16:40) [22]

> [19] DVM ©   (23.11.07 16:37)

Традиции везде разные.


 
J_f_S   (2007-11-23 16:40) [23]

Граммитические = Грамматические
;)


 
Kolan ©   (2007-11-23 16:41) [24]

> Интересно было бы услышать комменты по этому коду:

Полное гэ. (одно название че стоит), такое лучьше никому не показывать, элеметарные ошибки из прошлой ветки мог бы и исправить&#133


 
DVM ©   (2007-11-23 16:41) [25]


> Традиции везде разные.

это понятно, но, думаю никто не будет против, если твой код будет подражать во всем VCL.


 
@!!ex ©   (2007-11-23 16:43) [26]

Итак. Собственно почему я создал вторую тему с кодом.
Я подрабатываю репетитором информатики. Преподаю в основном всякую начальную ерунду, тем кто совсем не в теме.
После разборов в теме "Оцените код" у меня появились большие сомнения в том, что я имею право кому то что-то преподавать...
Код приведенный в данной теме - написано официальным ПРЕПОДАВАТЕЛЕМ ВУЗа, причем ВУЗа выдающего дипломы международного образца...


 
homm ©   (2007-11-23 16:44) [27]

> [17] J_f_S   (23.11.07 16:33)
> Вот экономить на символах перевода строк и пробелах не надо
> точно. Читаемость текста повышается в разы.

Я не предлагаю экономить, я говорю «не раздувать бесдумно» разница есть.


> [19] DVM ©   (23.11.07 16:37)
> Лучше придерживаться традиций.

Жертвоприношение знаем? тоже лучше?


> [25] DVM ©   (23.11.07 16:41)
> это понятно, но, думаю никто не будет против, если твой
> код будет подражать во всем VCL.

Предлагаю подрожать во всем, кроме этого ;)


 
Германн ©   (2007-11-23 16:45) [28]


> Anatoly Podgoretsky ©   (23.11.07 16:02) [12]

А вот так пишу я:
 adr:=o2;bdc;wrc:=$84;ind2;
 if(scala=1) then begin
   adr:=co*10;adr:=adr div 8;
 end else adr:=co;
 bdc;wrc:=$8f;ind1;
 adr:=co2;bdc;wrc:=$c4;ind2;

:)))


 
DVM ©   (2007-11-23 16:45) [29]


> @!!ex ©   (23.11.07 16:43) [26]

печально


 
Dennis I. Komarov ©   (2007-11-23 16:46) [30]

> [21] Anatoly Podgoretsky ©   (23.11.07 16:40)

+1


 
homm ©   (2007-11-23 16:46) [31]

> [28] Германн ©   (23.11.07 16:45)
> А вот так пишу я:

Это вырезка из скомпилиного экзешника? Нет? А похожа %)


 
Германн ©   (2007-11-23 16:49) [32]


> Это вырезка из скомпилиного экзешника?

Да.


 
DVM ©   (2007-11-23 16:49) [33]


> Германн ©   (23.11.07 16:45) [28]


Так не лучше?

Adr := o2;
Bdc;
Wrc := $84;
Ind2;
if Scala = 1 then
 begin
    Adr := co * 10;
    Adr := Adr div 8;
 end
else
 Adr := co;
Bdc;
Wrc := $8f;
Ind1;
Adr := co2;
Bdc;
Wrc := $c4;
Ind2;


 
DVM ©   (2007-11-23 16:50) [34]


> Это вырезка из скомпилиного экзешника?

это скриншот окна скомпиленного экзешника кверху ногами.


 
Kolan ©   (2007-11-23 16:50) [35]

> Код приведенный в данной теме &#151; написано официальным ПРЕПОДАВАТЕЛЕМ
> ВУЗа, причем ВУЗа выдающего дипломы международного образца&#133

Ну и че, все преподы что я знал так пишут, они не профессионалы, это как семинар Лебедева/Горбунова и пребод по дизайну в универе разница огромна.


 
Германн ©   (2007-11-23 16:58) [36]


> DVM ©   (23.11.07 16:49) [33]
>
>
> > Германн ©   (23.11.07 16:45) [28]
>
>
> Так не лучше?
>

Неа.
А знаешь какая жаба меня душила, когда я делал отступ после в блоке begin end?


 
Anatoly Podgoretsky ©   (2007-11-23 17:00) [37]

> @!!ex  (23.11.2007 16:43:26)  [26]

Международного образца - то есть печать.


 
Anatoly Podgoretsky ©   (2007-11-23 17:01) [38]

> Германн  (23.11.2007 16:45:28)  [28]

Жалко, столько строчек испортил, не мог обойтись одной?


 
Германн ©   (2007-11-23 17:04) [39]


> Anatoly Podgoretsky ©   (23.11.07 17:01) [38]

Не мог. Все-таки хоть как-то нужно это читать.
:-)
Но мой вариант таки на 30 лучше, чем вариант [33].


 
Anatoly Podgoretsky ©   (2007-11-23 19:05) [40]

> Германн  (23.11.2007 16:58:36)  [36]

Пробелы было жалко?



Страницы: 1 2 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.027 c
2-1196011828
sdaf
2007-11-25 20:30
2007.12.23
проблемы с RxRichEdit


15-1195794262
Бакук
2007-11-23 08:04
2007.12.23
IIS 6.0 для XP


2-1196319714
SkyN
2007-11-29 10:01
2007.12.23
Как в DLL использовать функцию экспортируемую exe?


15-1196066490
AIK
2007-11-26 11:41
2007.12.23
Офигели блин


2-1196440912
vegarulez
2007-11-30 19:41
2007.12.23
Вопрос (даже не знаю как правильно сформулировать) про группы.