Страница 1 из 1

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

СообщениеДобавлено: 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



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


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

ИМХО: Второй код ужасен и от него тошнит.

СообщениеДобавлено: 21.07.2006 (Пт) 4:04
BV
Код: Выделить всё
ret = ret + sSplitter + sIle


а) что такое sIle
б) почему + а не &
в) почему Right без $

СообщениеДобавлено: 21.07.2006 (Пт) 4:17
Хакер
BV
a) APIчатка
б) потому что & это CStr(Operand1) + CStr(Operand2). Т.е. + быстре чем &
в) потому что как всегда забыл

СообщениеДобавлено: 21.07.2006 (Пт) 6:43
tyomitch
Хакер писал(а):б) потому что & это CStr(Operand1) + CStr(Operand2). Т.е. + быстре чем &

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

СообщениеДобавлено: 21.07.2006 (Пт) 6:55
Хакер
tyomitch
А голосовать кто будет?

СообщениеДобавлено: 21.07.2006 (Пт) 7:01
tyomitch
Оба лажовые, потому что склеивают длинные строки.
Если уж читать построчно, то надо было в массив, и потом Join.

СообщениеДобавлено: 21.07.2006 (Пт) 7:04
Хакер
ну это ты предираешься... допустим сплиттер меняется при прочтении каждый строчки. тогда что?

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

СообщениеДобавлено: 21.07.2006 (Пт) 9:14
MeMBus
tyomitch писал(а):Выделение длинных строк -- самая страшная операция в VB.

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

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

Это ж каждый раз вызываеться SysReAllocString или SysAllocString, что несет за собой выделение динамической памяти, копирование исходной строки туда с конкантенацией новой строки, так что ли?

СообщениеДобавлено: 22.07.2006 (Сб) 2:07
tyomitch
Угу. А как иначе?
VB же не может телепатически заранее выделить строку нужной длины, и дописывать в неё. Приходится это делать самому.