Slide 1

Slide 1 text

今日から始める 技術的負債の解消 レバテック開発部 内藤 翔太

Slide 2

Slide 2 text

| © 2024 Levtech Co., Ltd. 2 レバテック開発部 ITSプロダクト開発グループ / 契約請求ドメインチーム 内藤 翔太 SHOTA NAITO ・2023年04月 レバレジーズ株式会社に新卒入社 ・2023年11月 レバテック開発部に異動 ・直近は、システムのリプレースに取り組んでいます! ・バックエンド、フロントエンド、インフラ広く触ってます!

Slide 3

Slide 3 text

| © 2024 Levtech Co., Ltd. 3 ● はじめに ● 遡ること 3 ヶ月前 ● 命名的問題に向き合ってみる ● まとめ アジェンダ

Slide 4

Slide 4 text

| © 2024 Levtech Co., Ltd. 4 ● はじめに ● 遡ること 3 ヶ月前 ● 命名的問題に向き合ってみる ● まとめ アジェンダ

Slide 5

Slide 5 text

| © 2024 Levtech Co., Ltd. 5 今日伝えたいこと 良い命名とコメントが 技術的負債を改善する(生まない)第一歩

Slide 6

Slide 6 text

| © 2024 Levtech Co., Ltd. 6 ● はじめに ● 遡ること 3 ヶ月前 ● 命名的問題に向き合ってみる ● まとめ アジェンダ

Slide 7

Slide 7 text

| © 2024 Levtech Co., Ltd. 7 遡ること 3 ヶ月前 ...

Slide 8

Slide 8 text

| © 2024 Levtech Co., Ltd. 8 https://publickey1.jp/blog/24/post_301.html

Slide 9

Slide 9 text

| © 2024 Levtech Co., Ltd. 9 https://publickey1.jp/blog/24/post_301.html 🤔

Slide 10

Slide 10 text

| © 2024 Levtech Co., Ltd. 10 技術的負債を抱えたレガシーコードのリファクタリングで取り除かれた問題の 90%以上 が、 ● 命名的問題 ○ メソッド名と実際の関数の動作が一致していない ○ 関数名とコメントが矛盾しているなど ● 構造的問題 ○ 複雑で読みにくい多数の条件分岐や深いネストが存在するなど のいずれかであるという先行研究がある https://smilevo.github.io/self-affirmed-refactoring/Preprint/ESWA20_preprint.pdf 先行研究 遡ること 3 ヶ月前...

Slide 11

Slide 11 text

| © 2024 Levtech Co., Ltd. 11 A. 命名的問題(26 名) B. 構造的問題(27 名) ・getter メソッドが setState() と命名されている ・open() メソッドに「//チャネルを閉じる」という  コメントが付いている ・複雑で読みにくい多数の条件分岐や  深いネストなどが含まれている 読解に関わる問題を 10 問出題

Slide 12

Slide 12 text

| © 2024 Levtech Co., Ltd. 12 気になる結果は...?

Slide 13

Slide 13 text

| © 2024 Levtech Co., Ltd. 13 https://publickey1.jp/blog/24/post_301.html

Slide 14

Slide 14 text

| © 2024 Levtech Co., Ltd. 14 https://publickey1.jp/blog/24/post_301.html

Slide 15

Slide 15 text

| © 2024 Levtech Co., Ltd. 15 僕は書いてます というより 書くようになりました 明らかに命名的問題 > 構造的問題とは言えないが 命名的問題が読解制度に影響を与える以上、軽視しない方が良いことは確か

Slide 16

Slide 16 text

| © 2024 Levtech Co., Ltd. 16 僕は書いてます というより 書くようになりました まずは動作に影響が出ない(にくい)命名的問題から着手し 構造を把握しやすくした上で構造的問題に着手するのが良いのではないか?

Slide 17

Slide 17 text

| © 2024 Levtech Co., Ltd. 17 ということで

Slide 18

Slide 18 text

| © 2024 Levtech Co., Ltd. 18 ● はじめに ● 遡ること 3 ヶ月前 ● 命名的問題に向き合ってみる ● まとめ アジェンダ

Slide 19

Slide 19 text

| © 2024 Levtech Co., Ltd. 19 POINT 01 コメントの質を上げる POINT 02 命名的問題に向き合う 変数名や関数名の質を上げる

Slide 20

Slide 20 text

| © 2024 Levtech Co., Ltd. 20 POINT 01 コメントの質を上げる POINT 02 命名的問題に向き合う 変数名や関数名の質を上げる

Slide 21

Slide 21 text

| © 2024 Levtech Co., Ltd. 21 日頃の開発で変数名や関数名を どれだけ意識出来てますか?

