【Ruby】lsコマンドを作る5で学んだこと

Ruby

こんにちは、moegi (@moegi_web) です。
今回は-a -r -lオプションを全て使用できるlsコマンドを作ったとき頂いたレビューから学んだことをまとめました。

変数

変数への再代入はなるべく避ける

【悪い例】filesを2回使っていた!


files = options['a'] ? Dir.glob('*', File::FNM_DOTMATCH) : Dir.glob('*')
files = options['r'] ? files.reverse : files

【良い例】ソートが終わったファイルという意味でsorted_filesという変数名に変更。


files = options['a'] ? Dir.glob('*', File::FNM_DOTMATCH) : Dir.glob('*')
sorted_files = options['r'] ? files.reverse : files

対称性のある名前をつける

【悪い例】output_ls_command_option_lとoperation_output_filesでは変数名がかなり異なる。名詞であるoperationから始まる名前はメソッド名にならない。


options['l'] ? output_ls_command_option_l(files) : operation_output_files(files)

【良い例】やろうとしていることは同じ(データの出力)なので、名前がかなり異なる変数名はNG!対称性のある名前が良い。


options['l'] ? output_for_long_format(sorted_files) : output_for_short_format(sorted_files)

参考記事:モデルやメソッドに名前を付けるときは英語の品詞に気をつけよう – Qiita

メソッド名は動詞から始める

【悪い例】名詞から始まるメソッド名はNG!メソッドは 動詞のみ or 動詞 + 名詞。


long_formatted_output_files(files)

【良い例】処理を実行するメソッドは動詞から始める。


output_long_formatted_files(files)

その他

命名に悩んだときはman lsをチェック

ターミナルでman lsでオプションを調べてその文言の中から変数名を考えるという方法もある!

-l (The lowercase letter “ell”.) List files in the long format, as described in the The Long Format subsection below.

コミットメッセージ

【悪い例】update ls_5 ぜんぶ同じはだめ。

【良い例】

Fix variable names

3年後に読み直して「何をどう変えたのか」がメッセージだけでわかるような内容にしておく!

まとめ

lsコマンド5を作ったときに学んだメソッドをまとめました。

コメント

タイトルとURLをコピーしました