$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20220227 可読性って大事
Search
kuma
March 14, 2022
Programming
0
80
20220227 可読性って大事
kuma
March 14, 2022
Tweet
Share
More Decks by kuma
See All by kuma
エンジニアの輪スライド
kumainataku
0
250
20220730[PHP]デザインパターン色々学んでみた
kumainataku
0
140
20220319[Laravel]想定外のN+1アラート
kumainataku
0
180
20211027_僕の転職活動の振り返り.pdf
kumainataku
0
110
オブジェクト指向(超基礎)
kumainataku
0
160
20210516 LT資料(PHP echo print)
kumainataku
0
54
20210425 LT会(基本情報技術者)
kumainataku
0
43
202104 読書LT会
kumainataku
0
200
Other Decks in Programming
See All in Programming
dotfiles 式年遷宮 令和最新版
masawada
1
760
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
6
2.1k
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
140
Integrating WordPress and Symfony
alexandresalome
0
150
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
9
1.1k
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
3
700
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
150
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
460
AIコードレビューがチームの"文脈"を 読めるようになるまで
marutaku
0
350
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
170
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
470
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
527
40k
A designer walks into a library…
pauljervisheath
210
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
The Pragmatic Product Professional
lauravandoore
37
7.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Facilitating Awesome Meetings
lara
57
6.7k
Producing Creativity
orderedlist
PRO
348
40k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Transcript
「きれいなコード」って大事 2022 / 2 / 27 クマ
自己紹介 • 実務入って半年 • PHP(Laravel)、JavaScript(Vue)を書いてます。 • 仕事もマッチングアプリも伸び悩み中。。。 • 好き↓ •
タガが外れたように満腹まで食べる • ラーメンハシゴ、次郎マシマシ…etc • 甘いもの • ミスド食べ放題15個の実績(尚、ぼっち参戦) • スイパラ行くのが直近目標(もちろん、ぼっち参戦) P-01
目次 • 話すこと • 話さないこと • 本LTのゴール • 動機 •
なんで「きれいなコード」は大事か • どうやって「きれいなコード」を実現するか • 俺的ピックアップ • おわりに P-01
話すこと P-01
話す事 • 「きれいなコード」って大事だよねって話 • 朴訥(ぼくとつ)とした、当たり前な記述ルール P-01
話さないこと P-01
話さない事 • 「~」を使ったら爆速開発できた的な話 • 「~」で「***」を作ってみた話 ↓ 業務に直接影響しないかもしれません。スイマセン。。。 (いづれできるように精進します!) P-01
本LTのゴール P-01
本LTのゴール • 「きれいなコード」の重要性再認識 • リファクタリングへの意識微増 • 「ウチでは~」とか「~もあるよね」みたいな情報共 有(これが一番したい) P-01
はじめに P-01
はじめに ちょっとだけ、業務に慣れてきた感がある。 しかし、最近ちょこちょこ受ける指摘が。。。 P-01
はじめに 「この変数名イケてないね」 「(if文で早々にreturnすれば)ここのelse文て消せるよ ね?」 ⇒おうふ。 P-01
はじめに タスク進捗を優先で「コードのきれいさ」がないがしろに ↓ レビューで指摘受け、修正工数増 これは改めて見直すいい機会だと P-01
なんで「きれいなコード」が大事か P-01
なんで「きれいなコード」が大事か 言わずもがなですが • 改修時のメンテナンス性 • バグの早期発見 P-01 “「他の人が理解できるって誰が得するんだよ」 …「他の人」というのは…6か月後の「君自身」かもしれない” (「リーダブルコード」より)
どうやって「きれいなコード」を実現するか P-01
どうやってきれいなコードを実現するか 当たり前ですが2点 1, ポイントを抑える 2, 実務で実践+フィードバック ↓ 今回は1, の意識が薄れてきたなあ、と実感 P-01
どうやってきれいなコードを実現するか 上述の通りこちらでインプット ⇒個人的ポイントをピックアップ P-01
俺的ピックアップ8選 ※” ”(引用符)は参考書籍から引用 P-01
1, 【変数】明確な単語を選ぶ P-01
1, 【変数】明確な単語を選ぶ “「空虚な」単語は避けるべき” Ex, ‘get’ P-01 // pageをどこからとってくる?ローカルキャッシュ?データベース? def GetPage(url):
… Ex, ‘Stop’ // どんな操作を指す?取り消しができないならKill、あとから再実行できるならPause()のがいい class Thread { void Stop(); … } ※プログラミングでよく使う英単語のまとめ【随時更新】 https://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923
2, 【変数】値の単位 P-01
2, 【変数】値の単位 “計測できるものであれば変数名に単位を入れる…” Ex. ‘getTime()’ P-01 // getTime()はミリ秒を返すので、start_ms, elapsed_ms…のがいい var
start = (new Date()).getTime(); … var elapsed = (new Date()).getTime() – start; Document.writeIn(“読み込み時間: ” + elapsed + “秒”);
3, 【変数】重要な属性を追加する P-01
3, 【変数】重要な属性を追加する “危険や注意を喚起する情報も追加した方がいい” Ex. ‘password’ P-01 // 暗号化前であることを明示的にする password ⇒
plaintext_password Ex. ‘comment’ // エスケープ処理されてないことを明示 comment ⇒ unescaped_comment
4, 【変数】不要な単語を投げ捨てる P-01
4, 【変数】不要な単語を投げ捨てる “含まれる単語を削除しても情報が全く損なわれないこと もある。” Ex. ‘ConvertToString’ P-01 // 「文字列に変換ね」ってなる ConvertToString
⇒ ToString Ex. ‘DoServeLoop’ // 「ループに入る(※)のね」ってなる ※日本語訳が正直不明…ゴメンナサイ… DoServeLoop ⇒ ServeLoop
5, 【変数】 スコープが小さければ短い名前でもいい P-01
5, 【変数】スコープが小さければ短い名前でもいい “識別子の「スコープ」が小さければ、多くの情報を詰め 込む必要はない” P-01 if (debug) { map<string, int>
m; // 引数mはすぐ近くにあるmap<string, int>だとわかる Print(m); } // 個人的にはやりすぎ(省略しすぎ)感あるけど… ※個人的主観:今はこれが主流では? ⇒これまで話した1~4のルールは発行時期的にグローバルスコープへの定義 とかやってた時代を考慮してのルールかと思う
6, 【コメント】 入出力のコーナーケースに実例を使う P-01
6, 【コメント】入出力のコーナーケースに実例を使う “慎重に選んだ入出力の実例をコメントに書いておけば、 それは千の言葉に等しい” P-01 // ‘src’の先頭や末尾にある’chars’を除去する // 実例 :
Strip(“abba/a/ba”, “ab”)は”/a/”を返す String Strip(String src, String chars) { … }
7, 【制御文】関数から早く返す P-01
7, 【制御文】関数から早く返す “関数で複数のreturn文を使ってはいけないと思っている 人がいる。あほくさ。関数から早く返すことはいいことだ。” P-01 public boolean Contains(String str, String
substr) { if (str == null || substr == null) return false; // 早々にreturnする if (substr .equals(“”)) return true; // ここでもreturnする … } ※個人的にはelseを書かなくて済むから好きな書き方です。
以上。 P-01
おわりに P-01
おわりに~その1~ • ここまで書いたものの、既存プロジェクトのコーディン グルール(暗黙のルール含む)等との兼ね合いもあり、 インプットした通りにならないことも多いことも実感 • 純粋にリーダブルコードの内容がそのまま反映できる とは限らない • 「命名は長くていい」とか「getとか曖昧な単語を使う
な」とか… ⇒土台(基本知識)としてのインプット、と捉える P-01
おわりに~その2~ • かつ、「きれいなコード」を作るのに工数を割くのも良 しとされないことも会社によってはある • PHP Conference Japan 2021: 20年モノの巨大
Webサービスの開発… (https://youtu.be/ZJHX7o1mYJE) • 意見交換しましょう P-01
ご清聴ありがとうございました。 P-01