8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ateam LifeDesignAdvent Calendar 2024

Day 24

1年目エンジニアの命名規則まとめ

Posted at

はじめに

みなさんはちゃんと命名ができていますか?
僕はできてないです!
就職して1年目ですが、命名についてレビューをいただくことが多々多々あります。
勉強も兼ねて命名の仕方をまとめました。優しい目で見てください。

1. フォーマット規約1に従う

フォーマット規約により、それが何を表しているのか判断できるという利点があります

例 ( javascript )
// コンストラクタ
var x = new DatePicker();

// 通常の関数
var y = pageHeight();

単語を繋ぐ際にもフォーマット規約は重要となってきます
例として4つのケースを挙げます

スネークケース
user_name = "cat0"

# ケバブケース
user-name = "cat0"

# キャメルケース
userName = "cat0"

# パスカルケース
UserName = "cat0"

プロジェクトや言語によって使用できるフォーマット規約は変わりますが、一貫性を持たせることが大切です

自分自身やチーム、言語によって決められた規約の命名をすることが大事らしいです

2. スコープ2を考える

スコープが小さければ短い名前でも良い

例 ( ruby )
    message = "Hello World!"
    puts message

上記のコードはmessageを理解するのに必要な情報がすぐそばにあるのでまだ理解できますが、数十行後にmessageが出てきた際にそれは何を意味しているのか分からなくなりそうです

大きいスコープを持つ変数には、いつ見ても理解できる命名をすることが大切です

3. 汎用的な名前は避ける

下記のtmpは生存期間こそ短いですが、この変数にとって一番大切なことは「一時的な保管」ではありません

tmp = user.name
tmp += " " + user.phone_number
tmp += " " + user.email
puts tmp

これをわかりやすくするためには格納されている情報がわかる命名をします

user_info = user.name
user_info += " " + user.phone_number
user_info += " " + user.email
puts user_info

汎用的な名前は便利ですが、コードを読みにくくしてしまいます

4. 明確な単語を選ぶ

def GetPage(url)

GetではこのメソッドがどこからGetしてくるのかがわかりません
インターネットから取得するのならばFetchPage(), DownloadPage()の方が明確です

状況に合わせて同じ意味でも適した単語を使うようにしましょう

単語 代替案
send deliver, dispatch, announce, distribute, route
find search, exact, locate, recover
start launch, create, begin, open
make create, set up, build, generate, compose, add, new

5. 具体的な名前を使う

TCP/IPポートをサーバがリッスンできるかを確認するメソッド名を定義します。
ServerCanStart()という名前のメソッドを作成してしまうと、名前が少し抽象的です。
具体的な名前にするとCanListenOnPort()になります。
これならメソッドの動作をそのまま表せています。

6. 大切な情報を追加する

変数名に追加する情報は単位だけではく、状況によって改善すると良いです。
以下に例をまとめます。

状況 変数名 改善後
passwordはプレーンテキストなので、処理をする前に暗号化するべきである password plaintext_password
ユーザが入力したcommentは表示する前にエスケープする必要がある comment unescaped_comment
htmlの文字コードをUTF-8に変えた html html_utf8
入力されたdataをURLエンコードした data data_urlenc

7. 誤解されない名前か確認する

最善の名前とは誤解されない名前である。

これに基づきリーダブルコードで推奨されている命名をまとめます。

状況 命名案
上下の限界値 min, max
包含的範囲 first, last
包含/排他的範囲 begin, end
ブール値 is, has

単語に対するユーザの期待にも注意し、get()やsize()には軽量なメソッドが期待されています

最後に

この記事の多くはリーダブルコードより抜粋しています
みんな躓くものはどこかにナレッジがあるもんですね
命名で躓かないようになりたいです

  1. プログラムのコードを一貫した形式に整えるためのルールや規則のこと

  2. ソースコード内の変数や関数が利用できる領域

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?