```coffeescript
###
# Copyright 2015 ppy Pty. Ltd.
#
# This file is part of osu!web. osu!web is distributed with the hope of
# attracting more community contributions to the core ecosystem of osu!.
#
# osu!web is free software: you can redistribute it and/or modify
# it under the terms of the Affero GNU General Public License version 3
# as published by the Free Software Foundation.
#
# osu!web is distributed WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with osu!web.  If not, see <http://www.gnu.org/licenses/>.
###
{span} = React.DOM
el = React.createElement

bn = 'beatmap-discussions-post-icon'

BeatmapDiscussions.MessageIcon = React.createClass
  mixins: [React.addons.PureRenderMixin]


  render: ->
    name = switch @props.messageType
      when 'praise' then 'heart'
      when 'suggestion' then 'circle-o'
      when 'problem' then 'exclamation-circle'

    el Icon, name: name
```

Use mapping instead of switch
user
```coffeescript
###
# Copyright 2015 ppy Pty. Ltd.
#
# This file is part of osu!web. osu!web is distributed with the hope of
# attracting more community contributions to the core ecosystem of osu!.
#
# osu!web is free software: you can redistribute it and/or modify
# it under the terms of the Affero GNU General Public License version 3
# as published by the Free Software Foundation.
#
# osu!web is distributed WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with osu!web.  If not, see <http://www.gnu.org/licenses/>.
###
{span} = React.DOM
el = React.createElement

bn = 'beatmap-discussions-post-icon'

BeatmapDiscussions.MessageIcon = React.createClass
  mixins: [React.addons.PureRenderMixin]


  render: ->
    el Icon, name: @typeMapping[@props.messageType]


  typeMapping:
    praise: 'heart'
    suggestion: 'circle-o'
    problem: 'exclamation-circle'
```
assistant