Slide 22

Slide 22 text

| © 2024 Levtech Co., Ltd. 22 至る所で言われてるので、言わずもがなですが...

Slide 23

Slide 23 text

| © 2024 Levtech Co., Ltd. 23 コードを読む時間 > 書く時間 変数名や関数名の質を上げる 読む時間 書く時間 10倍 以上 https://www.goodreads.com/quotes/835238-indeed-the-ratio-of-time-spent-reading-versus-writing-is Robert C. Martin

Slide 24

Slide 24 text

| © 2024 Levtech Co., Ltd. 24 POINT 01 意味が広すぎる動詞を使わない POINT 02 名前と挙動を一致させる 変数名や関数名の質を上げる

Slide 25

Slide 25 text

| © 2024 Levtech Co., Ltd. 25 コードのサンプル ※ あくまでサンプルです 変数名や関数名の質を上げる 👌 before after 👎

Slide 26

Slide 26 text

| © 2024 Levtech Co., Ltd. 26 POINT 01 コメントの質を上げる POINT 02 命名的問題に向き合う 変数名や関数名の質を上げる

Slide 27

Slide 27 text

| © 2024 Levtech Co., Ltd. 27 そもそもコメントは書くべきか?

Slide 28

Slide 28 text

| © 2024 Levtech Co., Ltd. 28 先日の t-wada さんの Twitter より抜粋 コメントの質を上げる 書籍「プログラマー脳」によると、プログラミングやドメインへの習熟度によってコー ドのどこを読むかが異なるということが研究から分かってきている。ドメイン初見の人 やプログラミング初心者はコードコメントを読み、熟練者はコードコメントを読まず ビーコン(全体の要となる変数名や関数名、それらを合わせた構造等)を読む。 なので、「コードコメントを書くべきか、コメント不要なコードを書くべきか」という 2 択ではなく「コメント不要なコードを書いたうえで(これは大前提)、それでもコメ ントを書くべき(書くことが効果的な)状況は意外と多い」という話なんです。 https://x.com/t_wada/status/1841681739112186228

Slide 29

Slide 29 text

| © 2024 Levtech Co., Ltd. 29 POINT 01 TODO、FIXME を残す POINT 02 外部参照リンクを明記する POINT 03 Why、Why not を残す 各メソッドの説明、注意点を明記する POINT 04 コメントの質を上げる

Slide 30

Slide 30 text

| © 2024 Levtech Co., Ltd. 30 コメントの質を上げる 各メソッドの説明 注意点を明記する Why、Why not を残す 外部参照リンク を明記する TODO、FIXME を残す コードのサンプル ※ あくまでサンプルです

Slide 31

Slide 31 text

| © 2024 Levtech Co., Ltd. 31 コメントの質を上げる 各メソッドの説明 注意点を明記する 外部参照リンク を明記する TODO、FIXME を残す コードのサンプル ※ あくまでサンプルです Why、Why not を残す 特に注力してほしい!!

Slide 32

Slide 32 text

| © 2024 Levtech Co., Ltd. 32 ● はじめに ● 遡ること 3 ヶ月前 ● 命名的問題に向き合ってみる ● まとめ アジェンダ

Slide 33

Slide 33 text

| © 2024 Levtech Co., Ltd. 33 まとめ ● 明らかに命名的問題 > 構造的問題とは言えないが、命名的問題が読解制度に影響を 与える以上、軽視しない方が良いことは確か ● まずは動作に影響が出ない(にくい)命名的問題から着手し、構造を把握しやすくした 上で構造的問題に着手するのが良いのではないか? ● 命名的問題には「変数名や関数名」の観点と「コメント」の観点でアプローチする ● コメント不要なコードを書いたうえで(これは大前提)それでもコメントを書く べき(書くことが効果的な)状況は意外と多いので、コメントにも是非とも向き 合ってほしい

Slide 34

Slide 34 text

| © 2024 Levtech Co., Ltd. 34 今日伝えたいこと 良い命名とコメントが 技術的負債を改善する(生まない)第一歩 再掲

Slide 35

Slide 35 text

宣伝

Slide 36

Slide 36 text

開発職向け会社紹介資料 プロダクトや開発組織についてご紹介しています。 https://speakerdeck.com/leverages/levtech-hui-she-shao-jie-zi-liao-enzi niazhi-xiang-ke レバテック開発部テックブログ 日々の開発におけるリアルをお届けしています! https://zenn.dev/p/levtech カジュアル面談フォーム 気軽にご応募ください!いろんなお話しましょう! https://hrmos.co/pages/leverages/jobs/A_c_00071