Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Вниз

Оцените код 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.119 c
2-1196343590
malyar
2007-11-29 16:39
2007.12.23
парсинг строки


2-1196273237
Kaliostro
2007-11-28 21:07
2007.12.23
Работа с DBase IV через ADO


2-1196082528
Angelka
2007-11-26 16:08
2007.12.23
Memo


2-1196171705
Anti Gopn!k
2007-11-27 16:55
2007.12.23
Сделать недоступным


1-1191232247
Yurikon
2007-10-01 13:50
2007.12.23
Директивы компилятору





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский