技術的負債を記録する: ベストプラクティス
ソフトウェアの品質を向上させるために、テクニカルデットを効果的に記録する方法を学ぼう。
Laerte Xavier, João Eduardo Montandon, Marco Tulio Valente
― 1 分で読む
技術的負債って、開発者が長期的に見てベストじゃない選択をすぐにできるようにする概念だよね。これが後で修正が必要な問題を引き起こすことがあって、よく「負債」って呼ばれる。開発者は、この技術的負債の事例を文書化する必要に直面することが多いけど、主に2つの方法、コードコメントかトラッキングシステムでのイシュー作成に選ぶことができるんだ。
この記事では、開発者が技術的負債をどんな風に文書化しているかを探るよ。コードコメントとイシューの使い分けのガイドラインも紹介するね。
技術的負債の文書化の方法
コードコメント: 開発者はよくコードの中に直接コメントを残す。これには "TODO"、"FIXME"、"HACK" みたいな用語が含まれることがある。こういうコメントは、開発者やそのチームメイトに特定のコードのセクションを後で修正または改善する必要があることを思い出させる。
イシュー: 多くの開発者はトラッキングシステムでイシューを作成することを好む。これによって、他のチームメンバーと技術的負債について話し合える。彼らは、これらのイシューに "技術的負債" や "ワークアラウンド" みたいなラベルを使うことがある。
どちらの方法も使われているけど、どちらを選ぶべきかの明確な基準はあまりない。選択は多くの場合、特定の状況や関わっている開発者の個人的な好みに依存してる。
技術的負債を文書化する理由
技術的負債を文書化することは、いくつかの理由で重要だよ。修正が必要なことを思い出させてくれたり、チームが問題についてコミュニケーションを取れるようにしたり、コードの状態をみんなが把握できるようにする。適切な文書化は混乱を防ぎ、ソフトウェアの質を向上させる。
選択に影響を与える要因
開発者がコメントかイシューを選ぶときに影響を与えるいくつかの重要な要因を調査した結果:
コンテキスト: 開発者は特定のコードに関連する負債についての具体的な詳細を提供したいときにコメントを好むことが多い。コメントは、なぜ特定の決定がされたのかを説明するのに役立つから、他の人が理解しやすくなる。
優先度: 負債が低優先度と見なされると、開発者はコメントに傾くかも。緊急じゃない問題は、追跡が必要なイシューよりもコメントに文書化される方が良いと思ってる。
範囲: 特定のコードの一部分だけに影響を与えるローカライズされた問題は、コメントとして文書化されることが多い。一方、負債が複数のエリアに影響を及ぼす場合や、複数のチームメンバーの注意が必要な場合は、イシューの方がいい選択かも。
必要な労力: 開発者たちは、負債を修正するのがちょっとした作業で時間がかからない場合はコメントで文書化するのが適していると言ってた。でも、負債を解決するのにかなりの労力がかかるときは、イシューを開くことを選ぶみたい。
ディスカッションの必要性: チームメンバー間でのディスカッションが必要な場合は、イシューを作成した方がいい。これによって、共同で問題を解決したりアイデアを共有したりできる。イシューは進捗のトラッキングのためのプラットフォームも提供する。
可視性: 開発者は、より目に見える必要がある負債にはイシューを選ぶことが多い。イシューはバックログで追跡できるから、問題がコードコメントの中で埋もれることがない。
マネジメントの追跡: プロジェクト管理が技術的負債の範囲についての洞察を必要とする場合、イシューはコメントよりも追跡がしやすい。負債の数や状態を示せるから、マネージャーがリソースを効果的に割り当てるのが楽になる。
コメントを使うためのガイドライン
開発者からのフィードバックに基づいて、技術的負債を文書化するためにコメントを使うときのガイドラインを示すよ:
コンテキストを提供: コード内での選択について説明するためにコメントを使おう。これは、後でコードを再訪する人に役立つ。
低優先度: 緊急でないアイテムのためにコメントを取っておこう。これらは、今すぐにアクションが必要でない場合、将来的な参照のために記録される。
ローカル範囲: 負債が特定のエリアにローカライズされている場合は、コメントが適している。広範囲な注意を必要としないエッジケースやローカライズされた問題のためにコメントを使おう。
小さい修正: 修正が簡単な負債はコメントで文書化しよう。変更がすぐにできる場合は、コードに注記するのが理にかなうよ。
短期的な計画: 負債が近いうちに対処される可能性がある場合は、コメントが効果的かも。一時的な状況には正式なイシュー作成は必要ない。
頻繁な修正: 同じコードを定期的に扱う開発者には、コメントが負債のトラッキングにうまく機能するかも。彼らはいつも再訪してるからね。
イシューを使うためのガイドライン
イシューの方が適している状況について、開発者たちは以下の推奨を示したよ:
ディスカッションが必要: 負債が他の開発者からの意見を必要とする場合は、イシューを作成した方がいい。これにより、共同作業や集団の意見を得られる。
追跡が必要: 継続的に追跡する必要がある負債のためにはイシューを使おう。これによって、解決状況や進捗をモニタリングできる。
広範囲な問題: 負債が複数のファイルやエリアにまたがる場合は、イシューが好ましい。これによって、一つのローカルエリアで解決できない複雑な問題を文書化できる。
可視性が必要: 負債を将来的に行動が必要なことが強調されるべき場合は、イシューが関与する全員に可視性を提供することができる。
高優先度: 緊急で対処が必要な負債の場合は、イシューを作成するのが望ましい。これにより、迅速なアクションが必要なことが示される。
必要な労力: 負債を修正するのに多くの労力がかかる場合は、イシューが適切な選択だよ。これによって、タスクの複雑さについての期待が設定される。
新しい貢献者を引き込む: タスクが新しい貢献者に適している場合は、イシューを作成することでエントリーレベルのタスクとしてタグ付けできる。これにより、新人が簡単に貢献できる方法を見つけられるかも。
混合戦略
一部の開発者は、最良の実践が両方の戦略の組み合わせかもしれないと提案したよ。イシューに文書化しつつ、それをコメントで参照することで、ローカルなコンテキストと広範囲のディスカッション機能を組み合わせることができる。これによって、文書化が徹底され、技術的負債のすべての必要な側面をカバーできるようになる。
結論
ソフトウェア開発において、技術的負債を文書化することはコードの質を維持し、将来の作業を計画するために重要だよ。開発者はこの負債を文書化する方法についてそれぞれ異なる好みがあるけど、特定の状況を理解することで最適な方法を選びやすくなる。このガイドラインは、開発者がコメントやイシューを効果的に使う際の実用的な参考として役立つかも。
これらのガイドラインに従うことで、チームはコミュニケーションを改善し、重要な問題が解決されるようにして、プロジェクト全体の健康を維持できるよ。技術的負債はしばしば負担と見なされるけど、適切に文書化することでソフトウェア開発への影響を大幅に軽減できるんだ。
タイトル: Comments or Issues: Where to Document Technical Debt?
概要: Self-Admitted Technical Debt (SATD) is a form of Technical Debt where developers document the debt using source code comments (SATD-C) or issues (SATD-I). However, it is still unclear the circumstances that drive developers to choose one or another. In this paper, we survey authors of both types of debts using a large-scale dataset containing 74K SATD-C and 20K SATD-I instances, extracted from 190 GitHub projects. As a result, we provide 13 guidelines to support developers to decide when to use comments or issues to report Technical Debt.
著者: Laerte Xavier, João Eduardo Montandon, Marco Tulio Valente
最終更新: 2024-08-27 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2408.15109
ソースPDF: https://arxiv.org/pdf/2408.15109
ライセンス: https://creativecommons.org/licenses/by/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。