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
180
0
Share
リーダブルコード入門
DMTC勉強会で利用した資料です
DMTC
August 28, 2014
More Decks by DMTC
See All by DMTC
Web Server Study for Beginners
dmtc
0
120
Framework Study for Beginners
dmtc
0
98
DB Design Study for Beginners
dmtc
0
140
how to use "slack" in our Hackathon
dmtc
0
320
pitch_codeprep@ventureday
dmtc
0
92
ハッカソン用ピッチフォーマット
dmtc
1
690
Other Decks in Programming
See All in Programming
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
250
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
CSC307 Lecture 17
javiergs
PRO
0
310
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
700
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
230
関係性から理解する"同一性"の型用語たち
pvcresin
2
630
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.4k
ふつうのFeature Flag実践入門
irof
7
3.5k
AIエージェントの隔離技術の徹底比較
kawayu
0
460
The NotImplementedError Problem in Ruby
koic
1
480
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
800
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Paper Plane
katiecoart
PRO
1
51k
Writing Fast Ruby
sferik
630
63k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
320
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The agentic SEO stack - context over prompts
schlessera
0
790
Site-Speed That Sticks
csswizardry
13
1.2k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
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. 演習問題