Форум: "Прочее";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
ВнизПлохой код Найти похожие ветки
← →
vasIZmax © (2007-09-23 22:19) [0]Часто задая вопрос в "Начинающих" привожу кусок кода, где возникает проблема либо не понятность.
И часто в ответах мелькает строка (да и многих это касается): "Плохой код... Перепиши код...", при чем без объяснения чем конкретно он плох, за редким исключением получаешь объяснение.
Так то оно так, да вот задумался: для html (как ЯП) есть сайты где можно проверить код (валидизация что ли если правильно называть?).
А для дельфийского нет такого случаем? Запостил туда "плохой" код, а тебе указывают в чем не правильность и т.д. и т.п.
← →
sdubaruhnul (2007-09-23 22:24) [1]>vasIZmax © (23.09.07 22:19)
Разные вещи. Валидация кода языка программирования равносильна компиляции или хотя бы syntax check.
← →
palva © (2007-09-23 22:30) [2]Плохой код, например когда begin и соответствующий ему end начинаются с разных позиций. В таком коде не сразу разберешься. Поэтому люди вам и говорят: "Вот если бы ваш код был бы хорошим, у меня, возможно, и возникло бы желание разобраться и ответить на вопрос. А данный код мне просто лень разгребать..."
← →
Юрий Зотов © (2007-09-23 22:31) [3]> vasIZmax © (23.09.07 22:19)
Для этого придется написать ИИ, достойный Нобелевской премии.
← →
Turbouser © (2007-09-23 22:34) [4]> [0] vasIZmax © (23.09.07 22:19)
Код можно по разным причинам назвать плохим —
например форматирование, стиль. Зачастую сразу
бывает видно, что код написан «как-нибудь, лишь бы работало».
Проверить — есть CodeHealer но он глючный (или мне такой попался?)
Идет в нагрузку к delphi — можно забрать с codegear.
← →
homm © (2007-09-23 22:34) [5]> [0] vasIZmax © (23.09.07 22:19)
> А для дельфийского нет такого случаем? Запостил туда "плохой"
> код, а тебе указывают в чем не правильность и т.д. и т.п.
Компилятор?
← →
vasIZmax © (2007-09-23 22:40) [6]> sdubaruhnul (23.09.07 22:24) [1]
ну, думаю Вы поняли о чем речь:-)
> palva © (23.09.07 22:30) [2]
Возможно, что этому отводится столь значимая роль при ответах. Мне хоть отступ, хоть не отступ - ||.
Но когда пишутif <...> then begin
<..>
end;
Трудно воспринимается:). Я то привыкif <...> then
begin
<..>
end;
здесь от привычки виденья кода многое зависит. А вот как правильно выработать привычку именно в написании, что б правильно то было.
> Юрий Зотов ©
А не преувеличиваете ли Вы?)
← →
sdubaruhnul (2007-09-23 22:49) [7]Предлагаю не путать понятия "плохой код" и "плохое оформление кода".
← →
palva © (2007-09-23 22:53) [8]> Трудно воспринимается:). Я то привык
Я тоже привык так писать. Наверно, я неудачно выбрал пример. Я хотел сказать, что требования примерно такого сорта.
← →
palva © (2007-09-23 22:55) [9]
> sdubaruhnul (23.09.07 22:49) [7]
> Предлагаю не путать понятия "плохой код" и "плохое оформление
> кода".
Я бы рад не путать, если бы вы прояснили вопрос. У вас, наверно, есть иная версия, что такое плохой код? Лично мне больше ничего в голову не приходит.
← →
Efir © (2007-09-23 22:55) [10]
> Но когда пишут
> if <...> then begin
> <..>
> end;
> Трудно воспринимается:). Я то привык
> if <...> then
> begin
> <..>
> end;
Кому как. По мне, так первый вариант удобней.
← →
vasIZmax © (2007-09-23 23:02) [11]> sdubaruhnul (23.09.07 22:49) [7]
Хорошо давайте разделим эти два понятия.
> palva © (23.09.07 22:55) [9]
Имхо, пример плохого (в тоже время не рационального кода)for i:=1 to 5 do
if i=1 then
<...>
else
if i=2 then
<..>
...
else
<..>;
и обратный примерfor i:=1 to 5 do
case i of
1:<...>;
2:<...>;
...
5:<..>;
Второй вариант предпочтительнее? Или я ошибаюсь?
← →
sdubaruhnul (2007-09-23 23:09) [12]>Я бы рад не путать, если бы вы прояснили вопрос. У вас, наверно, есть иная версия, что такое плохой код? Лично мне больше ничего в голову не приходит.
Мой пример плохого кода:
if IsVisible = True then
for MyString := 1 to 5 do
...
← →
Суслик © (2007-09-23 23:11) [13]зачастую плохой код работает годами и выполняет свою функцию.
к тому же для его написания потребовались 10 "китайцев" по $1500 штука и один опытный манагер за $2000, а не 5 спецов за $2500 и запредельный манагер за $4000 чтобы этих спецов мирить и напрявлять их в нужное русло.
2автар.
если хочешь понять, что такое хороший код изучай чужой код, который себя зарекоментдовал. например, vcl (не только GUI, но и всякие невизуальные классы). не скажу, что это для меня образчик кода, но идейность в нем есть. на этом можно учиться.
поизучай код на чуждом тебе языке. посмотри в торону java, например. зачастую там выше уровень написания кода, чем в дельфи. хотя тоже не всегда. но java - это скорее изложение идеи и формление кода, ибо здесь нет низкоуровневых вещей.
если хочеца понять, как писать хороший низкоуровневый (ну или среднеуровневый :)) код, то смотри в торону книг по winapi. можно linux захватить.
в общем - фиг поймешь, что такое хороший код, пока лет 5 не проработаешь профессионально. т.е. опыт нужен. я вот, например, внезапно начал чуять, что этот код хороший, он мне нравиться. а вот этот - так себе.
подведу итог
опыт - сын ошибок трудных (с)
← →
Юрий Зотов © (2007-09-23 23:15) [14]> vasIZmax © (23.09.07 22:40) [6]
> А не преувеличиваете ли Вы?
А давайте проверим. Вот этот код я назвал безобразным:
procedure TForm1.Button1Click(Sender: TObject);
var
si: STARTUPINFO;
pi: PROCESS_INFORMATION;
WinDir: array[0..MAX_PATH] of Char;
begin
ZeroMemory(@si, SizeOf(si));
ZeroMemory(@pi, SizeOf(pi));
si.cb := SizeOf(si);
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEOFFFEEDBACK;
si.wShowWindow := SW_SHOWNORMAL;
if GetWindowsDirectory(WinDir,SizeOf(WinDir)) > 0 then
if CreateProcess(PChar(WinDir + "\notepad.exe"), "c:\New_text_file.txt", nil, nil, False, 0, nil, nil, si, pi) then
ShowMessage(IntToStr(Integer(CloseHandle(pi.hProcess))));
end;
обосновав это тем, что в нем много лишнего, имеется утечка ресурсов и нет диагностики ошибок.
Теперь скажите - программа, уверенно определяющая в этом коде лишние операции, утечку ресурсов, нужность диагностики ошибок и ее отсутствие - достойна такая программа называться ИИ, или нет?
← →
Суслик © (2007-09-23 23:54) [15]Го, го ЮЗИИ!!!
посмотришь мой код (только там 1млн строк!!!)?
:)
← →
Суслик © (2007-09-24 00:05) [16]2автор.
По поводу хорошего кода.
Мое и не имхо таково - хороший код, это тот код, который:
а. Показывает хорошее знание используемого языка.
б. Показывает хорошее знание используемой библиотеки.
За личиной общих слов я скрываю следующее - хорошее знание выдается тем, что ты не делаешь лишнего. Если не надо pi обнулять нулями, то не надо.
ЗЫ Здесь есть одно отступление. Если ты юзаешь инструмент или библиотеку с плохой документацией, то в твоем праве перестраховываться. Например, обнулять ненужное и вызывать лишнее. Но такой интструмент, как winapi точно не требует лишнего. Чего не скажешь о дельфи :)
← →
Юрий Зотов © (2007-09-24 00:07) [17]> Суслик © (23.09.07 23:54) [15]
Одна строка - один цент. Идет?
PS
Соглашайся, это демпинговая цена.
← →
Efir © (2007-09-24 00:07) [18]
> Го, го ЮЗИИ!!!
> посмотришь мой код (только там 1млн строк!!!)?
Всего то :)
← →
Суслик © (2007-09-24 00:10) [19]думаю
(шепотом, где мой абфускатор....думаю, что строк до 100тыс сокращу. итак 100000 / 100 = $1000... много, зачем Юрке такие деньги?)
не торопи меня, я думаю!
(опять шепотом, не сам допишу абфускатор ... до 50000 сокращу)
согласен $500!
← →
Суслик © (2007-09-24 00:11) [20]
> Efir © (24.09.07 00:07) [18]
> Всего то :)
зато какие - каждая слиток золотой!
← →
Юрий Зотов © (2007-09-24 00:24) [21]> Суслик © (24.09.07 00:10) [19]
Эх, Димыч, молодой ты еще манагер, неопытный, ни бабло, ни время считать не умеешь. Конторе твой абфускатор дороже встанет, да плюс еще и время, на него потраченное.
:о)
← →
Игорь Шевченко © (2007-09-24 10:04) [22]
> А для дельфийского нет такого случаем? Запостил туда "плохой"
> код, а тебе указывают в чем не правильность и т.д. и т.п.
>
Есть. http://www.delphimaster.ru/cgi-bin/forum.pl?n=18
← →
Lamer@fools.ua © (2007-09-24 11:22) [23]>>Юрий Зотов © (23.09.07 22:31) [3]
Тогда процентов 30 премии можно уже отдать, скажем Microsoft"у за FxCop aka Code Analysis плюс пункт меню Edit | Advanced | Format Document в MSVS :-)
← →
Вася Правильный (2007-09-24 11:30) [24]
> Игорь Шевченко © (24.09.07 10:04) [22]
шютник
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.043 c