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
DMTC
August 28, 2014
Programming
0
120
リーダブルコード入門
DMTC勉強会で利用した資料です
DMTC
August 28, 2014
Tweet
Share
More Decks by DMTC
See All by DMTC
Web Server Study for Beginners
dmtc
0
82
Framework Study for Beginners
dmtc
0
53
DB Design Study for Beginners
dmtc
0
110
how to use "slack" in our Hackathon
dmtc
0
270
pitch_codeprep@ventureday
dmtc
0
59
ハッカソン用ピッチフォーマット
dmtc
1
620
Other Decks in Programming
See All in Programming
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
300
Fibonacci Function Gallery - Part 2
philipschwarz
PRO
0
220
asdf-ecspresso作って 友達が増えた話 / Fujiwara Tech Conference 2025
koluku
0
1.6k
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
970
Kanzawa.rbのLT大会を支える技術の裏側を変更する Ruby on Rails + Litestream 編
muryoimpl
0
100
Amazon Nova Reelの可能性
hideg
0
250
令和7年版 あなたが使ってよいフロントエンド機能とは
mugi_uno
12
6k
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
2.2k
Package Traits
ikesyo
2
230
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
1
410
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
9
1.3k
CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNativePGの仕組みの紹介〜
nnaka2992
0
180
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
How to train your dragon (web standard)
notwaldorf
89
5.8k
Designing Experiences People Love
moore
139
23k
Optimizing for Happiness
mojombo
376
70k
Gamification - CAS2011
davidbonilla
80
5.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
980
Unsuck your backbone
ammeep
669
57k
Building Adaptive Systems
keathley
39
2.4k
Agile that works and the tools we love
rasmusluckow
328
21k
Transcript
第一回 リーダブルコード入門 株式会社ギブリー 新田 章太
過去のCAMP 開発実績 アジェンダ 1. リーダブルコードとは ‐ そもそもリーダブルコードとは ‐ なぜリーダブルコードが必要なのか 2. 命名規則
‐ 命名規則とは? ‐ 単語を明確に ‐ ループイテレータ ‐ プレフィックスとサフィックス 3. コメントアウト ‐ コメントすべきでないこと ‐ コメントは簡潔に 4. 演習問題
過去のCAMP 開発実績 挨拶 自己紹介 新田章太(24) ・株式会社ギブリー 取締役COO兼CHO ・筑波大学理工学群社会工学類卒 ・エンジニア特化型のキャリア支援事業立ち上げ ・DMTC立ち上げ ・自社サービスの開発、運営、受託開発業務など
過去のCAMP 開発実績 アジェンダ 1. リーダブルコードとは ‐ そもそもリーダブルコードとは ‐ なぜリーダブルコードが必要なのか 2. 命名規則
‐ 命名規則とは? ‐ 単語を明確に ‐ ループイテレータ ‐ プレフィックスとサフィックス 3. コメントアウト ‐ コメントすべきでないこと ‐ コメントは簡潔に 4. 演習問題
1. リーダブルコードとは? ・Dustin Boswell , Trevor Foucher (著) ・須藤 功平
(解説) ・角 征典 (翻訳) 「リーダブルコード」 こちらの書籍をもとに、学んでいきます。
「読みやすいコード」 1. リーダブルコードとは?
「読みやすいコード」 1. リーダブルコードとは? 他の人が短時間で理解できるコード
「読みやすいコード」 1. リーダブルコードとは? 他の人が短時間で理解できるコード
“コードは他の人が最短時間で理解できるように 書かなければならない“ 1. リーダブルコードとは? ※リーダブルコードより引用
なぜ必要なのか? ・チーム開発 ・引き継ぎ 1. リーダブルコードとは?
1.そもそもリーダブルコードとは? 求められるもの ・命名規則 ・コメントアウト ・インデント/美しさ(順序) ・ループとロジックの単純化(ネストを最小化) ・分割方法(最適なまとめ方) ・再構成(汎用的なコードをつくる) などなど…
1.そもそもリーダブルコードとは? 今回触れること ・命名規則 ・コメントアウト ・インデント/美しさ(順序) ・ループとロジックの単純化(ネストを最小化) ・分割方法(最適なまとめ方) ・再構成(汎用的なコードをつくる)
過去のCAMP 開発実績 アジェンダ 1. リーダブルコードとは ‐ そもそもリーダブルコードとは ‐ なぜリーダブルコードが必要なのか 2. 命名規則
‐ 命名規則とは? ‐ 単語を明確に ‐ ループイテレータ ‐ プレフィックスとサフィックス 3. コメントアウト ‐ コメントすべきでないこと ‐ コメントは簡潔に 4. 演習問題
2.命名規則 命名規則とは? 命名規則とは、 プログラミングを行う際に識別子の名称となる文字 列を決定するためのルールを定めたもの。 ネーミング規則、ネーミング規約、命名規約とも呼 ぶ。通常は、ソースコードの可読性や視認性の向上、 プログラミング効率の改善などを目的としている。 ※wikipedia参照
2.命名規則 命名規則とは? $camelCase ($CamelCase) $snake_case
2.命名規則 命名規則とは? “名前に情報を詰め込む”
2.命名規則 単語を明確に
2.命名規則 単語を明確に Makeって具体的に何をするの?
2.命名規則 単語を明確に 単語 代替案 send deliver , announce , route
, distribute find search, extract , locate , recover start launch , create , begin , open make create , set , build , generate , compose , add , new
2.命名規則 ループイテレータ
2.命名規則 ループイテレータ 慣習として i j k を使うことが多い
2.命名規則 ループイテレータ
2.命名規則 ループイテレータ ネストが深くなるとミスに気づきづらい
2.命名規則 ループイテレータ 具体例 デメリット 慣習的なもの $i , $j , $k
ネストが深くなるとミスが出やすい 意味合いを持つ もの $index, $idx, $counter, $cnt 変数の頭文字を とる $ui,$cj,$mk
2.命名規則 プレフィックスとサフィックス ・接頭語(プレフィックス) 状態や行為を表すときに用いることが多い ・接尾語(サフィックス) 要素を補足するときに用いることが多い
2.命名規則 プレフィックスとサフィックス
2.命名規則 プレフィックスとサフィックス もし、ユーザーネームだったら??
2.命名規則 プレフィックスとサフィックス 接頭語 使用用途 is_◦◦ ◦◦かどうか has_◦◦ 既に◦◦かどうか can_◦◦ ◦◦が可能かどうか
Should_◦◦ ◦◦なべきかどうか 条件分岐を意識すると良い
2.命名規則 プレフィックスとサフィックス 接尾語 使用用途 ◦◦_ms , ◦◦_sec 値の単位を表す Html_utf8 ,
plaintext_password その他重要な属性を表す 変換処理などで苦戦しないように
2.命名規則 まとめ ・命名規則を使ってよりわかりやすく! ・意味は明確に具体的に書こう! ・汎用的なものに気をつけよう! ・プレフィックスとサフィックスを活用しよう!
過去のCAMP 開発実績 アジェンダ 1. リーダブルコードとは ‐ そもそもリーダブルコードとは ‐ なぜリーダブルコードが必要なのか 2. 命名規則
‐ 命名規則とは? ‐ 単語を明確に ‐ ループイテレータ ‐ プレフィックスとサフィックス 3. コメントアウト ‐ コメントすべきでないこと ‐ コメントは簡潔に 4. 演習問題
3.コメントアウト コメントすべきこと、すべきでないこと 何が登録されていたら? 発信するって具体的には? そもそもコードで理解できるのでは?
3.コメントアウト コメントすべきこと、すべきでないこと
3.コメントアウト まとめ コメントすべきでは「ない」もの ・コードから読めること ・よくないコードを補うコメント コメントは簡潔に ・代名詞は避ける ・動作は具体的に説明する
過去のCAMP 開発実績 アジェンダ 1. リーダブルコードとは ‐ そもそもリーダブルコードとは ‐ なぜリーダブルコードが必要なのか 2. 命名規則
‐ 命名規則とは? ‐ 単語を明確に ‐ ループイテレータ ‐ プレフィックスとサフィックス 3. コメントアウト ‐ コメントすべきでないこと ‐ コメントは簡潔に 4. 演習問題