Си диез / Говнокод #3650 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
private PostsPageViewModel GetUserPosts(Guid userId, int? pageIndex)
{
	var posts = entitiesDB.Posts
		.Where(post => post.UserId == userId)
		.OrderByDescending(p => p.DateCreated)
		.Select(post => new PostViewModel()
		{ 
			Contents = post.Contents, 
			DateCreated = post.DateCreated, 
			PostId = post.PostId, 
			AuthorId = userId,
			AssociatedTags = post.Tags.Select(t => new TagViewModel() { TagId = t.TagId, Contents = t.Contents }).ToList()
		})
		.ToPagedList(pageIndex ?? 1, 10);

	PostsPageViewModel viewModel = new PostsPageViewModel()
	{
		Posts = posts,
		RouteValues = new { controller = "Posts", action = "UserPosts" }
	};

	return viewModel;
}

Проект под ASP.NET MVC. Метод должен вернуть в вид заданную страницу постов из базы для заданного юзверя, посортить и прицепить ассоциированные с сообщением теги. Мало того, что это всё в одном операторе, так оно ещё и крашится.

Запостил: eigenein eigenein, (Updated )

Комментарии (22) RSS

  • Нормальный код. А крашится наверно через null в БД. Поменяй типы полей у объекта Posts на Nullable<>
    Ответить
    • Нет, краш был на вызове ToList(). Select возвращал объект, который не поддерживал этот метод.
      Ответить
      • А вот не надо забывать, что Linq2sql это вам не linq2object
        Ответить
      • ето вин
        гопнет скатывается в сраненькое говно
        где ето видано "не поддерживает метод" в статически типизированном языке
        Ответить
        • Да вот сам не ожидал, когда получил "Method ToList() is not recognized for ..."
          Ответить
        • Каким образом статическая типизация относится к MyType ToList() { throw new NotSupportedException(); }

          ?
          Ответить
          • во-первых throw new NotSupportedException(); ничем не лучше "NoMethodError: undefined method"
            во-вторых там таки не "NotSupportedException"
            так-то
            Ответить
  • Код хороший. Почти образцовый.

    Для контраста можно развернуть (скажем ручками) все экстеншн методы и инициализаторы, и попробовать в полученной каше поискать баг.

    А баги? Ну дык это просто от несоответствия предметной области и реализации, любая функция будет работать только в определённых условиях и предположениях относительно входных данных. А если эта функция делает что-то конкретное - то тем более.
    Ответить
    • Мне нравится. Очень удобно строить запросы в стиле SQL, но к коллекциям. Кода становится намного меньше и нет партянок из if-for.
      Ответить
        • Да тут на говнокоде таких портянок if-else-for просто бездонная бочка в любом разделе. Просто зайдите в соседние посты говнокодов.
          Ответить
          • А вот у меня в коде иф-элсов мало. Я, извините за пафос, использую "замену условной логики состоянием/стратегией".

            И без всякого linq:)
            Ответить
        • >в стиле sql
          Ну тоесть выглядит это всё, как запрос к бд на SQL. Я в своё время на PHP программировал сайты, а там часто используются запросы к бд и после этого мне нравится стиль SQL. Тоесть не нужно переучиваться на новый язык что-ли. Вообщем дело привычки.
          Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8