Качественный код

Windows лучше чем Linux! Чем? Ясно же написано — чем Linux!
Раздуй свой холивар сегодня, потому что завтра это может сделать уже кто-то другой!

Какой код можно назвать "качественным"?

Первый
6
67%
Второй
0
Ответы отсутствуют.
Оба качественные
0
Ответы отсутствуют.
Не тот, не тот нельзя так назвать
3
33%
 
Всего голосов : 9

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Качественный код

Сообщение Хакер » 21.07.2006 (Пт) 3:24

В процесса спора на тему "что лучше: подключаться к DB напрямую через mysql_connect или юзать для всех операций с бд DAL обёртку" родился вопрос, что же такое качественный код.

Я изложил своё мнение, и привёл 2 примера, что по моему является качественным и некачественным кодом:


Качественный код:
Код: Выделить всё
Public Function ReadFile(ByVal sFileName As String, ByVal sSplitter As String) As String

Dim hFile As Long
Dim ret   As String
Dim sLine  As String
  hFile = FreeFile()
  Open sFileName For Input As #hFile
   Do While Not EOF(hFile)
      Line Input #hFile, sLine
      ret = ret + sSplitter + sIle
   Loop
   ReadFile = Right(ret, Len(ret) - Len(sSplitter)
   Close #hFile
End Function


Некачественный код
Код: Выделить всё
Function FileRead(Name As String, Delitel As String)
Open Name For Input As #1
20
On Error Goto 10
Line Input #1, stroka
text = text +stroka + Delitel
Goto 20
10
Close #1
FileRead = text
End Function



На что последовал такой ответ:
Оба работают... Именование переменных не важно-компилятору пофиг... Во втором варианте ещё и отлов ошибок есть... Единственная трабла- использование фиксированного номера файла.


А как вы считаете?

ИМХО: Второй код ужасен и от него тошнит.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 21.07.2006 (Пт) 4:04

Код: Выделить всё
ret = ret + sSplitter + sIle


а) что такое sIle
б) почему + а не &
в) почему Right без $
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2006 (Пт) 4:17

BV
a) APIчатка
б) потому что & это CStr(Operand1) + CStr(Operand2). Т.е. + быстре чем &
в) потому что как всегда забыл
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2006 (Пт) 6:43

Хакер писал(а):б) потому что & это CStr(Operand1) + CStr(Operand2). Т.е. + быстре чем &

Для строк абсолютно одинаково. VB умнее, чем некоторые думают, и CStr(строки) автоматически выоптимизировывает.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2006 (Пт) 6:55

tyomitch
А голосовать кто будет?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2006 (Пт) 7:01

Оба лажовые, потому что склеивают длинные строки.
Если уж читать построчно, то надо было в массив, и потом Join.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2006 (Пт) 7:04

ну это ты предираешься... допустим сплиттер меняется при прочтении каждый строчки. тогда что?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2006 (Пт) 7:53

Тогда прочитать в массив, создать один раз строку нужной длины, и заполнять Mid-ами. Выделение длинных строк -- самая страшная операция в VB.
Изображение

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 21.07.2006 (Пт) 9:14

tyomitch писал(а):Выделение длинных строк -- самая страшная операция в VB.

Я бы сказал даже одна из самых мучительно-длинных операций :)
Бороться и искать, найти и перепрятать!

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 22.07.2006 (Сб) 2:05

tyomitch писал(а):Тогда прочитать в массив, создать один раз строку нужной длины, и заполнять Mid-ами. Выделение длинных строк -- самая страшная операция в VB.

Это ж каждый раз вызываеться SysReAllocString или SysAllocString, что несет за собой выделение динамической памяти, копирование исходной строки туда с конкантенацией новой строки, так что ли?
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.07.2006 (Сб) 2:07

Угу. А как иначе?
VB же не может телепатически заранее выделить строку нужной длины, и дописывать в неё. Приходится это делать самому.
Изображение


Вернуться в Holy Wars@VBStreets

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList