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
28
コーディングにおける命名で気を付けていること
第3回 Cammel LT 会で登壇した時のスライド
Tanaka Daiki
May 19, 2020
Tweet
Share
More Decks by Tanaka Daiki
See All by Tanaka Daiki
tanacchi の自己紹介_就活編②
tanacchi
0
94
tanacchi の自己紹介_就活編
tanacchi
0
86
tanacchi の自己紹介_研究編
tanacchi
0
27
Other Decks in Programming
See All in Programming
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
4
260
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
220
Beyond ORM
77web
5
660
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
180
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
180
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
540
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
5
1.2k
[JAWS-UG横浜 #76] イケてるアップデートを宇宙いち早く紹介するよ!
maroon1st
0
460
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
250
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
760
103 Early Hints
sugi_0000
1
230
Featured
See All Featured
Become a Pro
speakerdeck
PRO
26
5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Writing Fast Ruby
sferik
628
61k
Adopting Sorbet at Scale
ufuk
73
9.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
We Have a Design System, Now What?
morganepeng
51
7.3k
Unsuck your backbone
ammeep
669
57k
Docker and Python
trallard
42
3.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
Faster Mobile Websites
deanohume
305
30k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
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