$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コーディングにおける命名で気を付けていること
Search
Tanaka Daiki
May 19, 2020
Programming
0
54
コーディングにおける命名で気を付けていること
第3回 Cammel LT 会で登壇した時のスライド
Tanaka Daiki
May 19, 2020
Tweet
Share
More Decks by Tanaka Daiki
See All by Tanaka Daiki
tanacchi の自己紹介_就活編②
tanacchi
0
110
tanacchi の自己紹介_就活編
tanacchi
0
94
tanacchi の自己紹介_研究編
tanacchi
0
30
Other Decks in Programming
See All in Programming
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
410
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
120
AIコーディングエージェント(Manus)
kondai24
0
210
Java 25, Nuevas características
czelabueno
0
110
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
130
Go コードベースの構成と AI コンテキスト定義
andpad
0
140
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
290
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
370
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
1.7k
Navigating Dependency Injection with Metro
l2hyunwoo
1
180
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
7
2.3k
Featured
See All Featured
Visualization
eitanlees
150
16k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
230
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
510
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Become a Pro
speakerdeck
PRO
31
5.7k
The Curse of the Amulet
leimatthew05
0
4.7k
The Cult of Friendly URLs
andyhume
79
6.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Code Review Best Practice
trishagee
74
19k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Documentation Writing (for coders)
carmenintech
77
5.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Transcript
クリーンなコードを書くために 考えていること:命名編 九工大プロ研 tanacchi 1
tanacchi (たなっち) 九州工業大学 大学院 M1 教師なし学習の研究 九工大プロ研 初代 CTO (自称)
2 @q111026d twitter
Cammel さんとの接点 enPiT の参加校 JPHACKS 決勝で 運命の再開 りゅーと ちゃにおさん kugi
さん tanacchi 3 @q111026d
美しいコードを書こう (15min) 4 @q111026d
ATTENTION このスライドの内容は あくまで tanacchi 個人の見解であり, 所属する組織の公式見解でありません. 5 @q111026d
美しいコードを書いていますか? 6 @q111026d
美しいコードの利点 • 継続的な開発 • チーム開発 • 業務の引継ぎ 2 Days ハッカソンで変なバグを踏まないためにも
(最低限) きれいに書くのは必要だと思う において障害が起きにくい 7 @q111026d
美しいコードって何だ? 8 @q111026d
美しいコードには種類がある(と思う) •人間の目線 •コンピュータの目線 9 @q111026d
美しいコードの種類 •人間の目線 •コンピュータの目線 10 @q111026d
人間目線でも様々(?) 命名 DRY の法則 拡張性と保守性 ファイルの分割 オブジェクト指向プログラミング なんやかんや 小 大
具体的 抽象的 ディレクトリ構造 11 @q111026d
今回は命名に着目 命名 DRY の法則 拡張性と保守性 オブジェクト指向プログラミング なんやかんや 小 大 具体的
抽象的 ディレクトリ構造 ファイルの分割 12 @q111026d
美しいコードのために 先頭からスムーズに読み進められるかどうか tanacchi の中でのポリシー 13 @q111026d
美しいコードのために 先頭からスムーズに読み進められる 14 @q111026d
美しいコードのために 先頭からスムーズに読み進められる 15 @q111026d 1. 処理の内容を先に読み進めたり 2. 戻って変数の型などを確認したり プログラムの内容を理解できる することなく,
命名 Q. この関数は何を計算しますか? 16 @q111026d
命名 A. 数字 x の約数の和を求める関数 17 @q111026d
何が悪いのか 1. 意味が読み取れない関数名 2. 特に必要のないコメント 4. いや知っとるわ 3. 意味を読み取りづらい変数名 18
@q111026d
命名は大事やぞ(ニッコリ) Q. この関数は何を計算しますか? 多少長くなっても 意図が伝わることを重視しよう 19 @q111026d
美しいコードのために あ,約数の合計を 出すんだ~(察し) 複数形の “divisors” の方が いいよなあ 関数の中身を先に読み進めることなく 処理の内容を理解できる 20
@q111026d
美しいコードのために 先頭からスムーズに読み進められる 21 @q111026d 1. 処理の内容を先に読み進めたり 2. 戻って変数の型などを確認したり プログラムの内容を理解できる することなく,
他の具体例 22 @q111026d
関数編 関数:何らかの動作を記述するもの 「 動詞 」から始まるのが自然 • set_param (パラメータを設定する) • init_status
(ステータスを初期化する) 意味の伝わる範囲なら単語を省略してもいいと思う 23 @q111026d
関数編 真偽値(true/false)を返す関数 •末尾に「?」マーク(“?”を関数名に使える言語の場合) game_finished? , available? •be動詞 か 助動詞を使う is_game_finished
, can_access 24 @q111026d
変数編 結構難しい. image という変数名 => • 画像ファイル内のRGBデータの配列? • ファイルの名前? •
ファイルへのパス? わからなくなったら… 前の処理を読み返して確認しなきゃいけない => 先頭からスムーズに読み進められない • rgb_array • image_filename • image_filepath 25 @q111026d
美しいコードのために 先頭からスムーズに読み進められる 26 @q111026d することなく, 1. 処理の内容を先に読み進めたり 2. 戻って変数の型などを確認したり プログラムの内容を理解することができる
結局何が言いたかったか 1. 多少長くなってでも伝わる命名を 2. 「関数は動詞から始める」などの慣習を 3. 人のコードを真似しながら短縮化を 以下のことを考えています これらは共通のポリシーに基づく (他人が)
先頭からスムーズに 読み進められるコードを書く 27 @q111026d 変数宣言のタイミング,行分けを検討するときも
何をすべきか 書かなきゃ実感できないことが大半 • いろんなシチュエーションに出会いながら 自分なりの法則を見つける • チーム開発するときに コードレビューで議論するのが近道かも 28 @q111026d
おわりに 日々精進ですなあ 29 @q111026d