Victor Isaev (torrio) wrote,
Victor Isaev
torrio

Очередная порция шедевров из Аргентины

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


Ну, во-первых всё писано на 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 человеко-часов. При том, что разумно оценивая объём, я бы написал лучше, и за два дня.
Tags: программирование, работа
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 13 comments