Професионална програма
Loading...
SvilenPavlov avatar SvilenPavlov 11 Точки

[Exercises: Functions, Triggers and Transactions ] Problem 9. Employees with Three Projects

Здравейте!

 

Има грешка в условието на задачата. 

"If the employee has more than 3 projects" пише в условието, докато джъдж очаква код съответстващ на тескта "If the employee has 3 or more projects".


Страхотни сте в СофтУни, но моля Ви спрете да ни губите времето, пишейки условията на грешен английски. В лекциите всички лектори наблягат на факта, че без английски няма да станем програмисти и точно във условията да има такива грешки е абсурдно. 

Благодаря!

Тагове:
0
Module: C# DB
TeodorStefanovPld avatar TeodorStefanovPld 1281 Точки

If the employee has more than 3 projects"

това си е коректно... А защо е такъв текста е нарочно :Д на работа е по-зле. Карат ви да мислите логично и за edge cases

ако той има повече от 3 значи ще има и 3 проекта логично е да се сетите да вземете и тези с =3. 

Като ти дойде бизнеса и каже искам тея данни и след 2 дена се сети че иска и тези който са в случая = 3. Ти ако си мислиш логично и се подготовиш си спестяваш драмата да се разправяш с хора за който кода е магия.

-2
willystyle avatar willystyle 2307 Точки

"ако той има повече от 3 значи ще има и 3 проекта логично е да се сетите да вземете и тези с =3. " и това наричаш логика? На мен ми звучи като логиката на Божинката :)

P.S. Относно грешката в условието, мисля, че е субективно, докато не дадеш точния линк към условие и джъдж, понеже форума гъмжи от хора през 10 поста дето са открили грешки в условията, но 99% се оказват нещо неразбрали.

1
03/08/2019 20:59:45
TeodorStefanovPld avatar TeodorStefanovPld 1281 Точки

Ами реалноста е по-страшна,може и така да ти звучи но хората от бизнеса за който пишем софтуера са още по-страшни.. За 6 месеца вече толкова историй мога да разкажа че е плашещо

0
SvilenPavlov avatar SvilenPavlov 11 Точки

Не е логично за мен. Ясно е че хората не сме перфектни и на работа ще са объркани условията. 
Тук обаче очаквам да се учим да кодим не на психология на клиента. 
Нямам мозък в момента да кажа нещо конкретно, просто аргумента ти, че и на работа ще ни бъркат условията абс не важи в дадения контекст.

0
willystyle avatar willystyle 2307 Точки

И къде е проблема в условието? Според мен е коректно, при транзакции > maxEmployeeProjectsCount ( в случая 3) хвърля грешка и прави ролбек.

CREATE PROCEDURE usp_AssignProject (@employeeID int, @projectID int)
AS
BEGIN
  DECLARE @maxEmployeeProjectsCount int = 3;
  DECLARE @employeeProjectsCount int;

  BEGIN TRAN
  INSERT INTO EmployeesProjects (EmployeeID, ProjectID) 
  VALUES (@employeeID, @projectID)

  SET @employeeProjectsCount = (
    SELECT COUNT(*)
    FROM EmployeesProjects
    WHERE EmployeeID = @employeeID
  )
  IF(@employeeProjectsCount > @maxEmployeeProjectsCount)
    BEGIN
      RAISERROR('The employee has too many projects!', 16, 1);
      ROLLBACK;
    END
  ELSE COMMIT
END

--testing - do not submit in Judge
EXEC usp_AssignProject 2, 1; -- no projects initially
EXEC usp_AssignProject 2, 2;
EXEC usp_AssignProject 2, 3;
EXEC usp_AssignProject 2, 4; -- raiserror & rollback

 

0