ユニット 3 / 12

コードの読み取り、説明、および新しいコード ベースとの互換性

利益:

  • AI を使用して外部コード ベースをレイヤーごとにマッピングし、機能をエンドツーエンドで追跡する機能
  • 複雑な機能を段階的に説明し、データ フローを監視する能力
  • AI の説明を仮説として表示し、コード内の重要な主張を検証する機能

開発者はコードを書くのではなく、コードを読み取ります。新しい仕事を始めたり、他の人が残したサービスを引き継いだり、オープンソース ライブラリに貢献したりするとき、最初のタスクは「ここで何が起こっているのか?」ということです。質問に対する答えを見つけることです。 AI を使用すると、この発見タスクを数週間ではなく数時間に短縮できますが、それは適切な質問と検証反射を使用した場合に限ります。

この単元では、AI を「コード ガイド」のように使用する方法を学びます。つまり、外部のコード ベースをマッピングし、複雑な関数を平易な言語に変換し、データ フローに従い、ライブラリの使用方法を理解します。ここでの黄金律は、AI の説明は仮説であるということです。コード自体でそれを確認します。

コードのアノテーションはなぜ強力だがリスクがあるのか​​?

LLM は、コードの一部を読み取り、「この関数はユーザーのセッション トークンを更新します」などの人間の言語に翻訳するのが非常に得意です。なぜなら、何百万もの同様の例からパターンを学習しているからです。これにより、特に長くネストされた関数の場合、時間を大幅に節約できます。

ここにリスクがあります。モデルは、コードが実際に何を行うかではなく、コードが何を行うように見えるかを伝える場合があります。変数名が isAdmin であっても内部のロジックが逆の場合、モデルはその名前を調べて間違った概要を抽出する可能性があります。したがって、その声明を重要な決定の基礎にする前に、関連する行で疑わしい動作を視覚的に確認する必要があります。説明により、適切な場所に移動します。コードが最終決定権を持っています。

注意: AI の「このコードは X を実行します」という概要だけを、セキュリティや資金の流れに関わる意思決定の証拠として考慮しないでください。概要は、どこを見るべきかを示す地図です。コードで確認を行います。

外部コードベースをマッピングする手順

  1. 最上位レベルから始めます。まず、フォルダー構造とエントリ ポイント (メイン、アプリケーションの起動、ホーム ルーター) を理解します。 AI に「このディレクトリ構造に基づくアプリケーションの層は何ですか?」と尋ねます。聞く。
  2. 機能をエンドツーエンドで追跡します。 「ユーザーがログインすると、どのファイルがどのような順序でアクティブ化されますか?」 — 単一のフローを観察することは、アーキテクチャ全体を読むよりも有益です。
  3. 用語をローカライズします。 AI にプロジェクト固有の概念 (「テナント」、「台帳」、「ジョブ ランナー」) を尋ね、コード内でそれらに相当する概念を見つけます。
  4. 複雑な関数を単純化しました。長い関数をステップごとに説明してから、コード内のそのステップにマークを付けます。
  5. 確認する。小さな変更を加えてテストを実行し、理解度をテストします。テストでは、あなたの理解が間違っているかどうかがすぐにわかります。

ミニケース3個

ケース 1 — 継承されたサービスは 2 日から 3 時間に短縮されました。ある開発者は、退職した同僚から 4,000 行の支払い調整サービスを引き継ぎました。 AI にモジュールを要約させ、支払いフローをエンドツーエンドで追跡させました。彼はコード内の 2 つの重要な機能を個人的に検証しました。従来の「ブラインドリーディング」では2日かかると推定されたこの発見は、検証済みのAI手法を使用すると約3時間で完了した。

ケース 2 — 誤解を招く名前の罠。 1 つの関数は validateAndSave と呼ばれていましたが、AI の概要では「最初に検証してから保存する」と記載されていました。開発者がコードに入ると、保存は検証の前に行われ、検証ではログにのみ書き込まれることがわかりました。これが実稼働環境におけるバグ チケットの実際の根本原因でした。コードに検証がなかった場合、誤った要約によってエラーが隠蔽されてしまいます。

ケース 3 — 新しいライブラリの学習が加速されました。チームは、馴染みのないメッセージ キュー ライブラリを統合しようとしていました。私は AI に「このライブラリにコンシューマを設定する方法、エラーが発生した場合の再試行方法」を尋ねました。彼らはお願いしてサンプルを作ってもらいました。次に、サンプルを公式ドキュメントと比較し、相違点 (古いバージョンの API) を修正しました。学習時間が半分に短縮されました。

4 つのコピー可能なテンプレート

コードベースのマッピング:

以下はプロジェクトのディレクトリ/ファイルのリストです。 1) アプリケーションのレイヤー (入力、ビジネス ロジック、データ アクセスなど) を抽出します。 2) 「{{example property}}」リクエストの考えられるファイル処理をリストします。 3) 不明な箇所には「要確認」としてマークを付けます。 {{ディレクトリリスト}}

