雑ノート(仮)

適当なメモ。

レガシーの意味とは?

レガシーという言葉の意味について、改めて確認しよう。

遺産のこと

いい意味でのレガシーはこれのみである。

東京2020レガシー 未来に何を残すのか byNHKスペシャル

オリンピックの勢いで出来たインフラや設備は、一般的にレガシーというらしい。

時代遅れのも

古いコンピューター、ガジェット等を指す。 あまりにも技術パラダイムが古いソフトウェア、ハードウェアもここに含まれる。

古い実装のこと

廃れてしまったが後方互換のために残しているAPI等のこと。 一般的に新規に何かを作る場合、代替するベターなAPIを使うべき。

Vector - 「レガシーメソッド」を持つ List インタフェースの、同期化され、サイズ変更可能な配列実装 by Collections Framework の概要の注釈

近い将来削除予定であり、非推奨のものも含まれる

テストのないコードのこと

テストがないコードはレガシーコードだ byレガシーコード改善ガイド 冒頭

広く知られた一文だが、実は煽り文句であり、本中で語られている意味とは少し違う。

正しく保守することが困難なシステムのこと

レガシーコード改善ガイドで語られているレガシーはこの意味になる。

  • 密結合な設計になっており、変更の影響が計り知れない
  • テストに非常に時間がかかり、コード修正のフィードバックが遅い

等。 前者はリファクタリングで、後者はテストの自動化で解決する。*1

*1:たとえリファクタリングが許されていなくても、どのように責務が混ざっているか、という視点でコードを読む必要はあるし、テストの自動化を実施していなくても、変更を高速に検証する方法を工夫することは大切だと思う。