Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コーディングにおける命名で気を付けていること
Search
Tanaka Daiki
May 19, 2020
Programming
0
41
コーディングにおける命名で気を付けていること
第3回 Cammel LT 会で登壇した時のスライド
Tanaka Daiki
May 19, 2020
Tweet
Share
More Decks by Tanaka Daiki
See All by Tanaka Daiki
tanacchi の自己紹介_就活編②
tanacchi
0
95
tanacchi の自己紹介_就活編
tanacchi
0
87
tanacchi の自己紹介_研究編
tanacchi
0
27
Other Decks in Programming
See All in Programming
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
170
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
2
420
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
520
Amazon Bedrock Multi Agentsを試してきた
tm2
1
290
Formの複雑さに立ち向かう
bmthd
1
850
仕様変更に耐えるための"今の"DRY原則を考える / Rethinking the "Don't repeat yourself" for resilience to specification changes
mkmk884
0
320
GoとPHPのインターフェイスの違い
shimabox
2
190
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
100
Immutable ActiveRecord
megane42
0
140
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
120
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
120
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Fireside Chat
paigeccino
34
3.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Code Review Best Practice
trishagee
67
18k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
RailsConf 2023
tenderlove
29
1k
The World Runs on Bad Software
bkeepers
PRO
67
11k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
What's in a price? How to price your products and services
michaelherold
244
12k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
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