機能の説明 (ステップバイステップ):

この関数を行グループに分割し、各グループが何を行うかを簡単なトルコ語で説明します。最後に、入力、出力、副作用 (データベース/ファイル/ネットワーク)、および考えられるエッジ ケースをリストします。不明な動作を別の「検証が必要」という見出しの下に集めてください。{{function}}

データフローの追跡:

値「{{variable/data}}」はどこから来て、どのような変換を経て、どこに書かれているのでしょうか?コード内の関数名を使用してフロー チェーンを作成します。関連コード: {{code_segments}}

ライブラリの使用方法を学習する:

{{ライブラリ}}で{{目的}}を作りたいと思っています。最小限の実用的な例を挙げてください。使用するすべての関数が実際にこのライブラリに属していることを確認してください。よくわからない場合は、「公式ドキュメントから確認する」にチェックを入れてください。バージョン: {{バージョン}}。

弱いプロンプト / 強いプロンプト

弱者: 「このコードを説明してください。」 (何を迷っていますか?どのレベルですか?何をしますか?)
Strong: 「この機能を引き継ぎ、その中の再試行ロジックを変更します。機能を段階的に説明します。特にエラーが発生した場合は、何回、どの間隔で再試行するかを明確に示します。不明な部分には「検証が必要」としてマークを付けます。[コード]。」

強力なバージョンでは、意図 (再試行ロジックを変更します) と焦点が与えられます。そのため、説明は一般的な概要ではなく、役立つガイドとなります。

クエスト

AIはうまくやる

必ずご確認ください

一般的なアーキテクチャの概要

レイヤーを削除する

実際の呼び出しシーケンス

複素関数

ステップバイステップの説明

逆ロジック、副作用

データストリーム

チェーンの製図

条件分岐、スキップされたパス

図書館の利用

サンプルの生成

APIの信頼性とバージョン

人間の理解に代わるものはない

AI の記述は学習の代わりにはなりません。それがスピードアップします。コードベースを真に「所有」するとは、コードベースのメンタル モデルを構築することを意味します。そのモデルは、コードを読み、小さな変更を加え、結果を確認するときにのみ適合します。メンターが「ここを見てください、これが重要です」と教えてくれるように AI を使用します。ただし、そこにある箇所は自分の目で読みましょう。

ヒント: 関数を理解したと思ったら、AI に「それを 1 つの文で要約してください」と依頼してください。次に、自分の文章と比較します。 2 つの文が矛盾する場合は、あなたかモデルが何かを見逃していることになり、それをコード内で解決します。

よくある間違い

  • 概要は証拠として考えてください。説明を確認せずにコードについて決定を下すことは、誤解を招く名前の罠に陥ることを意味します。
  • 大きすぎるピースを接着します。 2,000 行を一度に要約すると、表面的で間違いが発生しやすい結果が得られます。部分に分割します。
  • 目的を述べていない。 「何をするか」を述べないと、説明は一般的なものになり、あなたのビジネスに焦点を当てたものにはなりません。
  • ライブラリインスタンスを検証していません。モデルが古い API または存在しない API を呼び出す可能性があります。公式ドキュメントと比較してください。
  • すべての学びを放棄します。コードベースをまったく読まずに要約だけを扱うと、最初の本当の間違いで無力になります。

要約すると

AI は、外国のコード ベースを探索するための強力なガイドです。アーキテクチャをマッピングし、複雑な関数を簡素化し、データ フローを追跡し、ライブラリの使用法を教えます。しかし、すべての説明は仮説にすぎません。要点を明確にし、それを分解して、モデルが「検証する必要がある」としている (またはしていない) すべての重要なアサーションをコードで検証し、テストします。ガイドは AI です。地図を読み、責任を負うのはあなたです。

アプリケーションタスク

馴染みのないモジュール、または継承したばかりのモジュールを選択してください。まず、「コード ベース マッピング」テンプレートを使用して、フィーチャのレイヤーとファイル ジャーニーを抽出します。次に、その機能の最も重要な機能を、「機能説明」テンプレートを使用して段階的に説明します。最後に、モデルが「検証が必要」とマークした少なくとも 2 つのアサーションをコード内で個人的にチェックインし、それらが真であるか偽であるかを記録します。

チェックリスト

  • [ ] AI ステートメントを仮説として扱い、コードで検証します。
  • [ ] コードを説明しながら、プロンプトに目的と焦点を追加します。
  • [ ] 大きなコードベースをいくつかの部分に分けて要約します。
  • [ ] 私は、誤解を招く名前や逆論理のトラップがないか、オンラインで重要な主張をチェックしています。
  • [ ] ライブラリの例を公式ドキュメントおよびバージョンと比較します。
  • [ ] 私は AI を学習の代替としてではなく、学習を加速するためのガイドとして使用しています。