Я уже некоторое время работаю с Rails, и одна вещь, которую я постоянно нахожу, это проверка на наличие в моем коде представления какого-либо атрибута или объекта, равного нулю, до его отображения. Я начинаю задумываться, всегда ли это лучшая идея.
Мое обоснование до сих пор заключалось в том, что, поскольку мои приложения основаны на вводе данных пользователем, могут происходить непредвиденные ситуации. Если я узнал одну вещь из программирования в целом, то, что ввод данных пользователями, о которых не думал программист, является одним из самых больших источников ошибок во время выполнения. Проверяя нулевые значения, я надеюсь обойти это, и мои взгляды изящно справятся с проблемой.
Дело в том, что у меня, как правило, по разным причинам есть аналогичные проверки на nil или недопустимые значения либо в моей модели, либо в коде контроллера. Я бы не назвал это дублированием кода в самом строгом смысле этого слова, но, похоже, оно не очень СУХОЕ. Если я уже проверил наличие nil-объектов в моем контроллере, это нормально, если мой взгляд просто предполагает, что объект действительно не nil? Для атрибутов, которые могут быть нулевыми, которые отображаются, имеет смысл каждый раз проверять, но для самих объектов я не уверен, что является лучшей практикой.
Вот упрощенный, но типичный пример того, о чем я говорю:
код контроллера
def show
@item = Item.find_by_id(params[:id])
@folders = Folder.find(:all, :order => 'display_order')
if @item == nil or @item.folder == nil
redirect_to(root_url) and return
end
end
просмотр кода
<% if @item != nil %>
display the item's attributes here
<% if @item.folder != nil %>
<%= link_to @item.folder.name, folder_path(@item.folder) %>
<% end %>
<% else %>
Oops! Looks like something went horribly wrong!
<% end %>
Это хорошая идея или просто глупо?