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
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
240
20220730[PHP]デザインパターン色々学んでみた
kumainataku
0
130
20220319[Laravel]想定外のN+1アラート
kumainataku
0
160
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
190
Other Decks in Programming
See All in Programming
testingを眺める
matumoto
1
140
アセットのコンパイルについて
ojun9
0
120
Reading Rails 1.0 Source Code
okuramasafumi
0
210
Swift Updates - Learn Languages 2025
koher
2
470
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.8k
時間軸から考えるTerraformを使う理由と留意点
fufuhu
16
4.8k
How Android Uses Data Structures Behind The Scenes
l2hyunwoo
0
450
Vue・React マルチプロダクト開発を支える Vite
andpad
0
110
Navigating Dependency Injection with Metro
zacsweers
3
260
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
530
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
20
11k
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
1
220
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Fireside Chat
paigeccino
39
3.6k
Site-Speed That Sticks
csswizardry
10
810
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Building Adaptive Systems
keathley
43
2.7k
Thoughts on Productivity
jonyablonski
70
4.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Rails Girls Zürich Keynote
gr2m
95
14k
A designer walks into a library…
pauljervisheath
207
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
A Tale of Four Properties
chriscoyier
160
23k
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