Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今日から始める技術的負債の解消

 今日から始める技術的負債の解消

2024/10/15(火) Trick or Treat!若手エンジニアふんわりLT Night!『今日から始める技術的負債の解消』

今日この瞬間から「技術的負債」に立ち向かうための Tips の紹介です。

Tech Leverages

October 15, 2024
Tweet

More Decks by Tech Leverages

Other Decks in Technology

Transcript

  1. | © 2024 Levtech Co., Ltd. 2 レバテック開発部 ITSプロダクト開発グループ / 契約請求ドメインチーム

    内藤 翔太 SHOTA NAITO ・2023年04月 レバレジーズ株式会社に新卒入社 ・2023年11月 レバテック開発部に異動 ・直近は、システムのリプレースに取り組んでいます! ・バックエンド、フロントエンド、インフラ広く触ってます!
  2. | © 2024 Levtech Co., Ltd. 3 • はじめに • 遡ること

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

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

    3 ヶ月前 • 命名的問題に向き合ってみる • まとめ アジェンダ
  5. | © 2024 Levtech Co., Ltd. 10 技術的負債を抱えたレガシーコードのリファクタリングで取り除かれた問題の 90%以上 が、 •

    命名的問題 ◦ メソッド名と実際の関数の動作が一致していない ◦ 関数名とコメントが矛盾しているなど • 構造的問題 ◦ 複雑で読みにくい多数の条件分岐や深いネストが存在するなど のいずれかであるという先行研究がある https://smilevo.github.io/self-affirmed-refactoring/Preprint/ESWA20_preprint.pdf 先行研究 遡ること 3 ヶ月前...
  6. | © 2024 Levtech Co., Ltd. 11 A. 命名的問題(26 名) B.

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

    > 構造的問題とは言えないが 命名的問題が読解制度に影響を与える以上、軽視しない方が良いことは確か
  8. | © 2024 Levtech Co., Ltd. 18 • はじめに • 遡ること

    3 ヶ月前 • 命名的問題に向き合ってみる • まとめ アジェンダ
  9. | © 2024 Levtech Co., Ltd. 19 POINT 01 コメントの質を上げる POINT

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

    02 命名的問題に向き合う 変数名や関数名の質を上げる
  11. | © 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
  12. | © 2024 Levtech Co., Ltd. 24 POINT 01 意味が広すぎる動詞を使わない POINT

    02 名前と挙動を一致させる 変数名や関数名の質を上げる
  13. | © 2024 Levtech Co., Ltd. 26 POINT 01 コメントの質を上げる POINT

    02 命名的問題に向き合う 変数名や関数名の質を上げる
  14. | © 2024 Levtech Co., Ltd. 28 先日の t-wada さんの Twitter

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

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

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

    を明記する TODO、FIXME を残す コードのサンプル ※ あくまでサンプルです Why、Why not を残す 特に注力してほしい!!
  18. | © 2024 Levtech Co., Ltd. 32 • はじめに • 遡ること

    3 ヶ月前 • 命名的問題に向き合ってみる • まとめ アジェンダ
  19. | © 2024 Levtech Co., Ltd. 33 まとめ • 明らかに命名的問題 >

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