?

Log in

No account? Create an account

[icon] Очередная порция шедевров из Аргентины - Lorem Ipsum igitur, juvenes dum sumus
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (Мой сайт).

Tags:,
Security:
Subject:Очередная порция шедевров из Аргентины
Time:07:25 pm
В теплой южноамериканской стране еще кого-то взяли на работу. Чтобы заранее не разочаровываться, полом нового сотрудника я не интересовался.
А вот образцы кода мне прислали... Как водится, шедевры начинаются с аутентификации пользователя:)


Ну, во-первых всё писано на VB.net. Мне-то что, я не сильно против, но как-то странно...

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
usu.dealer = Txtdealear.Text
usu.Password = TxtPass.Text
usu.usuario = Me.Txtuser.Text
usu.passDealer = Txtdealear.Text
If Not usu.UserLogin() Then
Txtdealear.Text = ""
TxtPass.Text = ""
Txtuser.Text = ""
MsgBox("Mmmmmm")
Exit Sub
End If
MsgBox("OK")
End Sub


Глубокомысленное "Мммммммм" производит впечатление, согласитесь:) Сразу видна работа мысли.
Закроем глаза на Button1, посмотрим какую функцию вызываем:

Function UserLogin() As Boolean
Dim a As SqlDataReader = Nothing
create(a, "select A.id from Access as A inner join Dealers D on A.iddealer=D.id where usu='" & usuario & "' and A.pass='" & password & "' and D.pass='" & passDealer & "'")
If Not a.HasRows Then
cone.Close()
Return False
Else
cone.Close()
Return True
End If
End Function


Про то, что бывает такая штука как SQL Injection разработчик не догадывается. Наивный...
Выбор имени для функции работы с базой данных - create - кажется странным. Посомтрим на саму функцию:

Public Shared Function create(ByVal sel As String) As Boolean
If cone.State = ConnectionState.Closed Or cone.State = ConnectionState.Broken Then
Try
Connect()
Catch ex As Exception
Exit Function
End Try
End If
Dim Da As New SqlCommand
Try
Da.CommandText = sel
Da.Connection = cone
Da.ExecuteNonQuery()
Catch ex As Exception
Throw New Exception("Error sending command to DB")
End Try
Return True
End Function

Загадочная функция Connect, упомянутая выше выглядит так:

Public Shared Function Connect(Optional ByVal path As String = "") As Boolean
If path = "" Then
cone.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\A.mdf;Integrated Security=True;User Instance=True"
Else
cone.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=" & path & "\A.mdf;Integrated Security=True;User Instance=True"
End If
Try
cone.Open()
Catch ex As Exception
Throw New Exception("Error to Connect")
End Try
Return True
End Function


Сущестование конфигурационных файлов и всех связанных с ними неймспейсов для разработчика, похоже, тайна...
Про безобразную обработку исключений - молчу...

Глядя на всё это становится немного не по себе. Такой код может написать только что пришедший на работу студент, и это будет нормально - многого не умеет, со многими проблемами не сталкивался еще. Бывает, в общем. Не большая проблема - научить. Но вот что делать, если этот самый студент находится на другом континенте, владеет плохоньким английским (судя по тексту исключений), и работает в те часы, когда я, например, люблю спать?
Ведь там, тупо, просто никого нет, чтобы его научить...

Ситуацию усугубляет то, что проект человеку дали реальный. Более того, ему дали проект, для которого я писал эстимейт в расчете на более-менее нормальные российсикие программистские кадры.


Но вот это "usuario" смотрится довольно мило, согласитесь:)

UPD: Mamma mia! Оказывается, код проекта писали коллективно ТРИ человека там, в Буэнос-Айресе. То есть они могли видеть код друг друга, советоваться... И всё равно написали то, что написали. И ушла у них на всё это неделя. 120 человеко-часов. При том, что разумно оценивая объём, я бы написал лучше, и за два дня.
comments: Оставить комментарий Previous Entry Поделиться Next Entry


chirchik
Link:(Link)
Time:2008-04-21 01:35 pm
Эта называеццо "попячтсо, Оргентино! Я - МАЙКО!"
(Ответить) (Thread)


torrio
Link:(Link)
Time:2008-04-21 01:45 pm
Это называется, "я не знаю что со всем этим делать".
(Ответить) (Parent) (Thread)


dfyz
Link:(Link)
Time:2008-04-21 01:38 pm
thedailywtf на дому
(Ответить) (Thread)


torrio
Link:(Link)
Time:2008-04-21 01:42 pm
Ась?
(Ответить) (Parent) (Thread)


dfyz
Subject:http://thedailywtf.com
Link:(Link)
Time:2008-04-21 04:09 pm
Тебе пиво нужно или нет? Оно скоропортящееся.
(Ответить) (Parent) (Thread)


torrio
Subject:Re: http://thedailywtf.com
Link:(Link)
Time:2008-04-21 05:41 pm
Предупреждать надо было, что скоропортящееся.
(Ответить) (Parent) (Thread)


er_v
Link:(Link)
Time:2008-04-21 02:42 pm
А аргентина вообще басик любит. Марсело Янез тоже всё на басике писал. Еще и в аксессе :)
(Ответить) (Thread)


torrio
Link:(Link)
Time:2008-04-21 05:41 pm
У меня такое впечатление, что все эти ребята так или иначе с Марселой связаны... И вся эта Аргентина появилась неспроста.
(Ответить) (Parent) (Thread)


yurikhan
Link:(Link)
Time:2008-04-21 04:20 pm
+1 за публикацию на The Daily WTF.
(Ответить) (Thread)


torrio
Link:(Link)
Time:2008-04-21 05:39 pm
Да это больше не wtf похоже, а на Плач Ярославны... Потому что печально.
(Ответить) (Parent) (Thread)

serg14
Link:(Link)
Time:2008-04-21 08:28 pm
работает да и ладно :)
(Ответить) (Thread)

serg14
Link:(Link)
Time:2008-04-21 08:33 pm
и почему народ до сих пор руками это дело пишет? неужели нет генераторов кода или хотя бы готовых шаблонов?
(Ответить) (Thread)


torrio
Link:(Link)
Time:2008-04-22 05:01 am
Всё есть, конечно... Просто эти ребята даже не догадываются:(
(Ответить) (Parent) (Thread)

[icon] Очередная порция шедевров из Аргентины - Lorem Ipsum igitur, juvenes dum sumus
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (Мой сайт).