カッパでも分かるiOSアプリゲーム開発

カッパがひたすらゲーム制作に関することを書くブログです。Railsに関するTipsもたまにまとめてます。

Rails(Ruby)で現在の日付を日本語文字列で出力 + 三項演算子を使うとお兄様になった

スポンサードリンク
 Time.now.strftime("%-m月%-d日(#{%w(日 月 火 水 木 金 土)[Time.now.wday]})")
=> "7月7日(金)"

f:id:InvokeTwoA:20151023183618p:plain「このコードは美しいか否か」

解説

  • %mや%dだと「07月」とか「09」日と1桁の場合に0埋めしてしまう
  • %-mや%-dとすれば0埋めしないで済む(意外と知られてないカッパの秘伝)
  • 曜日の文字列は英文字でしか取得できない
  • Time.now.wday を行えば曜日は数字で取れる 0: 日 1:月 2: 火 3: 水 4:木 5:金 6: 土
  • よって %w(日 月 火 水 木 金 土) の配列を作って、そのキーを Time.now.wday で取得すれば曜日を取得できる

f:id:InvokeTwoA:20151023183618p:plain「ワンラインが長くなるのは微妙だけど(rubocopとかでも1行80文字までだよね、みたいな設定に賛成)、こういう処理は1行にしたい」
f:id:InvokeTwoA:20151215172640p:plain「三項演算子とかは見にくくなるのであんまし好きじゃないですけどねぇ。でも3行が1行になるのは嬉しい」
f:id:InvokeTwoA:20151023183618p:plain「どんなコードが綺麗かは人によって意見が分かれそうですな」

三項演算子か、3行にするべきか

  • 3行に分けた場合
if この女はKか?
  'ケェェェェェ!'
else
  'アウトオブ眼中'
end
  • 三項演算子を使った場合
この女はKか? ? 'ケェェェェェ!' : 'アウトオブ眼中'

f:id:InvokeTwoA:20151023183618p:plain「なんか三項演算子だと狂気と正気が混在しているイメージを受ける」
f:id:InvokeTwoA:20151215172640p:plain「光と闇が合わさって最強の〜 に通じるものがありますな」
f:id:InvokeTwoA:20151023183618p:plain「それを美しいと見るか、醜いと見るか」

お兄様環境だと三項演算子を使うのも危険

f:id:InvokeTwoA:20151023183618p:plain「コード修正しておきました」


「……三項演算子だと!?」
「初めて見るタイプのコードだな。おそらくだが2世代ほど先をいっているエンジニアがこのチームにはいるようだ」
「解析結果出ました! どうやら、本来ならば3行を使うif文を、この技術を使えば1行に圧縮できるらしいです!」
「そんなバカな! そんな事、ありえるのか……!?」
「今は可不可を議論している場合ではない。現に我々の目の前にこのコードは存在しているんだ」
「git log を洗い出せ! 一体誰がこのコードを書いたんだ!」
「解析結果が出ました…… author は、カッパ」
「カッパだと……正社員でもないフリーランスに、このコードを書いた男がいるというのか!?」

みゆき「皆様が驚くのも無理はありません。この技術はコードチェックなどでは測ることはできない能力なのですから」
f:id:InvokeTwoA:20151023183618p:plain「こらこら、よさないか」



三項演算子を読めない人がいる以上、行数分けた方が良い気もしないでもない